diff --git a/gnucash/gnome-utils/gnc-main-window.c b/gnucash/gnome-utils/gnc-main-window.c index b77b56ad46..2a1558282d 100644 --- a/gnucash/gnome-utils/gnc-main-window.c +++ b/gnucash/gnome-utils/gnc-main-window.c @@ -2028,11 +2028,46 @@ gnc_main_window_update_tab_color (gpointer gsettings, gchar *pref, gpointer user } +/** Set the tab label ellipsize value. The special check for a zero + * value handles the case where a user hasn't set a tab width and + * the preference default isn't detected. + * + * @internal + * + * @param label GtkLabel for the tab. + * + * @param tab_width Tab width the user has set in preferences. + * + */ +static void +gnc_main_window_set_tab_ellipsize (GtkWidget *label, gint tab_width) +{ + const gchar *lab_text = gtk_label_get_text (GTK_LABEL(label)); + + if (tab_width != 0) + { + if (g_utf8_strlen (lab_text, -1) < tab_width) + { + gtk_label_set_width_chars (GTK_LABEL(label), strlen (lab_text)); + gtk_label_set_ellipsize (GTK_LABEL(label), PANGO_ELLIPSIZE_NONE); + } + else + { + gtk_label_set_width_chars (GTK_LABEL(label), tab_width); + gtk_label_set_ellipsize (GTK_LABEL(label), PANGO_ELLIPSIZE_MIDDLE); + } + } + else + { + gtk_label_set_width_chars (GTK_LABEL(label), 15); + gtk_label_set_ellipsize (GTK_LABEL(label), PANGO_ELLIPSIZE_NONE); + } +} + + /** Update the width of the label in the tab of a notebook page. This - * function adjusts both the width and the ellipsize mode so that the tab - * label looks correct. The special check for a zero value handles the - * case where a user hasn't set a tab width and the preference default isn't - * detected. + * function adjusts both the width and the ellipsize mode so that the + * tab label looks correct. * * @internal * @@ -2046,7 +2081,6 @@ gnc_main_window_update_tab_width_one_page (GncPluginPage *page, { gint *new_value = user_data; GtkWidget *label; - const gchar *lab_text; ENTER("page %p, visible %d", page, *new_value); label = g_object_get_data(G_OBJECT (page), PLUGIN_PAGE_TAB_LABEL); @@ -2055,23 +2089,7 @@ gnc_main_window_update_tab_width_one_page (GncPluginPage *page, LEAVE("no label"); return; } - - lab_text = gtk_label_get_text (GTK_LABEL(label)); - - if (*new_value != 0) - { - if (g_utf8_strlen (lab_text, -1) < *new_value) - gtk_label_set_width_chars (GTK_LABEL(label), strlen (lab_text)); - else - gtk_label_set_width_chars (GTK_LABEL(label), *new_value); - - gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_MIDDLE); - } - else - { - gtk_label_set_width_chars (GTK_LABEL(label), 15); - gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_NONE); - } + gnc_main_window_set_tab_ellipsize (label, *new_value); LEAVE(" "); } @@ -2940,15 +2958,8 @@ gnc_main_window_open_page (GncMainWindow *window, label = gtk_label_new (lab_text); g_object_set_data (G_OBJECT (page), PLUGIN_PAGE_TAB_LABEL, label); - if (width != 0) - { - if (g_utf8_strlen (lab_text, -1) < width) - gtk_label_set_width_chars (GTK_LABEL(label), strlen (lab_text)); - else - gtk_label_set_width_chars (GTK_LABEL(label), width); + gnc_main_window_set_tab_ellipsize (label, width); - gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_MIDDLE); - } gtk_widget_show (label); tab_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);