rpms/gtk2/devel panel-crash.patch,NONE,1.1 gtk2.spec,1.310,1.311

Matthias Clasen (mclasen) fedora-extras-commits at redhat.com
Wed Aug 13 04:56:50 UTC 2008


Author: mclasen

Update of /cvs/extras/rpms/gtk2/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv30455

Modified Files:
	gtk2.spec 
Added Files:
	panel-crash.patch 
Log Message:
fix sporadic panel crashes


panel-crash.patch:

--- NEW FILE panel-crash.patch ---
diff -up gtk+-2.13.6/gtk/gtkimagemenuitem.c.panel-crash gtk+-2.13.6/gtk/gtkimagemenuitem.c
--- gtk+-2.13.6/gtk/gtkimagemenuitem.c.panel-crash	2008-08-13 00:53:00.000000000 -0400
+++ gtk+-2.13.6/gtk/gtkimagemenuitem.c	2008-08-13 00:53:10.000000000 -0400
@@ -37,6 +37,7 @@
 #include "gtkprivate.h"
 #include "gtkalias.h"
 
+static void gtk_image_menu_item_destroy              (GtkObject        *object);
 static void gtk_image_menu_item_size_request         (GtkWidget        *widget,
                                                       GtkRequisition   *requisition);
 static void gtk_image_menu_item_size_allocate        (GtkWidget        *widget,
@@ -73,16 +74,14 @@ G_DEFINE_TYPE (GtkImageMenuItem, gtk_ima
 static void
 gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass)
 {
-  GObjectClass *gobject_class;
-  GtkWidgetClass *widget_class;
-  GtkMenuItemClass *menu_item_class;
-  GtkContainerClass *container_class;
-
-  gobject_class = (GObjectClass*) klass;
-  widget_class = (GtkWidgetClass*) klass;
-  menu_item_class = (GtkMenuItemClass*) klass;
-  container_class = (GtkContainerClass*) klass;
-  
+  GObjectClass *gobject_class = (GObjectClass*) klass;
+  GtkObjectClass *object_class = (GtkObjectClass*) klass;
+  GtkWidgetClass *widget_class = (GtkWidgetClass*) klass;
+  GtkMenuItemClass *menu_item_class = (GtkMenuItemClass*) klass;
+  GtkContainerClass *container_class = (GtkContainerClass*) klass;
+
+  object_class->destroy = gtk_image_menu_item_destroy;
+
   widget_class->screen_changed = gtk_image_menu_item_screen_changed;
   widget_class->size_request = gtk_image_menu_item_size_request;
   widget_class->size_allocate = gtk_image_menu_item_size_allocate;
@@ -173,6 +172,18 @@ show_image (GtkImageMenuItem *image_menu
 }
 
 static void
+gtk_image_menu_item_destroy (GtkObject *object)
+{
+  GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (object);
+
+  if (image_menu_item->image)
+    gtk_container_remove (GTK_CONTAINER (image_menu_item),
+                          image_menu_item->image);
+
+  GTK_OBJECT_CLASS (gtk_image_menu_item_parent_class)->destroy (object);
+}
+
+static void
 gtk_image_menu_item_toggle_size_request (GtkMenuItem *menu_item,
 					 gint        *requisition)
 {
@@ -239,8 +250,8 @@ gtk_image_menu_item_size_request (GtkWid
       child_width = child_requisition.width;
       child_height = child_requisition.height;
     }
-  
-  (* GTK_WIDGET_CLASS (gtk_image_menu_item_parent_class)->size_request) (widget, requisition);
+
+  GTK_WIDGET_CLASS (gtk_image_menu_item_parent_class)->size_request (widget, requisition);
 
   /* not done with height since that happens via the
    * toggle_size_request
@@ -270,8 +281,8 @@ gtk_image_menu_item_size_allocate (GtkWi
     pack_dir = GTK_PACK_DIRECTION_LTR;
   
   image_menu_item = GTK_IMAGE_MENU_ITEM (widget);  
-  
-  (* GTK_WIDGET_CLASS (gtk_image_menu_item_parent_class)->size_allocate) (widget, allocation);
+
+  GTK_WIDGET_CLASS (gtk_image_menu_item_parent_class)->size_allocate (widget, allocation);
 
   if (image_menu_item->image && show_image (image_menu_item))
     {
@@ -346,11 +357,11 @@ gtk_image_menu_item_forall (GtkContainer
                             gpointer        callback_data)
 {
   GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (container);
-  
-  (* GTK_CONTAINER_CLASS (gtk_image_menu_item_parent_class)->forall) (container,
-								      include_internals,
-								      callback,
-								      callback_data);
+
+  GTK_CONTAINER_CLASS (gtk_image_menu_item_parent_class)->forall (container,
+                                                                  include_internals,
+                                                                  callback,
+                                                                  callback_data);
 
   if (include_internals && image_menu_item->image)
     (* callback) (image_menu_item->image, callback_data);
@@ -555,7 +566,7 @@ gtk_image_menu_item_remove (GtkContainer
     }
   else
     {
-      (* GTK_CONTAINER_CLASS (gtk_image_menu_item_parent_class)->remove) (container, child);
+      GTK_CONTAINER_CLASS (gtk_image_menu_item_parent_class)->remove (container, child);
     }
 }
 


Index: gtk2.spec
===================================================================
RCS file: /cvs/extras/rpms/gtk2/devel/gtk2.spec,v
retrieving revision 1.310
retrieving revision 1.311
diff -u -r1.310 -r1.311
--- gtk2.spec	11 Aug 2008 21:14:08 -0000	1.310
+++ gtk2.spec	13 Aug 2008 04:56:19 -0000	1.311
@@ -16,7 +16,7 @@
 Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X
 Name: gtk2
 Version: %{base_version}
-Release: 3%{?dist}
+Release: 4%{?dist}
 License: LGPLv2+
 Group: System Environment/Libraries
 Source: http://download.gnome.org/sources/gtk+/2.13/gtk+-%{version}.tar.bz2
@@ -34,6 +34,8 @@
 Patch3: menu-breakage.patch
 # from upstream svn
 Patch4: evo-composer.patch
+# from upstream svn
+Patch5: panel-crash.patch
 
 BuildRequires: atk-devel >= %{atk_version}
 BuildRequires: pango-devel >= %{pango_version}
@@ -121,6 +123,7 @@
 %patch2 -p1 -b .workaround
 %patch3 -p1 -b .menu-breakage
 %patch4 -p1 -b .evo-composer
+%patch5 -p1 -b .panel-crash
 
 for i in config.guess config.sub ; do
   test -f %{_datadir}/libtool/$i && cp %{_datadir}/libtool/$i .
@@ -304,6 +307,9 @@
 %{_datadir}/gtk-2.0
 
 %changelog
+* Wed Aug 13 2008 Matthias Clasen <mclasen at redhat.com> - 2.13.6-4
+- Fix sporadic panel crashes
+
 * Mon Aug 11 2008 Matthias Clasen <mclasen at redhat.com> - 2.13.6-3
 - Fix evolution composer breakage
 




More information about the fedora-extras-commits mailing list