Bug #610675: Re-apply r18918, but only the tooltip fixing.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@18933 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Christian Stimming
2010-03-19 17:50:16 +00:00
parent 07135180b7
commit 0fe240caac
+51 -2
View File
@@ -1844,14 +1844,40 @@ main_window_find_tab_items (GncMainWindow *window,
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 @@ main_window_update_page_name (GncPluginPage *page,
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 @@ main_window_update_page_name (GncPluginPage *page,
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_update_page_name (GncPluginPage *page,
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 @@ main_window_update_page_name (GncPluginPage *page,
/* 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");
}