mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Reduce the number of times the register loads
When a register is created an initial query is run and then the filter and sort item/reverse order is added and after each item the ledger is refreshed. By adding a parameter to the three main functions to toggle the refreshing, with a value of false at register creation, and moving the gnc_ledger_display_refresh command this can be reduced to 2 from 5. In the sort/filter dialogue the refresh parameter is TRUE allowing the changes to be seen immediately.
This commit is contained in:
parent
e2801fd937
commit
a639dd9236
@ -139,8 +139,8 @@ static gchar *gnc_plugin_page_register_get_filter (GncPluginPage *plugin_page);
|
||||
void gnc_plugin_page_register_set_filter (GncPluginPage *plugin_page, const gchar *filter);
|
||||
static void gnc_plugin_page_register_set_filter_tooltip (GncPluginPageRegister *page);
|
||||
|
||||
static void gnc_ppr_update_status_query (GncPluginPageRegister *page);
|
||||
static void gnc_ppr_update_date_query (GncPluginPageRegister *page);
|
||||
static void gnc_ppr_update_status_query (GncPluginPageRegister *page, gboolean refresh);
|
||||
static void gnc_ppr_update_date_query (GncPluginPageRegister *page, gboolean refresh);
|
||||
|
||||
/* Command callbacks */
|
||||
static void gnc_plugin_page_register_cmd_print_check (GtkAction *action, GncPluginPageRegister *plugin_page);
|
||||
@ -1155,7 +1155,6 @@ gnc_plugin_page_register_create_widget (GncPluginPage *plugin_page)
|
||||
reg = gnc_ledger_display_get_split_register(priv->ledger);
|
||||
gnc_split_register_config(reg, reg->type, reg->style,
|
||||
reg->use_double_line);
|
||||
gnc_ledger_display_refresh(priv->ledger);
|
||||
|
||||
gnc_plugin_page_register_ui_initial_state (page);
|
||||
gnc_plugin_page_register_ui_update (NULL, page);
|
||||
@ -1178,7 +1177,7 @@ gnc_plugin_page_register_create_widget (GncPluginPage *plugin_page)
|
||||
g_free(order);
|
||||
|
||||
priv->sd.reverse_order = gnc_plugin_page_register_get_sort_reversed(plugin_page);
|
||||
gnc_split_reg_set_sort_reversed(priv->gsr, priv->sd.reverse_order);
|
||||
gnc_split_reg_set_sort_reversed(priv->gsr, priv->sd.reverse_order, FALSE);
|
||||
if (priv->sd.reverse_order)
|
||||
priv->sd.save_order = TRUE;
|
||||
|
||||
@ -1261,8 +1260,11 @@ gnc_plugin_page_register_create_widget (GncPluginPage *plugin_page)
|
||||
}
|
||||
|
||||
/* Update Query with Filter Status and Dates */
|
||||
gnc_ppr_update_status_query (page);
|
||||
gnc_ppr_update_date_query(page);
|
||||
gnc_ppr_update_status_query (page, FALSE);
|
||||
gnc_ppr_update_date_query(page, FALSE);
|
||||
|
||||
/* Now do the refresh */
|
||||
gnc_ledger_display_refresh(priv->ledger);
|
||||
|
||||
// Set filter tooltip for summary bar
|
||||
gnc_plugin_page_register_set_filter_tooltip (page);
|
||||
@ -2248,7 +2250,7 @@ gnc_plugin_page_register_sort_response_cb (GtkDialog *dialog,
|
||||
if (response != GTK_RESPONSE_OK)
|
||||
{
|
||||
/* Restore the original sort order */
|
||||
gnc_split_reg_set_sort_reversed(priv->gsr, priv->sd.original_reverse_order);
|
||||
gnc_split_reg_set_sort_reversed(priv->gsr, priv->sd.original_reverse_order, TRUE);
|
||||
priv->sd.reverse_order = priv->sd.original_reverse_order;
|
||||
gnc_split_reg_set_sort_type(priv->gsr, priv->sd.original_sort_type);
|
||||
priv->sd.save_order = priv->sd.original_save_order;
|
||||
@ -2363,7 +2365,7 @@ gnc_plugin_page_register_sort_order_reverse_cb (GtkToggleButton *button,
|
||||
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
|
||||
|
||||
priv->sd.reverse_order = gtk_toggle_button_get_active(button);
|
||||
gnc_split_reg_set_sort_reversed(priv->gsr, priv->sd.reverse_order);
|
||||
gnc_split_reg_set_sort_reversed(priv->gsr, priv->sd.reverse_order, TRUE);
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
@ -2384,7 +2386,7 @@ gnc_plugin_page_register_sort_order_reverse_cb (GtkToggleButton *button,
|
||||
* associated with this filter dialog.
|
||||
*/
|
||||
static void
|
||||
gnc_ppr_update_status_query (GncPluginPageRegister *page)
|
||||
gnc_ppr_update_status_query (GncPluginPageRegister *page, gboolean refresh)
|
||||
{
|
||||
GncPluginPageRegisterPrivate *priv;
|
||||
GSList *param_list;
|
||||
@ -2414,7 +2416,8 @@ gnc_ppr_update_status_query (GncPluginPageRegister *page)
|
||||
// Set filter tooltip for summary bar
|
||||
gnc_plugin_page_register_set_filter_tooltip (page);
|
||||
|
||||
gnc_ledger_display_refresh (priv->ledger);
|
||||
if (refresh)
|
||||
gnc_ledger_display_refresh (priv->ledger);
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
@ -2432,7 +2435,7 @@ gnc_ppr_update_status_query (GncPluginPageRegister *page)
|
||||
* associated with this filter dialog.
|
||||
*/
|
||||
static void
|
||||
gnc_ppr_update_date_query (GncPluginPageRegister *page)
|
||||
gnc_ppr_update_date_query (GncPluginPageRegister *page, gboolean refresh)
|
||||
{
|
||||
GncPluginPageRegisterPrivate *priv;
|
||||
GSList *param_list;
|
||||
@ -2485,7 +2488,8 @@ gnc_ppr_update_date_query (GncPluginPageRegister *page)
|
||||
// Set filter tooltip for summary bar
|
||||
gnc_plugin_page_register_set_filter_tooltip (page);
|
||||
|
||||
gnc_ledger_display_refresh (priv->ledger);
|
||||
if (refresh)
|
||||
gnc_ledger_display_refresh (priv->ledger);
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
@ -2566,7 +2570,7 @@ gnc_plugin_page_register_filter_status_one_cb (GtkToggleButton *button,
|
||||
priv->fd.cleared_match |= value;
|
||||
else
|
||||
priv->fd.cleared_match &= ~value;
|
||||
gnc_ppr_update_status_query(page);
|
||||
gnc_ppr_update_status_query(page, TRUE);
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
@ -2605,7 +2609,7 @@ gnc_plugin_page_register_filter_status_all_cb (GtkButton *button,
|
||||
/* Set the requested status */
|
||||
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
|
||||
priv->fd.cleared_match = CLEARED_ALL;
|
||||
gnc_ppr_update_status_query(page);
|
||||
gnc_ppr_update_status_query(page, TRUE);
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
@ -2713,7 +2717,7 @@ gnc_plugin_page_register_filter_select_range_cb (GtkRadioButton *button,
|
||||
priv->fd.start_time = 0;
|
||||
priv->fd.end_time = 0;
|
||||
}
|
||||
gnc_ppr_update_date_query(page);
|
||||
gnc_ppr_update_date_query(page, TRUE);
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
@ -2741,7 +2745,7 @@ gnc_plugin_page_register_filter_days_changed_cb (GtkSpinButton *button,
|
||||
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
|
||||
|
||||
priv->fd.days = gtk_spin_button_get_value(GTK_SPIN_BUTTON(button));
|
||||
gnc_ppr_update_date_query(page);
|
||||
gnc_ppr_update_date_query(page, TRUE);
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
@ -2764,7 +2768,7 @@ gnc_plugin_page_register_filter_gde_changed_cb (GtkWidget *unused,
|
||||
|
||||
ENTER("(widget %s(%p), page %p)", gtk_buildable_get_name(GTK_BUILDABLE(unused)), unused, page);
|
||||
get_filter_times(page);
|
||||
gnc_ppr_update_date_query(page);
|
||||
gnc_ppr_update_date_query(page, TRUE);
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
@ -2811,7 +2815,7 @@ gnc_plugin_page_register_filter_start_cb (GtkWidget *radio,
|
||||
active = ( g_strcmp0(name, g_strdup("start_date_choose")) == 0 ? 1 : 0 );
|
||||
gtk_widget_set_sensitive(priv->fd.start_date, active);
|
||||
get_filter_times(page);
|
||||
gnc_ppr_update_date_query(page);
|
||||
gnc_ppr_update_date_query(page, TRUE);
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
@ -2858,7 +2862,7 @@ gnc_plugin_page_register_filter_end_cb (GtkWidget *radio,
|
||||
active = ( g_strcmp0(name, g_strdup("end_date_choose")) == 0 ? 1 : 0 );
|
||||
gtk_widget_set_sensitive(priv->fd.end_date, active);
|
||||
get_filter_times(page);
|
||||
gnc_ppr_update_date_query(page);
|
||||
gnc_ppr_update_date_query(page, TRUE);
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
@ -2922,12 +2926,12 @@ gnc_plugin_page_register_filter_response_cb (GtkDialog *dialog,
|
||||
{
|
||||
/* Remove the old status match */
|
||||
priv->fd.cleared_match = priv->fd.original_cleared_match;
|
||||
gnc_ppr_update_status_query(page);
|
||||
gnc_ppr_update_status_query(page, FALSE);
|
||||
priv->fd.start_time = priv->fd.original_start_time;
|
||||
priv->fd.end_time = priv->fd.original_end_time;
|
||||
priv->fd.days = priv->fd.original_days;
|
||||
priv->fd.save_filter = priv->fd.original_save_filter;
|
||||
gnc_ppr_update_date_query(page);
|
||||
gnc_ppr_update_date_query(page, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1961,7 +1961,7 @@ gnc_split_reg_sort_notes_cb(GtkWidget *w, gpointer data)
|
||||
|
||||
|
||||
void
|
||||
gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev)
|
||||
gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev, gboolean refresh)
|
||||
{
|
||||
/* Note: sort_reversed is the boolean opposite of sort_increasing
|
||||
* so when rev == true, we're sorting decreasing
|
||||
@ -1971,7 +1971,8 @@ gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev)
|
||||
Query *query = gnc_ledger_display_get_query( gsr->ledger );
|
||||
qof_query_set_sort_increasing (query, !rev, !rev, !rev);
|
||||
gsr->sort_rev = rev;
|
||||
gnc_ledger_display_refresh( gsr->ledger );
|
||||
if (refresh)
|
||||
gnc_ledger_display_refresh( gsr->ledger );
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -206,7 +206,7 @@ void gnc_split_reg_set_sort_type_force( GNCSplitReg *gsr, SortType t, gboolean f
|
||||
/**
|
||||
* Set/get sort order of register
|
||||
**/
|
||||
void gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev);
|
||||
void gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev, gboolean refresh);
|
||||
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user