Sophie

Sophie

distrib > Mageia > 9 > armv7hl > media > core-release-src > by-pkgid > e749d6c8c79733c76b83159e293d7e64 > files > 9

mingw-gtk2-2.24.33-2.mga9.src.rpm

diff -rupN --no-dereference gtk+-2.24.33/gtk/gtkmenushell.c gtk+-2.24.33-new/gtk/gtkmenushell.c
--- gtk+-2.24.33/gtk/gtkmenushell.c	2020-12-18 06:29:40.000000000 +0100
+++ gtk+-2.24.33-new/gtk/gtkmenushell.c	2021-01-05 15:57:58.443717047 +0100
@@ -609,18 +609,45 @@ gtk_menu_shell_button_press (GtkWidget
 
   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 -rupN --no-dereference gtk+-2.24.33/gtk/gtktoolbar.c gtk+-2.24.33-new/gtk/gtktoolbar.c
--- gtk+-2.24.33/gtk/gtktoolbar.c	2020-12-18 06:29:40.000000000 +0100
+++ gtk+-2.24.33-new/gtk/gtktoolbar.c	2021-01-05 15:57:58.444717039 +0100
@@ -2701,6 +2701,8 @@ static gboolean
 gtk_toolbar_button_press (GtkWidget      *toolbar,
     			  GdkEventButton *event)
 {
+  GtkWidget *window;
+
   if (_gtk_button_event_triggers_context_menu (event))
     {
       gboolean return_value;
@@ -2711,7 +2713,29 @@ gtk_toolbar_button_press (GtkWidget
       
       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 -rupN --no-dereference gtk+-2.24.33/gtk/gtkwidget.c gtk+-2.24.33-new/gtk/gtkwidget.c
--- gtk+-2.24.33/gtk/gtkwidget.c	2020-12-18 06:29:40.000000000 +0100
+++ gtk+-2.24.33-new/gtk/gtkwidget.c	2021-01-05 15:57:58.445717030 +0100
@@ -2467,6 +2467,13 @@ gtk_widget_class_init (GtkWidgetClass *k
 							       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:
    *