[gtk/columnview-reordering: 45/48] columnview: Add a GtkColumnView:reorderable property
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/columnview-reordering: 45/48] columnview: Add a GtkColumnView:reorderable property
- Date: Wed, 3 Jun 2020 17:40:10 +0000 (UTC)
commit 11b4e0d4c01f695e876664685ddd07d3f4c5f1df
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Jun 3 12:57:38 2020 -0400
columnview: Add a GtkColumnView:reorderable property
This property controls if users can reorder columns
by drag-and-drop. It defaults to TRUE.
docs/reference/gtk/gtk4-sections.txt | 2 ++
gtk/gtkcolumnview.c | 62 ++++++++++++++++++++++++++++++++++++
gtk/gtkcolumnview.h | 7 ++++
3 files changed, 71 insertions(+)
---
diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt
index a43604c216..20f8352592 100644
--- a/docs/reference/gtk/gtk4-sections.txt
+++ b/docs/reference/gtk/gtk4-sections.txt
@@ -507,6 +507,8 @@ gtk_column_view_set_show_separators
gtk_column_view_sort_by_column
gtk_column_view_set_single_click_activate
gtk_column_view_get_single_click_activate
+gtk_column_view_set_reorderable
+gtk_column_view_get_reorderable
<SUBSECTION Standard>
GTK_COLUMN_VIEW
GTK_COLUMN_VIEW_CLASS
diff --git a/gtk/gtkcolumnview.c b/gtk/gtkcolumnview.c
index bda7cdbc61..414ca0d83d 100644
--- a/gtk/gtkcolumnview.c
+++ b/gtk/gtkcolumnview.c
@@ -70,6 +70,8 @@ struct _GtkColumnView
GtkAdjustment *hadjustment;
+ gboolean reorderable;
+
gboolean in_column_resize;
int drag_pos;
int drag_x;
@@ -92,6 +94,7 @@ enum
PROP_VADJUSTMENT,
PROP_VSCROLL_POLICY,
PROP_SINGLE_CLICK_ACTIVATE,
+ PROP_REORDERABLE,
N_PROPS
};
@@ -361,6 +364,10 @@ gtk_column_view_get_property (GObject *object,
g_value_set_boolean (value, gtk_column_view_get_single_click_activate (self));
break;
+ case PROP_REORDERABLE:
+ g_value_set_boolean (value, gtk_column_view_get_reorderable (self));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -432,6 +439,10 @@ gtk_column_view_set_property (GObject *object,
gtk_column_view_set_single_click_activate (self, g_value_get_boolean (value));
break;
+ case PROP_REORDERABLE:
+ gtk_column_view_set_reorderable (self, g_value_get_boolean (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -528,6 +539,18 @@ gtk_column_view_class_init (GtkColumnViewClass *klass)
FALSE,
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+ /**
+ * GtkColumnView:reorderable:
+ *
+ * Whether columns are reorderable
+ */
+ properties[PROP_REORDERABLE] =
+ g_param_spec_boolean ("reorderable",
+ P_("Reorderable"),
+ P_("Whether columns are reorderable"),
+ TRUE,
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (gobject_class, N_PROPS, properties);
/**
@@ -726,6 +749,8 @@ gtk_column_view_init (GtkColumnView *self)
g_quark_from_static_string (I_("view")));
gtk_widget_set_overflow (GTK_WIDGET (self), GTK_OVERFLOW_HIDDEN);
+
+ self->reorderable = TRUE;
}
/**
@@ -1081,3 +1106,40 @@ gtk_column_view_get_single_click_activate (GtkColumnView *self)
return gtk_list_view_get_single_click_activate (self->listview);
}
+
+/**
+ * gtk_column_view_set_reorderable:
+ * @self: a #GtkColumnView
+ * @reorderable: whether columns should be reorderable
+ *
+ * Sets whether columns should be reorderable by dragging.
+ */
+void
+gtk_column_view_set_reorderable (GtkColumnView *self,
+ gboolean reorderable)
+{
+ g_return_if_fail (GTK_IS_COLUMN_VIEW (self));
+
+ if (self->reorderable == reorderable)
+ return;
+
+ self->reorderable = reorderable;
+
+ g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_REORDERABLE]);
+}
+
+/**
+ * gtk_column_view_get_reorderable:
+ * @self: a #GtkColumnView
+ *
+ * Returns whether columns are reorderable.
+ *
+ * Returns: %TRUE if columns are reorderable
+ */
+gboolean
+gtk_column_view_get_reorderable (GtkColumnView *self)
+{
+ g_return_val_if_fail (GTK_IS_COLUMN_VIEW (self), TRUE);
+
+ return self->reorderable;
+}
diff --git a/gtk/gtkcolumnview.h b/gtk/gtkcolumnview.h
index 0866b6449c..5cff5d73dc 100644
--- a/gtk/gtkcolumnview.h
+++ b/gtk/gtkcolumnview.h
@@ -92,6 +92,13 @@ void gtk_column_view_set_single_click_activate (GtkColumnView
GDK_AVAILABLE_IN_ALL
gboolean gtk_column_view_get_single_click_activate (GtkColumnView *self);
+GDK_AVAILABLE_IN_ALL
+void gtk_column_view_set_reorderable (GtkColumnView *self,
+ gboolean reorderable);
+GDK_AVAILABLE_IN_ALL
+gboolean gtk_column_view_get_reorderable (GtkColumnView *self);
+
+
G_END_DECLS
#endif /* __GTK_COLUMN_VIEW_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]