diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2013-06-01 21:10:16 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2013-06-01 21:10:16 +0800 |
commit | 6477dd65708b286001b487ca89d4d5066a25bbfd (patch) | |
tree | 267f6fff036d60d4d3d5376ccac66bfc47e12a3d | |
parent | 815c8776bbeee8e937db73c2006846ab9606ffb0 (diff) | |
download | gsoc2013-evolution-6477dd65708b286001b487ca89d4d5066a25bbfd.tar gsoc2013-evolution-6477dd65708b286001b487ca89d4d5066a25bbfd.tar.gz gsoc2013-evolution-6477dd65708b286001b487ca89d4d5066a25bbfd.tar.bz2 gsoc2013-evolution-6477dd65708b286001b487ca89d4d5066a25bbfd.tar.lz gsoc2013-evolution-6477dd65708b286001b487ca89d4d5066a25bbfd.tar.xz gsoc2013-evolution-6477dd65708b286001b487ca89d4d5066a25bbfd.tar.zst gsoc2013-evolution-6477dd65708b286001b487ca89d4d5066a25bbfd.zip |
Add a boolean return to e_cal_model_add_client().
The function now returns TRUE if the ECalClient was actually added
to the model, or FALSE if the model already had the ECalClient.
Use this to avoid an unnecessary gnome_calendar_update_query() call
in cal_shell_view_selector_client_added_cb().
-rw-r--r-- | calendar/gui/e-cal-model.c | 26 | ||||
-rw-r--r-- | calendar/gui/e-cal-model.h | 2 | ||||
-rw-r--r-- | modules/calendar/e-cal-shell-view-private.c | 5 |
3 files changed, 22 insertions, 11 deletions
diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c index efe1b61897..b74485b28a 100644 --- a/calendar/gui/e-cal-model.c +++ b/calendar/gui/e-cal-model.c @@ -159,7 +159,7 @@ static gchar *ecm_value_to_string (ETableModel *etm, gint col, gconstpointer val static const gchar *ecm_get_color_for_component (ECalModel *model, ECalModelComponent *comp_data); -static void add_new_client (ECalModel *model, ECalClient *client, gboolean do_query); +static gboolean add_new_client (ECalModel *model, ECalClient *client, gboolean do_query); static void remove_client_objects (ECalModel *model, ClientData *client_data); static void remove_client (ECalModel *model, ClientData *client_data); static void redo_queries (ECalModel *model); @@ -3462,7 +3462,7 @@ e_cal_model_update_status_message (ECalModel *model, g_signal_emit (model, signals[STATUS_MESSAGE], 0, message, percent); } -static void +static gboolean add_new_client (ECalModel *model, ECalClient *client, gboolean do_query) @@ -3492,19 +3492,31 @@ add_new_client (ECalModel *model, update_e_cal_view_for_client (model, client_data); client_data_unref (client_data); + + return update_view; } /** - * e_cal_model_add_client + * e_cal_model_add_client: + * @model: an #ECalModel + * @client: an #ECalClient + * + * Adds @client to @model and creates an internal #ECalClientView for it. + * + * If @model already has @client from a previous e_cal_model_add_client() + * call (in other words, excluding e_cal_model_set_default_client()), then + * the function does nothing and returns %FALSE. + * + * Returns: %TRUE if @client was added, %FALSE if @model already had it */ -void +gboolean e_cal_model_add_client (ECalModel *model, ECalClient *client) { - g_return_if_fail (E_IS_CAL_MODEL (model)); - g_return_if_fail (E_IS_CAL_CLIENT (client)); + g_return_val_if_fail (E_IS_CAL_MODEL (model), FALSE); + g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE); - add_new_client (model, client, TRUE); + return add_new_client (model, client, TRUE); } static void diff --git a/calendar/gui/e-cal-model.h b/calendar/gui/e-cal-model.h index 4e189ab186..407195117a 100644 --- a/calendar/gui/e-cal-model.h +++ b/calendar/gui/e-cal-model.h @@ -254,7 +254,7 @@ ECalClient * e_cal_model_ref_default_client (ECalModel *model); void e_cal_model_set_default_client (ECalModel *model, ECalClient *client); GList * e_cal_model_list_clients (ECalModel *model); -void e_cal_model_add_client (ECalModel *model, +gboolean e_cal_model_add_client (ECalModel *model, ECalClient *cal_client); void e_cal_model_remove_client (ECalModel *model, ECalClient *cal_client); diff --git a/modules/calendar/e-cal-shell-view-private.c b/modules/calendar/e-cal-shell-view-private.c index a03da0463f..94176c31f3 100644 --- a/modules/calendar/e-cal-shell-view-private.c +++ b/modules/calendar/e-cal-shell-view-private.c @@ -335,9 +335,8 @@ cal_shell_view_selector_client_added_cb (ECalShellView *cal_shell_view, calendar = e_cal_shell_content_get_calendar (cal_shell_content); model = gnome_calendar_get_model (calendar); - e_cal_model_add_client (model, client); - - gnome_calendar_update_query (calendar); + if (e_cal_model_add_client (model, client)) + gnome_calendar_update_query (calendar); } static void |