Accepting request 89032 from GNOME:Factory
Add gtk2-window-dragging.patch: this adds support of window dragging from menubars/toolbars. Fix bgo#611313. (forwarded request 88798 from kkirill) OBS-URL: https://build.opensuse.org/request/show/89032 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gtk2?expand=0&rev=115
This commit is contained in:
commit
a4b1c115f8
124
gtk2-window-dragging.patch
Normal file
124
gtk2-window-dragging.patch
Normal file
@ -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:
|
||||
*
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user