Hello community, here is the log from the commit of package gtk2 for openSUSE:Factory checked in at 2011-10-25 16:01:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gtk2 (Old) and /work/SRC/openSUSE:Factory/.gtk2.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "gtk2", Maintainer is "gnome-maintainers@suse.de" Changes: -------- --- /work/SRC/openSUSE:Factory/gtk2/gtk2.changes 2011-10-19 13:44:00.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.gtk2.new/gtk2.changes 2011-10-25 16:01:35.000000000 +0200 @@ -1,0 +2,6 @@ +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. + +------------------------------------------------------------------- New: ---- gtk2-window-dragging.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gtk2.spec ++++++ --- /var/tmp/diff_new_pack.gG5Z6f/_old 2011-10-25 16:01:46.000000000 +0200 +++ /var/tmp/diff_new_pack.gG5Z6f/_new 2011-10-25 16:01:46.000000000 +0200 @@ -34,6 +34,8 @@ 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 ++++++ gtk2-window-dragging.patch ++++++ 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: * -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org