Add the toolbar preference changes to window-reconcile.

Fixes Bug 796739 - Toolbar buttons have no labels, part 3 of 3.
This commit is contained in:
Robert Fewell
2018-07-15 16:38:29 +01:00
committed by John Ralls
parent a75eb4c8ec
commit 0199fef584

View File

@@ -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);
}