From 0199fef5847fc60f5ed36e1dcf9cc4ed0717dedc Mon Sep 17 00:00:00 2001 From: Robert Fewell <14uBobIT@gmail.com> Date: Sun, 15 Jul 2018 16:38:29 +0100 Subject: [PATCH] Add the toolbar preference changes to window-reconcile. Fixes Bug 796739 - Toolbar buttons have no labels, part 3 of 3. --- gnucash/gnome/window-reconcile.c | 53 ++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/gnucash/gnome/window-reconcile.c b/gnucash/gnome/window-reconcile.c index 3836bfdf80..6d6f8b7082 100644 --- a/gnucash/gnome/window-reconcile.c +++ b/gnucash/gnome/window-reconcile.c @@ -81,6 +81,8 @@ struct _RecnWindow GtkUIManager *ui_merge; GtkActionGroup *action_group; + GtkWidget *dock; + GtkWidget *toolbar; GtkWidget *starting; /* The starting balance */ GtkWidget *ending; /* The ending balance */ @@ -1670,13 +1672,44 @@ recnWindow (GtkWidget *parent, Account *account) static void recnWindow_add_widget (GtkUIManager *merge, GtkWidget *widget, - GtkBox *dock) + RecnWindow *recnData) { - gtk_box_pack_start (GTK_BOX (dock), widget, FALSE, FALSE, 0); + + if (GTK_IS_TOOLBAR (widget)) + { + recnData->toolbar = widget; + + gtk_toolbar_set_style (GTK_TOOLBAR(widget), + gnc_prefs_get_int (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TOOLBAR_STYLE)); + + // prefs has only small and large icons so add 2 to get right enum + gtk_toolbar_set_icon_size (GTK_TOOLBAR(widget), + (gnc_prefs_get_int (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TOOLBAR_ICON_SIZE)) + 2); + } + + gtk_box_pack_start (GTK_BOX (recnData->dock), widget, FALSE, FALSE, 0); gtk_widget_show (widget); } +static void +recn_window_update_toolbar (gpointer prefs, gchar *pref, RecnWindow *recnData) +{ + GtkToolbar *tb; + gint selection; + + tb = GTK_TOOLBAR(recnData->toolbar); + + selection = gnc_prefs_get_int (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TOOLBAR_STYLE); + if (gtk_toolbar_get_style (tb) != selection) + gtk_toolbar_set_style (tb, selection); + + selection = gnc_prefs_get_int (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TOOLBAR_ICON_SIZE); + // prefs has only small and large icons so add 2 to get right enum + if (gtk_toolbar_get_icon_size (tb) != selection + 2) + gtk_toolbar_set_icon_size (tb, selection + 2); +} + /********************************************************************\ * recnWindowWithBalance * @@ -1743,8 +1776,9 @@ recnWindowWithBalance (Account *account, gnc_numeric new_ending, GError *error = NULL; recnData->ui_merge = gtk_ui_manager_new (); + recnData->dock = dock; g_signal_connect (recnData->ui_merge, "add_widget", - G_CALLBACK (recnWindow_add_widget), dock); + G_CALLBACK (recnWindow_add_widget), recnData); action_group = gtk_action_group_new ("ReconcileWindowActions"); recnData->action_group = action_group; @@ -1922,6 +1956,13 @@ recnWindowWithBalance (Account *account, gnc_numeric new_ending, recnRefresh (recnData); } + /* track toolbar preference changes */ + gnc_prefs_register_cb (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TOOLBAR_STYLE, + recn_window_update_toolbar, recnData); + + gnc_prefs_register_cb (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TOOLBAR_ICON_SIZE, + recn_window_update_toolbar, recnData); + /* Allow resize */ gtk_window_set_resizable(GTK_WINDOW(recnData->window), TRUE); gtk_widget_show_all(recnData->window); @@ -1993,6 +2034,12 @@ recn_destroy_cb (GtkWidget *w, gpointer data) if (recnData->delete_refresh) gnc_resume_gui_refresh (); + gnc_prefs_remove_cb_by_func (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TOOLBAR_STYLE, + recn_window_update_toolbar, recnData); + + gnc_prefs_remove_cb_by_func (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TOOLBAR_ICON_SIZE, + recn_window_update_toolbar, recnData); + g_free (recnData); }