summaryrefslogtreecommitdiff
path: root/tests/testtreeview.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2001-01-09 23:24:20 +0000
committerHavoc Pennington <hp@src.gnome.org>2001-01-09 23:24:20 +0000
commit85267e9224f8ffec7aeafb8ccbed583d60e7bf4c (patch)
tree9bc3d863efb36335af01de375ad02509b1005059 /tests/testtreeview.c
parent637c61da761f10836994c47c70a80735889506d7 (diff)
downloadgdk-pixbuf-85267e9224f8ffec7aeafb8ccbed583d60e7bf4c.tar.gz
don't draw if label->layout is NULL due to a pending resize
2001-01-09 Havoc Pennington <hp@redhat.com> * gtk/gtklabel.c (gtk_label_expose): don't draw if label->layout is NULL due to a pending resize * gtk/gtktreeview.c (gtk_tree_view_check_dirty): don't set the column width to values less than 1 * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_width): clamp width to be between min/max width, and still set the width even if autosize is turned on, so the tree view can use this function in order to autosize. (gtk_tree_view_column_init): set initial width to 1 not 0 * gtk/gtktreeview.c (gtk_tree_view_size_request_buttons): use setter function to modify column width, so we get notification (gtk_tree_view_insert_iter_height): ditto (gtk_tree_view_calc_size): ditto (gtk_tree_view_check_dirty): ditto * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_class_init): Add properties to change all the interesting attributes of the tree view column. (gtk_tree_view_column_set_header_clickable): rename set_clickable (gtk_tree_view_column_get_clickable): add (gtk_tree_view_column_set_cell_renderer): don't unset the current attributes; assume a cell renderer with equivalent object properties has been swapped in. Do g_object_notify(). (gtk_tree_view_column_set_visible): g_object_notify (gtk_tree_view_column_get_sizing): rename from get_col_type (gtk_tree_view_column_set_sizing): g_object_notify (gtk_tree_view_column_set_width): add g_object_notify (gtk_tree_view_column_set_min_width): ditto (gtk_tree_view_column_set_max_width): ditto (gtk_tree_view_column_set_title): ditto (gtk_tree_view_column_set_clickable): ditto (gtk_tree_view_column_set_widget): ditto (gtk_tree_view_column_set_justification): ditto
Diffstat (limited to 'tests/testtreeview.c')
-rw-r--r--tests/testtreeview.c69
1 files changed, 61 insertions, 8 deletions
diff --git a/tests/testtreeview.c b/tests/testtreeview.c
index e224c3724..3ddaf6e89 100644
--- a/tests/testtreeview.c
+++ b/tests/testtreeview.c
@@ -140,6 +140,28 @@ get_model_types (void)
}
static void
+col_clicked_cb (GtkTreeViewColumn *col, gpointer data)
+{
+ GtkWindow *win;
+
+ win = GTK_WINDOW (create_prop_editor (G_OBJECT (col)));
+
+ gtk_window_set_title (win, gtk_tree_view_column_get_title (col));
+}
+
+static void
+setup_column (GtkTreeViewColumn *col)
+{
+ g_signal_connect_data (G_OBJECT (col),
+ "clicked",
+ (GCallback) col_clicked_cb,
+ NULL,
+ NULL,
+ FALSE,
+ FALSE);
+}
+
+static void
set_columns_type (GtkTreeView *tree_view, ColumnsType type)
{
GtkTreeViewColumn *col;
@@ -165,6 +187,7 @@ set_columns_type (GtkTreeView *tree_view, ColumnsType type)
rend,
"text", 1,
NULL);
+ setup_column (col);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), col);
@@ -178,6 +201,8 @@ set_columns_type (GtkTreeView *tree_view, ColumnsType type)
"text", 0,
"pixbuf", 2,
NULL);
+
+ setup_column (col);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), col);
@@ -193,6 +218,8 @@ set_columns_type (GtkTreeView *tree_view, ColumnsType type)
rend,
"text", 0,
NULL);
+
+ setup_column (col);
gtk_tree_view_insert_column (GTK_TREE_VIEW (tree_view), col, 0);
@@ -941,18 +968,44 @@ get_param_specs (GObject *object,
*n_specs = G_OBJECT_GET_CLASS (object)->n_property_specs;
}
+typedef struct
+{
+ gpointer instance;
+ guint id;
+} DisconnectData;
+
+static void
+disconnect_func (gpointer data)
+{
+ DisconnectData *dd = data;
+
+ g_signal_handler_disconnect (dd->instance, dd->id);
+ g_free (dd);
+}
+
static void
g_object_connect_property (GObject *object,
const gchar *prop_name,
GtkSignalFunc func,
- gpointer data)
+ gpointer data,
+ GObject *alive_object)
{
gchar *with_detail = g_strconcat ("notify::", prop_name, NULL);
+ DisconnectData *dd;
+
+ dd = g_new (DisconnectData, 1);
- g_signal_connect_data (object, with_detail,
- func, data,
- NULL, FALSE, FALSE);
+ dd->id = g_signal_connect_data (object, with_detail,
+ func, data,
+ NULL, FALSE, FALSE);
+ dd->instance = object;
+
+ g_object_set_data_full (G_OBJECT (alive_object),
+ "alive-object",
+ dd,
+ disconnect_func);
+
g_free (with_detail);
}
@@ -1188,7 +1241,7 @@ create_prop_editor (GObject *object)
g_object_connect_property (object, spec->name,
GTK_SIGNAL_FUNC (int_changed),
- adj);
+ adj, G_OBJECT (adj));
if (can_modify)
connect_controller (G_OBJECT (adj), "value_changed",
@@ -1208,7 +1261,7 @@ create_prop_editor (GObject *object)
g_object_connect_property (object, spec->name,
GTK_SIGNAL_FUNC (string_changed),
- prop_edit);
+ prop_edit, G_OBJECT (prop_edit));
if (can_modify)
connect_controller (G_OBJECT (prop_edit), "changed",
@@ -1228,7 +1281,7 @@ create_prop_editor (GObject *object)
g_object_connect_property (object, spec->name,
GTK_SIGNAL_FUNC (bool_changed),
- prop_edit);
+ prop_edit, G_OBJECT (prop_edit));
if (can_modify)
connect_controller (G_OBJECT (prop_edit), "toggled",
@@ -1275,7 +1328,7 @@ create_prop_editor (GObject *object)
g_object_connect_property (object, spec->name,
GTK_SIGNAL_FUNC (enum_changed),
- prop_edit);
+ prop_edit, G_OBJECT (prop_edit));
if (can_modify)
connect_controller (G_OBJECT (prop_edit), "changed",