From 9de2e2ca805fe8a4c7d0070d1680c1637ff0b5b35a51f4c7e6b7a6a98f461e4c Mon Sep 17 00:00:00 2001 From: Vincent Untz Date: Fri, 21 Oct 2011 17:00:42 +0000 Subject: [PATCH] Accepting request 88798 from home:kkirill:branches:GNOME:Factory Add gtk2-window-dragging.patch: this adds support of window dragging from menubars/toolbars. Fix bgo#611313. OBS-URL: https://build.opensuse.org/request/show/88798 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gtk2?expand=0&rev=155 --- gtk2-window-dragging.patch | 124 +++++++++++++++++++++++++++++++++++++ gtk2.changes | 6 ++ gtk2.spec | 2 + 3 files changed, 132 insertions(+) create mode 100644 gtk2-window-dragging.patch diff --git a/gtk2-window-dragging.patch b/gtk2-window-dragging.patch new file mode 100644 index 0000000..e863aa1 --- /dev/null +++ b/gtk2-window-dragging.patch @@ -0,0 +1,124 @@ +diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c +index 4788590..cb94c64 100644 +--- a/gtk/gtkmenushell.c ++++ b/gtk/gtkmenushell.c +@@ -585,18 +585,45 @@ gtk_menu_shell_button_press (GtkWidget *widget, + + if (!menu_shell->active || !menu_shell->button) + { +- _gtk_menu_shell_activate (menu_shell); ++ gboolean initially_active = menu_shell->active; + + menu_shell->button = event->button; + +- if (menu_item && _gtk_menu_item_is_selectable (menu_item) && +- menu_item->parent == widget && +- menu_item != menu_shell->active_menu_item) ++ if (menu_item) + { +- if (GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement == GTK_TOP_BOTTOM) ++ if (_gtk_menu_item_is_selectable (menu_item) && ++ menu_item->parent == widget && ++ menu_item != menu_shell->active_menu_item) + { +- menu_shell->activate_time = event->time; +- gtk_menu_shell_select_item (menu_shell, menu_item); ++ _gtk_menu_shell_activate (menu_shell); ++ menu_shell->button = event->button; ++ ++ if (GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement == GTK_TOP_BOTTOM) ++ { ++ menu_shell->activate_time = event->time; ++ gtk_menu_shell_select_item (menu_shell, menu_item); ++ } ++ } ++ } ++ else ++ { ++ if (!initially_active) ++ { ++ gboolean window_drag = FALSE; ++ ++ gtk_widget_style_get (widget, ++ "window-dragging", &window_drag, ++ NULL); ++ ++ if (window_drag) ++ { ++ gtk_menu_shell_deactivate (menu_shell); ++ gtk_window_begin_move_drag (GTK_WINDOW (gtk_widget_get_toplevel (widget)), ++ event->button, ++ event->x_root, ++ event->y_root, ++ event->time); ++ } + } + } + } +diff --git a/gtk/gtktoolbar.c b/gtk/gtktoolbar.c +index 8f065a7..c72a09f 100644 +--- a/gtk/gtktoolbar.c ++++ b/gtk/gtktoolbar.c +@@ -2699,17 +2699,41 @@ static gboolean + gtk_toolbar_button_press (GtkWidget *toolbar, + GdkEventButton *event) + { ++ GtkWidget *window; ++ + if (event->button == 3) + { + gboolean return_value; +- ++ + g_signal_emit (toolbar, toolbar_signals[POPUP_CONTEXT_MENU], 0, + (int)event->x_root, (int)event->y_root, event->button, + &return_value); +- ++ + return return_value; + } +- ++ ++ window = gtk_widget_get_toplevel (toolbar); ++ ++ if (window) ++ { ++ gboolean window_drag = FALSE; ++ ++ gtk_widget_style_get (toolbar, ++ "window-dragging", &window_drag, ++ NULL); ++ ++ if (window_drag) ++ { ++ gtk_window_begin_move_drag (GTK_WINDOW (window), ++ event->button, ++ event->x_root, ++ event->y_root, ++ event->time); ++ ++ return TRUE; ++ } ++ } ++ + return FALSE; + } + +diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c +index 58ce2db..921c22a 100644 +--- a/gtk/gtkwidget.c ++++ b/gtk/gtkwidget.c +@@ -2443,6 +2443,13 @@ gtk_widget_class_init (GtkWidgetClass *klass) + 0.0, 1.0, 0.04, + GTK_PARAM_READABLE)); + ++ gtk_widget_class_install_style_property (klass, ++ g_param_spec_boolean ("window-dragging", ++ P_("Window dragging"), ++ P_("Window dragging"), ++ FALSE, ++ GTK_PARAM_READWRITE)); ++ + /** + * GtkWidget:draw-border: + * diff --git a/gtk2.changes b/gtk2.changes index 0cb0bca..9854f2b 100644 --- a/gtk2.changes +++ b/gtk2.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Oct 19 00:08:03 UTC 2011 - kirill.kirillov@gmail.com + +- Add gtk2-window-dragging.patch: this adds support of window + dragging from menubars/toolbars. Fix bgo#611313. + ------------------------------------------------------------------- Tue Oct 18 06:44:44 UTC 2011 - vuntz@opensuse.org diff --git a/gtk2.spec b/gtk2.spec index 0b43d5e..5fae27a 100644 --- a/gtk2.spec +++ b/gtk2.spec @@ -34,6 +34,8 @@ Source2: README.SuSE Source3: gtkrc Source4: baselibs.conf Source5: macros.gtk2 +# PATCH-FIX-UPSTREAM gtk2-window-dragging.patch bgo#611313 -- Taken from Fedora, to support window dragging from menubars/toolbars +Patch0: gtk2-window-dragging.patch # PATCH-FIX-OPENSUSE gtk64.patch sbrabec@novell.com - 64-bit dual install. See also the Fedora patch for a simpler way of doing this. Patch8: gtk64.patch # PATCH-FEATURE-UPSTREAM bugzilla-129753-gtk+-2.8.9-localize-font-style-name.diff bnc129753 bgo319484 mfabian@novell.com - Translate the font styles in the GUI