diff --git a/gtk2.spec b/gtk2.spec index 8e407e6..396f1d8 100644 --- a/gtk2.spec +++ b/gtk2.spec @@ -16,7 +16,7 @@ Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X Name: gtk2 Version: %{base_version} -Release: 1%{?dist} +Release: 2%{?dist} License: LGPLv2+ Group: System Environment/Libraries Source: http://download.gnome.org/sources/gtk+/2.13/gtk+-%{version}.tar.bz2 @@ -30,6 +30,8 @@ Patch1: gtk+-2.11.1-set-invisible-char-to-bullet.patch # a workaround for some brokenness in the flash plugin # see http://bugzilla.gnome.org/show_bug.cgi?id=463773 Patch2: workaround.patch +# from upstream svn +Patch3: menu-breakage.patch BuildRequires: atk-devel >= %{atk_version} BuildRequires: pango-devel >= %{pango_version} @@ -115,6 +117,7 @@ docs for the GTK+ widget toolkit. %patch0 -p1 -b .lib64 %patch1 -p1 -b .set-invisible-char-to-bullet %patch2 -p1 -b .workaround +%patch3 -p1 -b .menu-breakage for i in config.guess config.sub ; do test -f %{_datadir}/libtool/$i && cp %{_datadir}/libtool/$i . @@ -298,6 +301,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/gtk-2.0 %changelog +* Sat Aug 9 2008 Matthias Clasen - 2.13.6-2 +- Fix menu breakage + * Tue Aug 5 2008 Matthias Clasen - 2.13.6-1 - Update to 2.13.6 diff --git a/menu-breakage.patch b/menu-breakage.patch new file mode 100644 index 0000000..ac55492 --- /dev/null +++ b/menu-breakage.patch @@ -0,0 +1,54 @@ +diff -up gtk+-2.13.6/gtk/gtkmenu.c.menu-breakage gtk+-2.13.6/gtk/gtkmenu.c +--- gtk+-2.13.6/gtk/gtkmenu.c.menu-breakage 2008-08-09 23:07:35.000000000 -0400 ++++ gtk+-2.13.6/gtk/gtkmenu.c 2008-08-09 23:08:04.000000000 -0400 +@@ -3623,6 +3623,11 @@ gtk_menu_enter_notify (GtkWidget + GtkWidget *menu_item; + gboolean touchscreen_mode; + ++ if (event->mode == GDK_CROSSING_GTK_GRAB || ++ event->mode == GDK_CROSSING_GTK_UNGRAB || ++ event->mode == GDK_CROSSING_STATE_CHANGED) ++ return TRUE; ++ + g_object_get (gtk_widget_get_settings (widget), + "gtk-touchscreen-mode", &touchscreen_mode, + NULL); +@@ -3694,6 +3699,11 @@ gtk_menu_leave_notify (GtkWidget + GtkMenuItem *menu_item; + GtkWidget *event_widget; + ++ if (event->mode == GDK_CROSSING_GTK_GRAB || ++ event->mode == GDK_CROSSING_GTK_UNGRAB || ++ event->mode == GDK_CROSSING_STATE_CHANGED) ++ return TRUE; ++ + menu = GTK_MENU (widget); + menu_shell = GTK_MENU_SHELL (widget); + +diff -up gtk+-2.13.6/gtk/gtkmenushell.c.menu-breakage gtk+-2.13.6/gtk/gtkmenushell.c +--- gtk+-2.13.6/gtk/gtkmenushell.c.menu-breakage 2008-08-09 23:07:44.000000000 -0400 ++++ gtk+-2.13.6/gtk/gtkmenushell.c 2008-08-09 23:08:40.000000000 -0400 +@@ -802,6 +802,11 @@ gtk_menu_shell_enter_notify (GtkWidget + { + GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget); + ++ if (event->mode == GDK_CROSSING_GTK_GRAB || ++ event->mode == GDK_CROSSING_GTK_UNGRAB || ++ event->mode == GDK_CROSSING_STATE_CHANGED) ++ return TRUE; ++ + if (menu_shell->active) + { + GtkWidget *menu_item; +@@ -867,6 +872,11 @@ static gint + gtk_menu_shell_leave_notify (GtkWidget *widget, + GdkEventCrossing *event) + { ++ if (event->mode == GDK_CROSSING_GTK_GRAB || ++ event->mode == GDK_CROSSING_GTK_UNGRAB || ++ event->mode == GDK_CROSSING_STATE_CHANGED) ++ return TRUE; ++ + if (GTK_WIDGET_VISIBLE (widget)) + { + GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget);