Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.0:Ports
metacity
metacity-gtk-3.20.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File metacity-gtk-3.20.patch of Package metacity
--- a/configure.ac +++ b/configure.ac @@ -89,7 +89,7 @@ dnl Check for required packages dnl ************************************************************************** GLIB_REQUIRED_VERSION=2.44.0 -GTK_REQUIRED_VERSION=3.22.0 +GTK_REQUIRED_VERSION=3.20.0 PANGO_REQUIRED_VERSION=1.2.0 XCOMPOSITE_REQUIRED_VERSION=0.3 --- a/src/core/display.c +++ b/src/core/display.c @@ -1973,8 +1973,13 @@ event_callback (XEvent *event, if (meta_prefs_get_raise_on_click ()) meta_window_raise (window); +#if GTK_CHECK_VERSION (3, 22, 0) rect.x = event->xbutton.x; rect.y = event->xbutton.y; +#else + rect.x = event->xbutton.x_root; + rect.y = event->xbutton.y_root; +#endif rect.width = 0; rect.height = 0; --- a/src/core/keybindings.c +++ b/src/core/keybindings.c @@ -2803,6 +2803,7 @@ handle_activate_window_menu (MetaDisplay GdkRectangle rect; GdkEvent *gdk_event; +#if GTK_CHECK_VERSION (3, 22, 0) if (display->focus_window->frame) { rect.x = display->focus_window->rect.x; @@ -2816,6 +2817,15 @@ handle_activate_window_menu (MetaDisplay rect.width = display->focus_window->rect.width; rect.height = 0; +#else + meta_window_get_position (display->focus_window, &rect.x, &rect.y); + + if (meta_ui_get_direction() == META_UI_DIRECTION_RTL) + rect.x += display->focus_window->rect.width; + + rect.width = 0; + rect.height = 0; +#endif if (meta_window_is_client_decorated (display->focus_window)) { --- a/src/ui/fixedtip.c +++ b/src/ui/fixedtip.c @@ -36,12 +36,24 @@ get_monitor_geometry (gint root GdkRectangle *geometry) { GdkDisplay *display; +#if GTK_CHECK_VERSION (3, 22, 0) GdkMonitor *monitor; +#else + GdkScreen *screen; + int monitor; +#endif display = gdk_display_get_default (); +#if GTK_CHECK_VERSION (3, 22, 0) monitor = gdk_display_get_monitor_at_point (display, root_x, root_y); gdk_monitor_get_geometry (monitor, geometry); +#else + screen = gdk_display_get_default_screen (display); + monitor = gdk_screen_get_monitor_at_point (screen, root_x, root_y); + + gdk_screen_get_monitor_geometry (screen, monitor, geometry); +#endif } void --- a/src/ui/frames.c +++ b/src/ui/frames.c @@ -1663,8 +1663,13 @@ meta_frame_titlebar_event (MetaFrames { GdkRectangle rect; +#if GTK_CHECK_VERSION (3, 22, 0) rect.x = event->x; rect.y = event->y; +#else + rect.x = event->x_root; + rect.y = event->y_root; +#endif rect.width = 0; rect.height = 0; @@ -1834,6 +1839,15 @@ meta_frames_button_press_event (GtkWidge return FALSE; } +#if !GTK_CHECK_VERSION (3, 22, 0) + rect.x += event->x_root - event->x; + rect.y += rect.height + event->y_root - event->y; + + /* Align to the right end of the menu rectangle if RTL */ + if (meta_ui_get_direction() == META_UI_DIRECTION_RTL) + rect.x += rect.width; +#endif + frame->ignore_leave_notify = TRUE; meta_core_show_window_menu (frames->xdisplay, frame->xwindow, --- a/src/ui/menu.c +++ b/src/ui/menu.c @@ -444,11 +444,39 @@ meta_window_menu_new (MetaFrames return menu; } +#if !GTK_CHECK_VERSION (3, 22, 0) +static void +popup_position_func (GtkMenu *menu, + gint *x, + gint *y, + gboolean *push_in, + gpointer user_data) +{ + GtkRequisition req; + GdkPoint *pos; + + pos = user_data; + + gtk_widget_get_preferred_size (GTK_WIDGET (menu), &req, NULL); + + *x = pos->x; + *y = pos->y; + + if (meta_ui_get_direction() == META_UI_DIRECTION_RTL) + *x = MAX (0, *x - req.width); + + /* Ensure onscreen */ + *x = CLAMP (*x, 0, MAX (0, gdk_screen_width () - req.width)); + *y = CLAMP (*y, 0, MAX (0, gdk_screen_height () - req.height)); +} +#endif + void meta_window_menu_popup (MetaWindowMenu *menu, const GdkRectangle *rect, const GdkEvent *event) { +#if GTK_CHECK_VERSION (3, 22, 0) GdkEventAny *any; any = (GdkEventAny *) event; @@ -458,6 +486,33 @@ meta_window_menu_popup (MetaWindowMenu GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, event); +#else + GdkPoint *pt; + int button; + guint32 timestamp; + + pt = g_new (GdkPoint, 1); + + g_object_set_data_full (G_OBJECT (menu->menu), "destroy-point", pt, g_free); + + pt->x = rect->x; + pt->y = rect->y; + + if (event->type == GDK_KEY_PRESS) + { + button = 0; + timestamp = ((GdkEventKey *) event)->time; + } + else + { + button = ((GdkEventButton *) event)->button; + timestamp = ((GdkEventButton *) event)->time; + } + + gtk_menu_popup (GTK_MENU (menu->menu), NULL, NULL, + popup_position_func, pt, + button, timestamp); +#endif if (!gtk_widget_get_visible (menu->menu)) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor