From 4b683629816ea3a1809d7e8d99a44cc10d33bbbe Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 3 Jun 2020 17:34:35 -0400 Subject: [PATCH] columnview: Add a property for column separators Rename the show-separators property to show-row-separators, and add a matching show-column-separators property. It is implemented by setting the .column-separators style class on the column view. --- docs/reference/gtk/gtk4-sections.txt | 6 +- gtk/gtkcolumnview.c | 106 ++++++++++++++++++++++----- gtk/gtkcolumnview.h | 12 ++- 3 files changed, 99 insertions(+), 25 deletions(-) diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt index 5e61658a0a..8e88c6d1db 100644 --- a/docs/reference/gtk/gtk4-sections.txt +++ b/docs/reference/gtk/gtk4-sections.txt @@ -514,8 +514,10 @@ gtk_column_view_get_columns gtk_column_view_get_model gtk_column_view_set_model gtk_column_view_get_sorter -gtk_column_view_get_show_separators -gtk_column_view_set_show_separators +gtk_column_view_get_show_row_separators +gtk_column_view_set_show_row_separators +gtk_column_view_get_show_column_separators +gtk_column_view_set_show_column_separators gtk_column_view_sort_by_column gtk_column_view_set_single_click_activate gtk_column_view_get_single_click_activate diff --git a/gtk/gtkcolumnview.c b/gtk/gtkcolumnview.c index 2a8080733b..e7ef11d797 100644 --- a/gtk/gtkcolumnview.c +++ b/gtk/gtkcolumnview.c @@ -73,6 +73,7 @@ struct _GtkColumnView GtkAdjustment *hadjustment; gboolean reorderable; + gboolean show_column_separators; gboolean in_column_resize; gboolean in_column_reorder; @@ -100,7 +101,8 @@ enum PROP_HADJUSTMENT, PROP_HSCROLL_POLICY, PROP_MODEL, - PROP_SHOW_SEPARATORS, + PROP_SHOW_ROW_SEPARATORS, + PROP_SHOW_COLUMN_SEPARATORS, PROP_SORTER, PROP_VADJUSTMENT, PROP_VSCROLL_POLICY, @@ -378,10 +380,14 @@ gtk_column_view_get_property (GObject *object, g_value_set_object (value, gtk_list_view_get_model (self->listview)); break; - case PROP_SHOW_SEPARATORS: + case PROP_SHOW_ROW_SEPARATORS: g_value_set_boolean (value, gtk_list_view_get_show_separators (self->listview)); break; + case PROP_SHOW_COLUMN_SEPARATORS: + g_value_set_boolean (value, self->show_column_separators); + break; + case PROP_VADJUSTMENT: g_value_set_object (value, gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (self->listview))); break; @@ -453,8 +459,12 @@ gtk_column_view_set_property (GObject *object, gtk_column_view_set_model (self, g_value_get_object (value)); break; - case PROP_SHOW_SEPARATORS: - gtk_column_view_set_show_separators (self, g_value_get_boolean (value)); + case PROP_SHOW_ROW_SEPARATORS: + gtk_column_view_set_show_row_separators (self, g_value_get_boolean (value)); + break; + + case PROP_SHOW_COLUMN_SEPARATORS: + gtk_column_view_set_show_column_separators (self, g_value_get_boolean (value)); break; case PROP_VADJUSTMENT: @@ -546,17 +556,29 @@ gtk_column_view_class_init (GtkColumnViewClass *klass) G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); /** - * GtkColumnView:show-separators: + * GtkColumnView:show-row-separators: * * Show separators between rows */ - properties[PROP_SHOW_SEPARATORS] = - g_param_spec_boolean ("show-separators", - P_("Show separators"), + properties[PROP_SHOW_ROW_SEPARATORS] = + g_param_spec_boolean ("show-row-separators", + P_("Show row separators"), P_("Show separators between rows"), FALSE, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); + /** + * GtkColumnView:show-column-separators: + * + * Show separators between columns + */ + properties[PROP_SHOW_COLUMN_SEPARATORS] = + g_param_spec_boolean ("show-column-separators", + P_("Show column separators"), + P_("Show separators between columns"), + FALSE, + G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); + /** * GtkColumnView:sorter: * @@ -712,7 +734,7 @@ gtk_column_view_in_header (GtkColumnView *self, GtkWidget *header; graphene_rect_t rect; - header = gtk_column_view_column_get_header (column); +header = gtk_column_view_column_get_header (column); if (!gtk_widget_compute_bounds (header, self->header, &rect)) return FALSE; @@ -1112,44 +1134,88 @@ gtk_column_view_get_columns (GtkColumnView *self) } /** - * gtk_column_view_set_show_separators: + * gtk_column_view_set_show_row_separators: * @self: a #GtkColumnView - * @show_separators: %TRUE to show separators + * @show_separators: %TRUE to show row separators * * Sets whether the list should show separators * between rows. */ void -gtk_column_view_set_show_separators (GtkColumnView *self, - gboolean show_separators) +gtk_column_view_set_show_row_separators (GtkColumnView *self, + gboolean show_row_separators) { g_return_if_fail (GTK_IS_COLUMN_VIEW (self)); - if (gtk_list_view_get_show_separators (self->listview) == show_separators) + if (gtk_list_view_get_show_separators (self->listview) == show_row_separators) return; - gtk_list_view_set_show_separators (self->listview, show_separators); + gtk_list_view_set_show_separators (self->listview, show_row_separators); - g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SHOW_SEPARATORS]); + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SHOW_ROW_SEPARATORS]); } /** - * gtk_column_view_get_show_separators: + * gtk_column_view_get_show_row_separators: * @self: a #GtkColumnView * - * Returns whether the list box should show separators + * Returns whether the list should show separators * between rows. * - * Returns: %TRUE if the list box shows separators + * Returns: %TRUE if the list shows separators */ gboolean -gtk_column_view_get_show_separators (GtkColumnView *self) +gtk_column_view_get_show_row_separators (GtkColumnView *self) { g_return_val_if_fail (GTK_IS_COLUMN_VIEW (self), FALSE); return gtk_list_view_get_show_separators (self->listview); } +/** + * gtk_column_view_set_show_column_separators: + * @self: a #GtkColumnView + * @show_column_separators: %TRUE to show column separators + * + * Sets whether the list should show separators + * between columns. + */ +void +gtk_column_view_set_show_column_separators (GtkColumnView *self, + gboolean show_column_separators) +{ + g_return_if_fail (GTK_IS_COLUMN_VIEW (self)); + + if (self->show_column_separators == show_column_separators) + return; + + self->show_column_separators = show_column_separators; + + if (show_column_separators) + gtk_widget_add_css_class (GTK_WIDGET (self), "column-separators"); + else + gtk_widget_remove_css_class (GTK_WIDGET (self), "column-separators"); + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SHOW_COLUMN_SEPARATORS]); +} + +/** + * gtk_column_view_get_show_column_separators: + * @self: a #GtkColumnView + * + * Returns whether the list should show separators + * between columns. + * + * Returns: %TRUE if the list shows column separators + */ +gboolean +gtk_column_view_get_show_column_separators (GtkColumnView *self) +{ + g_return_val_if_fail (GTK_IS_COLUMN_VIEW (self), FALSE); + + return self->show_column_separators; +} + /** * gtk_column_view_append_column: * @self: a #GtkColumnView diff --git a/gtk/gtkcolumnview.h b/gtk/gtkcolumnview.h index 69bf8c7a19..fb393e4ac6 100644 --- a/gtk/gtkcolumnview.h +++ b/gtk/gtkcolumnview.h @@ -73,10 +73,16 @@ void gtk_column_view_set_model (GtkColumnView GListModel *model); GDK_AVAILABLE_IN_ALL -gboolean gtk_column_view_get_show_separators (GtkColumnView *self); +gboolean gtk_column_view_get_show_row_separators (GtkColumnView *self); GDK_AVAILABLE_IN_ALL -void gtk_column_view_set_show_separators (GtkColumnView *self, - gboolean show_separators); +void gtk_column_view_set_show_row_separators (GtkColumnView *self, + gboolean show_row_separators); + +GDK_AVAILABLE_IN_ALL +gboolean gtk_column_view_get_show_column_separators (GtkColumnView *self); +GDK_AVAILABLE_IN_ALL +void gtk_column_view_set_show_column_separators (GtkColumnView *self, + gboolean show_column_separators); GDK_AVAILABLE_IN_ALL GtkSorter * gtk_column_view_get_sorter (GtkColumnView *self);