diff options
-rw-r--r-- | gtk/gtkcolumnview.c | 2 | ||||
-rw-r--r-- | gtk/gtkgridview.c | 22 | ||||
-rw-r--r-- | gtk/gtklistitemmanager.c | 30 | ||||
-rw-r--r-- | gtk/gtklistitemmanagerprivate.h | 6 | ||||
-rw-r--r-- | gtk/gtklistview.c | 20 | ||||
-rw-r--r-- | gtk/gtklistviewprivate.h | 1 |
6 files changed, 37 insertions, 44 deletions
diff --git a/gtk/gtkcolumnview.c b/gtk/gtkcolumnview.c index 6f6ef5c7d7..c5eb91a364 100644 --- a/gtk/gtkcolumnview.c +++ b/gtk/gtkcolumnview.c @@ -146,6 +146,8 @@ gtk_column_list_view_create_list_widget (GtkListBase *base) "row", GTK_ACCESSIBLE_ROLE_ROW); + gtk_list_item_widget_set_single_click_activate (GTK_LIST_ITEM_WIDGET (result), self->single_click_activate); + return GTK_LIST_ITEM_BASE (result); } diff --git a/gtk/gtkgridview.c b/gtk/gtkgridview.c index b03076bb8f..eb261b8a81 100644 --- a/gtk/gtkgridview.c +++ b/gtk/gtkgridview.c @@ -90,6 +90,7 @@ struct _GtkGridView GtkListItemManager *item_manager; guint min_columns; guint max_columns; + gboolean single_click_activate; /* set in size_allocate */ guint n_columns; double column_width; @@ -266,6 +267,8 @@ gtk_grid_view_create_list_widget (GtkListBase *base) "child", GTK_ACCESSIBLE_ROLE_GRID_CELL); + gtk_list_item_widget_set_single_click_activate (GTK_LIST_ITEM_WIDGET (result), self->single_click_activate); + return GTK_LIST_ITEM_BASE (result); } @@ -890,7 +893,7 @@ gtk_grid_view_get_property (GObject *object, break; case PROP_SINGLE_CLICK_ACTIVATE: - g_value_set_boolean (value, gtk_list_item_manager_get_single_click_activate (self->item_manager)); + g_value_set_boolean (value, self->single_click_activate); break; case PROP_ENABLE_RUBBERBAND: @@ -1330,12 +1333,23 @@ void gtk_grid_view_set_single_click_activate (GtkGridView *self, gboolean single_click_activate) { + GtkListTile *tile; + g_return_if_fail (GTK_IS_GRID_VIEW (self)); - if (single_click_activate == gtk_list_item_manager_get_single_click_activate (self->item_manager)) + if (single_click_activate == self->single_click_activate) return; - gtk_list_item_manager_set_single_click_activate (self->item_manager, single_click_activate); + self->single_click_activate = single_click_activate; + + for (tile = gtk_list_item_manager_get_first (self->item_manager); + tile != NULL; + tile = gtk_rb_tree_node_get_next (tile)) + { + if (tile->widget) + gtk_list_item_widget_set_single_click_activate (GTK_LIST_ITEM_WIDGET (tile->widget), single_click_activate); + } + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SINGLE_CLICK_ACTIVATE]); } @@ -1354,7 +1368,7 @@ gtk_grid_view_get_single_click_activate (GtkGridView *self) { g_return_val_if_fail (GTK_IS_GRID_VIEW (self), FALSE); - return gtk_list_item_manager_get_single_click_activate (self->item_manager); + return self->single_click_activate; } /** diff --git a/gtk/gtklistitemmanager.c b/gtk/gtklistitemmanager.c index 2d83b24b9a..cb0d070960 100644 --- a/gtk/gtklistitemmanager.c +++ b/gtk/gtklistitemmanager.c @@ -32,7 +32,6 @@ struct _GtkListItemManager GtkWidget *widget; GtkSelectionModel *model; GtkListItemFactory *factory; - gboolean single_click_activate; GtkRbTree *items; GSList *trackers; @@ -1197,8 +1196,6 @@ gtk_list_item_manager_acquire_list_item (GtkListItemManager *self, result = self->create_widget (self->widget); - gtk_list_item_widget_set_single_click_activate (GTK_LIST_ITEM_WIDGET (result), self->single_click_activate); - item = g_list_model_get_item (G_LIST_MODEL (self->model), position); selected = gtk_selection_model_is_selected (self->model, position); gtk_list_item_base_update (result, position, item, selected); @@ -1348,33 +1345,6 @@ gtk_list_item_manager_release_list_item (GtkListItemManager *self, gtk_widget_unparent (item); } -void -gtk_list_item_manager_set_single_click_activate (GtkListItemManager *self, - gboolean single_click_activate) -{ - GtkListTile *tile; - - g_return_if_fail (GTK_IS_LIST_ITEM_MANAGER (self)); - - self->single_click_activate = single_click_activate; - - for (tile = gtk_rb_tree_get_first (self->items); - tile != NULL; - tile = gtk_rb_tree_node_get_next (tile)) - { - if (tile->widget) - gtk_list_item_widget_set_single_click_activate (GTK_LIST_ITEM_WIDGET (tile->widget), single_click_activate); - } -} - -gboolean -gtk_list_item_manager_get_single_click_activate (GtkListItemManager *self) -{ - g_return_val_if_fail (GTK_IS_LIST_ITEM_MANAGER (self), FALSE); - - return self->single_click_activate; -} - GtkListItemTracker * gtk_list_item_tracker_new (GtkListItemManager *self) { diff --git a/gtk/gtklistitemmanagerprivate.h b/gtk/gtklistitemmanagerprivate.h index 02578c5c5b..74772651c9 100644 --- a/gtk/gtklistitemmanagerprivate.h +++ b/gtk/gtklistitemmanagerprivate.h @@ -108,12 +108,6 @@ void gtk_list_item_manager_set_model (GtkListItemMana GtkSelectionModel *model); GtkSelectionModel * gtk_list_item_manager_get_model (GtkListItemManager *self); -void gtk_list_item_manager_set_single_click_activate - (GtkListItemManager *self, - gboolean single_click_activate); -gboolean gtk_list_item_manager_get_single_click_activate - (GtkListItemManager *self); - GtkListItemTracker * gtk_list_item_tracker_new (GtkListItemManager *self); void gtk_list_item_tracker_free (GtkListItemManager *self, GtkListItemTracker *tracker); diff --git a/gtk/gtklistview.c b/gtk/gtklistview.c index ae8322755b..cb4e601269 100644 --- a/gtk/gtklistview.c +++ b/gtk/gtklistview.c @@ -226,6 +226,8 @@ gtk_list_view_create_list_widget (GtkListBase *base) "row", GTK_ACCESSIBLE_ROLE_LIST_ITEM); + gtk_list_item_widget_set_single_click_activate (GTK_LIST_ITEM_WIDGET (result), self->single_click_activate); + return GTK_LIST_ITEM_BASE (result); } @@ -638,7 +640,7 @@ gtk_list_view_get_property (GObject *object, break; case PROP_SINGLE_CLICK_ACTIVATE: - g_value_set_boolean (value, gtk_list_item_manager_get_single_click_activate (self->item_manager)); + g_value_set_boolean (value, self->single_click_activate); break; case PROP_ENABLE_RUBBERBAND: @@ -1006,12 +1008,22 @@ void gtk_list_view_set_single_click_activate (GtkListView *self, gboolean single_click_activate) { + GtkListTile *tile; + g_return_if_fail (GTK_IS_LIST_VIEW (self)); - if (single_click_activate == gtk_list_item_manager_get_single_click_activate (self->item_manager)) + if (single_click_activate == self->single_click_activate) return; - gtk_list_item_manager_set_single_click_activate (self->item_manager, single_click_activate); + self->single_click_activate = single_click_activate; + + for (tile = gtk_list_item_manager_get_first (self->item_manager); + tile != NULL; + tile = gtk_rb_tree_node_get_next (tile)) + { + if (tile->widget) + gtk_list_item_widget_set_single_click_activate (GTK_LIST_ITEM_WIDGET (tile->widget), single_click_activate); + } g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SINGLE_CLICK_ACTIVATE]); } @@ -1030,7 +1042,7 @@ gtk_list_view_get_single_click_activate (GtkListView *self) { g_return_val_if_fail (GTK_IS_LIST_VIEW (self), FALSE); - return gtk_list_item_manager_get_single_click_activate (self->item_manager); + return self->single_click_activate; } /** diff --git a/gtk/gtklistviewprivate.h b/gtk/gtklistviewprivate.h index 5e323d9e14..42aea60454 100644 --- a/gtk/gtklistviewprivate.h +++ b/gtk/gtklistviewprivate.h @@ -31,6 +31,7 @@ struct _GtkListView GtkListItemManager *item_manager; gboolean show_separators; + gboolean single_click_activate; }; struct _GtkListViewClass |