r18933 - gnucash/trunk/src/gnome-utils - Bug #610675: Re-apply r18918, but only the tooltip fixing.

Christian Stimming cstim at code.gnucash.org
Fri Mar 19 13:50:16 EDT 2010


Author: cstim
Date: 2010-03-19 13:50:16 -0400 (Fri, 19 Mar 2010)
New Revision: 18933
Trac: http://svn.gnucash.org/trac/changeset/18933

Modified:
   gnucash/trunk/src/gnome-utils/gnc-main-window.c
Log:
Bug #610675: Re-apply r18918, but only the tooltip fixing.

Modified: gnucash/trunk/src/gnome-utils/gnc-main-window.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-main-window.c	2010-03-19 17:49:54 UTC (rev 18932)
+++ gnucash/trunk/src/gnome-utils/gnc-main-window.c	2010-03-19 17:50:16 UTC (rev 18933)
@@ -1844,14 +1844,40 @@
     return (*label_p && *entry_p);
 }
 
+static gboolean
+main_window_find_tab_event (GncMainWindow *window,
+                            GncPluginPage *page,
+                            GtkWidget **event_p)
+{
+    GncMainWindowPrivate *priv;
+    GtkWidget *event_box;
+
+    ENTER("window %p, page %p, event %p",
+          window, page, event_p);
+    priv = GNC_MAIN_WINDOW_GET_PRIVATE(window);
+    *event_p = NULL;
+
+    event_box = gtk_notebook_get_tab_label(GTK_NOTEBOOK(priv->notebook),
+                                           page->notebook_page);
+    if (GTK_IS_EVENT_BOX(event_box))
+    {
+        *event_p = event_box;
+        LEAVE("event %p", *event_p);
+        return (TRUE);
+    }
+
+    LEAVE("event %p", *event_p);
+    return (FALSE);
+}
+
 void
 main_window_update_page_name (GncPluginPage *page,
                               const gchar *name_in)
 {
     GncMainWindow *window;
     GncMainWindowPrivate *priv;
-    GtkWidget *label, *entry;
-    gchar *name;
+    GtkWidget *label, *entry, *event_box;
+    gchar *name, *old_page_name, *old_page_long_name;
 
     ENTER(" ");
 
@@ -1861,6 +1887,7 @@
         return;
     }
     name = g_strstrip(g_strdup(name_in));
+
     /* Optimization, if the name hasn't changed, don't update X. */
     if (*name == '\0' || 0 == strcmp(name, gnc_plugin_page_get_page_name(page)))
     {
@@ -1869,6 +1896,9 @@
         return;
     }
 
+    old_page_name = g_strdup( gnc_plugin_page_get_page_name(page));
+    old_page_long_name = g_strdup( gnc_plugin_page_get_page_long_name(page));
+
     /* Update the plugin */
     window = GNC_MAIN_WINDOW(page->window);
     priv = GNC_MAIN_WINDOW_GET_PRIVATE(window);
@@ -1878,6 +1908,23 @@
     main_window_find_tab_items(window, page, &label, &entry);
     gtk_label_set_text(GTK_LABEL(label), name);
 
+    /* Update Tooltip on notebook Tab */
+    main_window_find_tab_event(window, page, &event_box);
+
+    if (g_strrstr(old_page_long_name, old_page_name) != NULL)
+    {
+        gchar *new_page_long_name;
+        gint string_position;
+
+        string_position = strlen(old_page_long_name) - strlen(old_page_name);
+        new_page_long_name = g_strconcat(g_strndup(old_page_long_name, string_position), name, NULL);
+
+        gnc_plugin_page_set_page_long_name(page, new_page_long_name);
+        gtk_tooltips_set_tip(GTK_TOOLTIPS(tips), event_box, new_page_long_name, NULL);
+
+        g_free(new_page_long_name);
+    }
+
     /* Update the notebook menu */
     label = gtk_notebook_get_menu_label (GTK_NOTEBOOK(priv->notebook),
                                          page->notebook_page);
@@ -1885,6 +1932,8 @@
 
     /* Force an update of the window title */
     gnc_main_window_update_title(window);
+    g_free(old_page_long_name);
+    g_free(old_page_name);
     g_free(name);
     LEAVE("done");
 }



More information about the gnucash-changes mailing list