Hi,

upstream just informed me that this bug has been fixed in SVN revision
9452 in 2008-07-16 with the following patch:

Index: base/gpe-calendar/ChangeLog
===================================================================
--- base/gpe-calendar/ChangeLog (revision 9451)
+++ base/gpe-calendar/ChangeLog (revision 9452)
@@ -1,3 +1,10 @@
+2008-07-15  Graham Cobb  <g+...@cobb.uk.net>
+
+       * main.c (event_list_consider): Fix bug 70: do not manipulate 
event_list_container
+       when creating/destroying event_list and switching to/from event_view if 
the
+       container does not exist (e.g. no sidebar).  Make event_list_hidden 
into a true 
+       counter: incremented if either the sidebar is disabled or the event 
list view is displayed.
+
 2008-07-12  Graham Cobb  <g+...@cobb.uk.net>
 
        * main.c (main): Initialise categories library before processing command
Index: base/gpe-calendar/main.c
===================================================================
--- base/gpe-calendar/main.c    (revision 9451)
+++ base/gpe-calendar/main.c    (revision 9452)
@@ -148,8 +148,8 @@
 static GtkContainer *calendars_container;
 static GtkTreeView *calendars;
 static gboolean event_list_disabled;
-static int event_list_hidden;
-static GtkContainer *event_list_container;
+static int event_list_hidden = 1; // Initially hidden because no sidebar
+static GtkContainer *event_list_container = NULL;
 static EventList *event_list;
 
 static int main_toolbar_width;
@@ -970,10 +970,10 @@
        /* Already destroyed, bye.  */
        return FALSE;
 
-      gtk_container_remove (event_list_container,
-                           GTK_BIN (event_list_container)->child);
+      g_assert(event_list_container);
+      gtk_widget_destroy(GTK_WIDGET(event_list)); // Automatically removes it 
from event_list_container
       event_list = NULL;
-      gtk_widget_hide (GTK_WIDGET (event_list_container));
+      if (event_list_container) gtk_widget_hide (GTK_WIDGET 
(event_list_container));
 
       return FALSE;
     }
@@ -984,6 +984,7 @@
        /* Already enabled, bye.  */
        return TRUE;
 
+      g_assert(event_list_container);
       gtk_widget_show (GTK_WIDGET (event_list_container));
 
       event_list = EVENT_LIST (event_list_create (event_db));
@@ -1035,6 +1036,8 @@
                            GTK_BIN (sidebar_container)->child);
       gtk_widget_hide (GTK_WIDGET (sidebar_container));
 
+      event_list_hidden ++;
+
       calendar_consider ();
       calendars_consider ();
       event_list_consider ();
@@ -1093,6 +1096,8 @@
       event_list_container = GTK_CONTAINER (f);
       gtk_paned_pack2 (pane2, GTK_WIDGET (f), TRUE, TRUE);
 
+      event_list_hidden --;
+
       event_list_consider ();
 
       return TRUE;
@@ -1177,11 +1182,15 @@
       if (IS_EVENT_LIST (current_view))
         {
           event_list_hidden --;
-          event_list = EVENT_LIST (current_view);
-          gtk_widget_reparent (GTK_WIDGET (event_list),
-                       GTK_WIDGET (event_list_container));
-          event_list_set_period_box_visible (event_list, FALSE);
-          gtk_widget_show (GTK_WIDGET (event_list_container));
+         if (!event_list_hidden) {
+           event_list = EVENT_LIST (current_view);
+           gtk_widget_reparent (GTK_WIDGET (event_list),
+                                GTK_WIDGET (event_list_container));
+           event_list_set_period_box_visible (event_list, FALSE);
+           gtk_widget_show (GTK_WIDGET (event_list_container));
+         }
+         else
+           gtk_container_remove (current_view_container, current_view);
         }
       else
         gtk_container_remove (current_view_container, current_view);




best regards,
Timo Lindfors





-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to