source-dialog: change visible page by pointers
Using their string representations was slow, compare pointers which is fast.
This commit is contained in:
committed by
Erick Pérez Castellanos
parent
b8fea7f1d1
commit
0c47cda20c
+13
-10
@@ -33,10 +33,12 @@ typedef struct
|
|||||||
GtkWidget *default_check;
|
GtkWidget *default_check;
|
||||||
GtkWidget *edit_grid;
|
GtkWidget *edit_grid;
|
||||||
GtkWidget *headerbar;
|
GtkWidget *headerbar;
|
||||||
|
GtkWidget *main_scrolledwindow;
|
||||||
GtkWidget *name_entry;
|
GtkWidget *name_entry;
|
||||||
GtkWidget *notebook;
|
GtkWidget *notebook;
|
||||||
GtkWidget *remove_button;
|
GtkWidget *remove_button;
|
||||||
GtkWidget *stack;
|
GtkWidget *stack;
|
||||||
|
GtkWidget *web_source_grid;
|
||||||
|
|
||||||
/* notification */
|
/* notification */
|
||||||
GtkWidget *notification;
|
GtkWidget *notification;
|
||||||
@@ -346,9 +348,8 @@ back_button_clicked (GtkButton *button,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialogPrivate *priv = GCAL_SOURCE_DIALOG (user_data)->priv;
|
GcalSourceDialogPrivate *priv = GCAL_SOURCE_DIALOG (user_data)->priv;
|
||||||
const gchar *visible_child = gtk_stack_get_visible_child_name (GTK_STACK (priv->stack));
|
|
||||||
|
|
||||||
if (g_strcmp0 (visible_child, "edit") == 0)
|
if (gtk_stack_get_visible_child (GTK_STACK (priv->stack)) == priv->edit_grid)
|
||||||
{
|
{
|
||||||
// Save the source before leaving
|
// Save the source before leaving
|
||||||
gcal_manager_save_source (priv->manager, priv->source);
|
gcal_manager_save_source (priv->manager, priv->source);
|
||||||
@@ -819,12 +820,12 @@ stack_visible_child_name_changed (GObject *object,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialogPrivate *priv;
|
GcalSourceDialogPrivate *priv;
|
||||||
const gchar *visible_name;
|
GtkWidget *visible_child;
|
||||||
|
|
||||||
priv = GCAL_SOURCE_DIALOG (user_data)->priv;
|
priv = GCAL_SOURCE_DIALOG (user_data)->priv;
|
||||||
visible_name = gtk_stack_get_visible_child_name (GTK_STACK (object));
|
visible_child = gtk_stack_get_visible_child (GTK_STACK (object));
|
||||||
|
|
||||||
if (g_strcmp0 (visible_name, "main") == 0)
|
if (visible_child == priv->main_scrolledwindow)
|
||||||
{
|
{
|
||||||
gtk_header_bar_set_title (GTK_HEADER_BAR (priv->headerbar), _("Calendar Settings"));
|
gtk_header_bar_set_title (GTK_HEADER_BAR (priv->headerbar), _("Calendar Settings"));
|
||||||
gtk_header_bar_set_subtitle (GTK_HEADER_BAR (priv->headerbar), NULL);
|
gtk_header_bar_set_subtitle (GTK_HEADER_BAR (priv->headerbar), NULL);
|
||||||
@@ -840,7 +841,7 @@ stack_visible_child_name_changed (GObject *object,
|
|||||||
* source are updated, while indenpendent widgets
|
* source are updated, while indenpendent widgets
|
||||||
* are updated at #gcal_source_dialog_set_mode
|
* are updated at #gcal_source_dialog_set_mode
|
||||||
*/
|
*/
|
||||||
if (g_strcmp0 (visible_name, "edit") == 0 && priv->source != NULL)
|
if (visible_child == priv->edit_grid && priv->source != NULL)
|
||||||
{
|
{
|
||||||
ESource *default_source;
|
ESource *default_source;
|
||||||
gchar *parent_name;
|
gchar *parent_name;
|
||||||
@@ -1888,6 +1889,7 @@ gcal_source_dialog_class_init (GcalSourceDialogClass *klass)
|
|||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, google_stub_row);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, google_stub_row);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, headerbar);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, headerbar);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, location_dim_label);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, location_dim_label);
|
||||||
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, main_scrolledwindow);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, name_entry);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, name_entry);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, notification);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, notification);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, notification_label);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, notification_label);
|
||||||
@@ -1896,6 +1898,7 @@ gcal_source_dialog_class_init (GcalSourceDialogClass *klass)
|
|||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, remove_button);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, remove_button);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, settings_button);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, settings_button);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, stack);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, stack);
|
||||||
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, web_source_grid);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, web_sources_listbox);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, web_sources_listbox);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, web_sources_revealer);
|
gtk_widget_class_bind_template_child_private (widget_class, GcalSourceDialog, web_sources_revealer);
|
||||||
|
|
||||||
@@ -2217,14 +2220,14 @@ gcal_source_dialog_set_mode (GcalSourceDialog *dialog,
|
|||||||
case GCAL_SOURCE_DIALOG_MODE_CREATE:
|
case GCAL_SOURCE_DIALOG_MODE_CREATE:
|
||||||
gtk_header_bar_set_title (GTK_HEADER_BAR (priv->headerbar), _("Add Calendar"));
|
gtk_header_bar_set_title (GTK_HEADER_BAR (priv->headerbar), _("Add Calendar"));
|
||||||
gtk_header_bar_set_subtitle (GTK_HEADER_BAR (priv->headerbar), NULL);
|
gtk_header_bar_set_subtitle (GTK_HEADER_BAR (priv->headerbar), NULL);
|
||||||
gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), "edit");
|
gtk_stack_set_visible_child (GTK_STACK (priv->stack), priv->edit_grid);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GCAL_SOURCE_DIALOG_MODE_CREATE_WEB:
|
case GCAL_SOURCE_DIALOG_MODE_CREATE_WEB:
|
||||||
gtk_header_bar_set_title (GTK_HEADER_BAR (priv->headerbar), _("Add Calendar"));
|
gtk_header_bar_set_title (GTK_HEADER_BAR (priv->headerbar), _("Add Calendar"));
|
||||||
gtk_header_bar_set_subtitle (GTK_HEADER_BAR (priv->headerbar), NULL);
|
gtk_header_bar_set_subtitle (GTK_HEADER_BAR (priv->headerbar), NULL);
|
||||||
gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (priv->headerbar), FALSE);
|
gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (priv->headerbar), FALSE);
|
||||||
gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), "create");
|
gtk_stack_set_visible_child (GTK_STACK (priv->stack), priv->web_source_grid);
|
||||||
gtk_widget_set_visible (priv->add_button, TRUE);
|
gtk_widget_set_visible (priv->add_button, TRUE);
|
||||||
gtk_widget_set_visible (priv->cancel_button, TRUE);
|
gtk_widget_set_visible (priv->cancel_button, TRUE);
|
||||||
break;
|
break;
|
||||||
@@ -2237,7 +2240,7 @@ gcal_source_dialog_set_mode (GcalSourceDialog *dialog,
|
|||||||
G_BINDING_DEFAULT);
|
G_BINDING_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), "edit");
|
gtk_stack_set_visible_child (GTK_STACK (priv->stack), priv->edit_grid);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GCAL_SOURCE_DIALOG_MODE_NORMAL:
|
case GCAL_SOURCE_DIALOG_MODE_NORMAL:
|
||||||
@@ -2250,7 +2253,7 @@ gcal_source_dialog_set_mode (GcalSourceDialog *dialog,
|
|||||||
|
|
||||||
gtk_header_bar_set_title (GTK_HEADER_BAR (priv->headerbar), _("Calendar Settings"));
|
gtk_header_bar_set_title (GTK_HEADER_BAR (priv->headerbar), _("Calendar Settings"));
|
||||||
gtk_header_bar_set_subtitle (GTK_HEADER_BAR (priv->headerbar), NULL);
|
gtk_header_bar_set_subtitle (GTK_HEADER_BAR (priv->headerbar), NULL);
|
||||||
gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), "main");
|
gtk_stack_set_visible_child (GTK_STACK (priv->stack), priv->main_scrolledwindow);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user