[gtk/columnview-sorter-api] columnviewtitle: Clean up interactions
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/columnview-sorter-api] columnviewtitle: Clean up interactions
- Date: Thu, 20 Oct 2022 17:58:21 +0000 (UTC)
commit 9ed1505073406db8e0635dffd25fbf245cfe1596
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Oct 20 13:37:26 2022 -0400
columnviewtitle: Clean up interactions
Separate the apis we use for updating title,
menu and sort indicator.
gtk/gtkcolumnviewcolumn.c | 8 ++++----
gtk/gtkcolumnviewtitle.c | 43 ++++++++++++++++++++++++++---------------
gtk/gtkcolumnviewtitleprivate.h | 7 ++++++-
3 files changed, 37 insertions(+), 21 deletions(-)
---
diff --git a/gtk/gtkcolumnviewcolumn.c b/gtk/gtkcolumnviewcolumn.c
index 9ff589e5d8..715248f1c8 100644
--- a/gtk/gtkcolumnviewcolumn.c
+++ b/gtk/gtkcolumnviewcolumn.c
@@ -706,7 +706,7 @@ gtk_column_view_column_set_title (GtkColumnViewColumn *self,
self->title = g_strdup (title);
if (self->header)
- gtk_column_view_title_update (GTK_COLUMN_VIEW_TITLE (self->header));
+ gtk_column_view_title_set_title (GTK_COLUMN_VIEW_TITLE (self->header), title);
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_TITLE]);
}
@@ -765,7 +765,7 @@ gtk_column_view_column_set_sorter (GtkColumnViewColumn *self,
gtk_column_view_column_remove_from_sorter (self);
if (self->header)
- gtk_column_view_title_update (GTK_COLUMN_VIEW_TITLE (self->header));
+ gtk_column_view_title_update_sort (GTK_COLUMN_VIEW_TITLE (self->header));
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SORTER]);
}
@@ -790,7 +790,7 @@ void
gtk_column_view_column_notify_sort (GtkColumnViewColumn *self)
{
if (self->header)
- gtk_column_view_title_update (GTK_COLUMN_VIEW_TITLE (self->header));
+ gtk_column_view_title_update_sort (GTK_COLUMN_VIEW_TITLE (self->header));
}
/**
@@ -862,7 +862,7 @@ gtk_column_view_column_set_header_menu (GtkColumnViewColumn *self,
return;
if (self->header)
- gtk_column_view_title_update (GTK_COLUMN_VIEW_TITLE (self->header));
+ gtk_column_view_title_set_menu (GTK_COLUMN_VIEW_TITLE (self->header), menu);
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_HEADER_MENU]);
}
diff --git a/gtk/gtkcolumnviewtitle.c b/gtk/gtkcolumnviewtitle.c
index cb75bc1d74..f2a3cae45f 100644
--- a/gtk/gtkcolumnviewtitle.c
+++ b/gtk/gtkcolumnviewtitle.c
@@ -283,45 +283,56 @@ gtk_column_view_title_new (GtkColumnViewColumn *column)
title = g_object_new (GTK_TYPE_COLUMN_VIEW_TITLE, NULL);
title->column = g_object_ref (column);
- gtk_column_view_title_update (title);
+ gtk_column_view_title_update_sort (title);
+ gtk_column_view_title_set_title (title, gtk_column_view_column_get_title (column));
+ gtk_column_view_title_set_menu (title, gtk_column_view_column_get_header_menu (column));
return GTK_WIDGET (title);
}
void
-gtk_column_view_title_update (GtkColumnViewTitle *self)
+gtk_column_view_title_set_title (GtkColumnViewTitle *self,
+ const char *title)
{
- GtkSorter *sorter;
- GtkColumnView *view;
- GtkColumnViewSorter *view_sorter;
- gboolean inverted;
- GtkColumnViewColumn *active;
-
- gtk_label_set_label (GTK_LABEL (self->title), gtk_column_view_column_get_title (self->column));
+ gtk_label_set_label (GTK_LABEL (self->title), title);
+}
- sorter = gtk_column_view_column_get_sorter (self->column);
+void
+gtk_column_view_title_set_menu (GtkColumnViewTitle *self,
+ GMenuModel *model)
+{
+ g_clear_pointer (&self->popup_menu, gtk_widget_unparent);
+}
- if (sorter)
+void
+gtk_column_view_title_update_sort (GtkColumnViewTitle *self)
+{
+ if (gtk_column_view_column_get_sorter (self->column))
{
+ GtkColumnView *view;
+ GtkColumnViewSorter *view_sorter;
+ GtkColumnViewColumn *primary;
+ GtkSortType sort_order;
+
view = gtk_column_view_column_get_column_view (self->column);
view_sorter = GTK_COLUMN_VIEW_SORTER (gtk_column_view_get_sorter (view));
- active = gtk_column_view_sorter_get_sort_column (view_sorter, &inverted);
+ primary = gtk_column_view_sorter_get_primary_sort_column (view_sorter);
+ sort_order = gtk_column_view_sorter_get_primary_sort_order (view_sorter);
gtk_widget_show (self->sort);
gtk_widget_remove_css_class (self->sort, "ascending");
gtk_widget_remove_css_class (self->sort, "descending");
gtk_widget_remove_css_class (self->sort, "unsorted");
- if (self->column != active)
+
+ if (self->column != primary)
gtk_widget_add_css_class (self->sort, "unsorted");
- else if (inverted)
+ else if (sort_order == GTK_SORT_DESCENDING)
gtk_widget_add_css_class (self->sort, "descending");
else
gtk_widget_add_css_class (self->sort, "ascending");
}
else
gtk_widget_hide (self->sort);
-
- g_clear_pointer (&self->popup_menu, gtk_widget_unparent);
}
GtkColumnViewColumn *
diff --git a/gtk/gtkcolumnviewtitleprivate.h b/gtk/gtkcolumnviewtitleprivate.h
index 84bc6a4050..dae569f55a 100644
--- a/gtk/gtkcolumnviewtitleprivate.h
+++ b/gtk/gtkcolumnviewtitleprivate.h
@@ -38,7 +38,12 @@ GType gtk_column_view_title_get_type (void) G_GNUC_CO
GtkWidget * gtk_column_view_title_new (GtkColumnViewColumn *column);
-void gtk_column_view_title_update (GtkColumnViewTitle *self);
+void gtk_column_view_title_set_title (GtkColumnViewTitle *self,
+ const char *title);
+void gtk_column_view_title_set_menu (GtkColumnViewTitle *self,
+ GMenuModel *model);
+
+void gtk_column_view_title_update_sort (GtkColumnViewTitle *self);
GtkColumnViewColumn * gtk_column_view_title_get_column (GtkColumnViewTitle *self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]