AUDIT: r17588 - gnucash/trunk/src/gnome-utils - GNCDateEdit: Eliminate the need to click the button twice to pop the calendar down in some cases.

Charles Day cedayiv at cvs.gnucash.org
Mon Sep 22 17:10:31 EDT 2008


Author: cedayiv
Date: 2008-09-22 17:10:30 -0400 (Mon, 22 Sep 2008)
New Revision: 17588
Trac: http://svn.gnucash.org/trac/changeset/17588

Modified:
   gnucash/trunk/src/gnome-utils/gnc-date-edit.c
Log:
GNCDateEdit: Eliminate the need to click the button twice to pop the calendar down in some cases.
BP


Modified: gnucash/trunk/src/gnome-utils/gnc-date-edit.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-date-edit.c	2008-09-21 19:29:14 UTC (rev 17587)
+++ gnucash/trunk/src/gnome-utils/gnc-date-edit.c	2008-09-22 21:10:30 UTC (rev 17588)
@@ -315,6 +315,7 @@
                              GDK_CURRENT_TIME, TRUE))
   {
     gtk_widget_hide (gde->cal_popup);
+    LEAVE("Failed to grab window");
     return;
   }
 
@@ -332,14 +333,22 @@
   GNCDateEdit *gde     = GNC_DATE_EDIT(data);
   GtkWidget   *ewidget = gtk_get_event_widget ((GdkEvent *)event);
 
+  ENTER("widget=%p, ewidget=%p, event=%p, gde=%p", widget, ewidget, event, gde);
+
   /* While popped up, ignore presses outside the popup window. */
   if (ewidget == gde->cal_popup)
+  {
+    LEAVE("Press on calendar. Ignoring.");
     return TRUE;
+  }
 
   /* If the press isn't to make the popup appear, just propagate it. */
   if (ewidget != gde->date_button ||
       gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gde->date_button)))
+  {
+    LEAVE("Press, not on popup button, or while popup is raised.");
     return FALSE;
+  }
 
   if (!GTK_WIDGET_HAS_FOCUS (gde->date_button))
     gtk_widget_grab_focus (gde->date_button);
@@ -350,6 +359,7 @@
 
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gde->date_button), TRUE);
 
+  LEAVE("Popup in progress.");
   return TRUE;
 }
 
@@ -360,9 +370,10 @@
 {
   GNCDateEdit *gde     = GNC_DATE_EDIT(data);
   GtkWidget   *ewidget = gtk_get_event_widget ((GdkEvent *)event);
-
   gboolean popup_in_progress = FALSE;
 
+  ENTER("widget=%p, ewidget=%p, event=%p, gde=%p", widget, ewidget, event, gde);
+
   if (gde->popup_in_progress)
   {
     popup_in_progress = TRUE;
@@ -371,7 +382,10 @@
 
   /* Propagate releases on the calendar. */
   if (ewidget == gde->calendar)
+  {
+    LEAVE("Button release on calendar.");
     return FALSE;
+  }
 
   if (ewidget == gde->date_button)
   {
@@ -380,14 +394,17 @@
         gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gde->date_button)))
     {
       gnc_date_edit_popdown (gde);
+      LEAVE("Release on button, not in progress. Popped down.");
       return TRUE;
     }
 
+    LEAVE("Button release on button. Allowing.");
     return FALSE;
   }
 
   /* Pop down on a release anywhere else. */
   gnc_date_edit_popdown (gde);
+  LEAVE("Release not on button or calendar. Popping down.");
   return TRUE;
 }
 
@@ -874,10 +891,12 @@
                   | GTK_CALENDAR_SHOW_HEADING
                   | ((gde->flags & GNC_DATE_EDIT_WEEK_STARTS_ON_MONDAY)
                      ? GTK_CALENDAR_WEEK_START_MONDAY : 0)));
-	g_signal_connect (G_OBJECT (gde->calendar), "day_selected",
+	g_signal_connect (gde->calendar, "button-release-event",
+			  G_CALLBACK(gnc_date_edit_button_released), gde);
+	g_signal_connect (G_OBJECT (gde->calendar), "day-selected",
 			  G_CALLBACK  (day_selected), gde);
 	g_signal_connect (G_OBJECT (gde->calendar),
-                            "day_selected_double_click",
+                            "day-selected-double-click",
 			  G_CALLBACK  (day_selected_double_click), gde);
 	gtk_container_add (GTK_CONTAINER (frame), gde->calendar);
         gtk_widget_show (GTK_WIDGET(gde->calendar));



More information about the gnucash-changes mailing list