Hello community,

here is the log from the commit of package gtk2 for openSUSE:12.1 checked in at 
2011-10-25 16:01:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.1/gtk2 (Old)
 and      /work/SRC/openSUSE:12.1/.gtk2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gtk2", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:12.1/gtk2/gtk2.changes   2011-10-24 12:48:42.000000000 
+0200
+++ /work/SRC/openSUSE:12.1/.gtk2.new/gtk2.changes      2011-10-25 
16:01:46.000000000 +0200
@@ -1,0 +2,6 @@
+Wed Oct 19 00:08:03 UTC 2011 - [email protected]
+
+- 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.uZrszL/_old  2011-10-25 16:01:58.000000000 +0200
+++ /var/tmp/diff_new_pack.uZrszL/_new  2011-10-25 16:01:58.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 [email protected] - 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 
[email protected] - 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to