diff options
author | Tadej Borovšak <tadeboro@gmail.com> | 2010-10-18 00:21:39 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2010-10-22 11:03:45 +0200 |
commit | 55196a705f00564a44647bfc97981db0a783369a (patch) | |
tree | 101187f418d74b2cb16929f0dcd4ce2ed4575e44 /modules | |
parent | 86b3c1b65e6fefc6f686279b1bc15b10895b61fe (diff) | |
download | gtk+-55196a705f00564a44647bfc97981db0a783369a.tar.gz |
Add GtkScrollable interface
The GtkScrollable interface provides "hadjustment" and "vadjustment"
properties that are used by GtkScrolledWindow. It replaces
the ::set_scroll_adjustment signal. The scrollable interface
also has ::min-display-width/height properties that can be
used to control the minimally visible part inside a scrolled window.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/other/gail/gailtreeview.c | 124 | ||||
-rw-r--r-- | modules/other/gail/gailwidget.c | 4 |
2 files changed, 55 insertions, 73 deletions
diff --git a/modules/other/gail/gailtreeview.c b/modules/other/gail/gailtreeview.c index a9c50fdf5f..58772c1783 100644 --- a/modules/other/gail/gailtreeview.c +++ b/modules/other/gail/gailtreeview.c @@ -183,10 +183,6 @@ static gboolean gail_tree_view_collapse_row_gtk (GtkTreeView GtkTreePath *path); static void gail_tree_view_size_allocate_gtk (GtkWidget *widget, GtkAllocation *allocation); -static void gail_tree_view_set_scroll_adjustments - (GtkWidget *widget, - GtkAdjustment *hadj, - GtkAdjustment *vadj); static void gail_tree_view_changed_gtk (GtkTreeSelection *selection, gpointer data); @@ -348,8 +344,6 @@ static gboolean garbage_collect_cell_data (gpointer data); static GQuark quark_column_desc_object = 0; static GQuark quark_column_header_object = 0; static gboolean editing = FALSE; -static const gchar* hadjustment = "hadjustment"; -static const gchar* vadjustment = "vadjustment"; struct _GailTreeViewRowInfo { @@ -415,6 +409,40 @@ gail_tree_view_init (GailTreeView *view) } static void +gail_tree_view_hadjustment_set (GObject *widget, + GParamSpec *pspec, + gpointer data) +{ + GtkAdjustment *adj; + GailTreeView *view = data; + + g_object_get (widget, "hadjustment", &adj, NULL); + view->old_hadj = adj; + g_object_add_weak_pointer (G_OBJECT (view->old_hadj), (gpointer *)&view->old_hadj); + g_signal_connect (adj, + "value-changed", + G_CALLBACK (adjustment_changed), + widget); +} + +static void +gail_tree_view_vadjustment_set (GObject *widget, + GParamSpec *pspec, + gpointer data) +{ + GtkAdjustment *adj; + GailTreeView *view = data; + + g_object_get (widget, "vadjustment", &adj, NULL); + view->old_vadj = adj; + g_object_add_weak_pointer (G_OBJECT (view->old_vadj), (gpointer *)&view->old_vadj); + g_signal_connect (adj, + "value-changed", + G_CALLBACK (adjustment_changed), + widget); +} + +static void gail_tree_view_real_initialize (AtkObject *obj, gpointer data) { @@ -492,25 +520,16 @@ gail_tree_view_real_initialize (AtkObject *obj, /* adjustment callbacks */ - g_object_get (tree_view, hadjustment, &adj, NULL); - view->old_hadj = adj; - g_object_add_weak_pointer (G_OBJECT (view->old_hadj), (gpointer *)&view->old_hadj); - g_signal_connect (adj, - "value_changed", - G_CALLBACK (adjustment_changed), - tree_view); - - g_object_get (tree_view, vadjustment, &adj, NULL); - view->old_vadj = adj; - g_object_add_weak_pointer (G_OBJECT (view->old_vadj), (gpointer *)&view->old_vadj); - g_signal_connect (adj, - "value_changed", - G_CALLBACK (adjustment_changed), - tree_view); - g_signal_connect_after (widget, - "set_scroll_adjustments", - G_CALLBACK (gail_tree_view_set_scroll_adjustments), - NULL); + gail_tree_view_hadjustment_set (widget, NULL, view); + gail_tree_view_vadjustment_set (widget, NULL, view); + g_signal_connect (widget, + "notify::hadjustment", + G_CALLBACK (gail_tree_view_hadjustment_set), + view); + g_signal_connect (widget, + "notify::vadjustment", + G_CALLBACK (gail_tree_view_vadjustment_set), + view); view->col_data = g_array_sized_new (FALSE, TRUE, sizeof(GtkTreeViewColumn *), 0); @@ -579,29 +598,29 @@ gail_tree_view_real_notify_gtk (GObject *obj, g_signal_emit_by_name (atk_obj, "visible_data_changed"); g_object_thaw_notify (G_OBJECT (atk_obj)); } - else if (strcmp (pspec->name, hadjustment) == 0) + else if (strcmp (pspec->name, "hadjustment") == 0) { - g_object_get (tree_view, hadjustment, &adj, NULL); + g_object_get (tree_view, "hadjustment", &adj, NULL); g_signal_handlers_disconnect_by_func (gailview->old_hadj, (gpointer) adjustment_changed, widget); gailview->old_hadj = adj; g_object_add_weak_pointer (G_OBJECT (gailview->old_hadj), (gpointer *)&gailview->old_hadj); - g_signal_connect (adj, - "value_changed", + g_signal_connect (adj, + "value-changed", G_CALLBACK (adjustment_changed), tree_view); } - else if (strcmp (pspec->name, vadjustment) == 0) + else if (strcmp (pspec->name, "vadjustment") == 0) { - g_object_get (tree_view, vadjustment, &adj, NULL); - g_signal_handlers_disconnect_by_func (gailview->old_vadj, + g_object_get (tree_view, "vadjustment", &adj, NULL); + g_signal_handlers_disconnect_by_func (gailview->old_vadj, (gpointer) adjustment_changed, widget); gailview->old_vadj = adj; g_object_add_weak_pointer (G_OBJECT (gailview->old_hadj), (gpointer *)&gailview->old_vadj); - g_signal_connect (adj, - "value_changed", + g_signal_connect (adj, + "value-changed", G_CALLBACK (adjustment_changed), tree_view); } @@ -2361,43 +2380,6 @@ gail_tree_view_size_allocate_gtk (GtkWidget *widget, } static void -gail_tree_view_set_scroll_adjustments (GtkWidget *widget, - GtkAdjustment *hadj, - GtkAdjustment *vadj) -{ - AtkObject *atk_obj = gtk_widget_get_accessible (widget); - GailTreeView *gailview = GAIL_TREE_VIEW (atk_obj); - GtkAdjustment *adj; - - g_object_get (widget, hadjustment, &adj, NULL); - if (gailview->old_hadj != adj) - { - g_signal_handlers_disconnect_by_func (gailview->old_hadj, - (gpointer) adjustment_changed, - widget); - gailview->old_hadj = adj; - g_object_add_weak_pointer (G_OBJECT (gailview->old_hadj), (gpointer *)&gailview->old_hadj); - g_signal_connect (adj, - "value_changed", - G_CALLBACK (adjustment_changed), - widget); - } - g_object_get (widget, vadjustment, &adj, NULL); - if (gailview->old_vadj != adj) - { - g_signal_handlers_disconnect_by_func (gailview->old_vadj, - (gpointer) adjustment_changed, - widget); - gailview->old_vadj = adj; - g_object_add_weak_pointer (G_OBJECT (gailview->old_vadj), (gpointer *)&gailview->old_vadj); - g_signal_connect (adj, - "value_changed", - G_CALLBACK (adjustment_changed), - widget); - } -} - -static void gail_tree_view_changed_gtk (GtkTreeSelection *selection, gpointer data) { diff --git a/modules/other/gail/gailwidget.c b/modules/other/gail/gailwidget.c index 30a7153da9..89a27db97c 100644 --- a/modules/other/gail/gailwidget.c +++ b/modules/other/gail/gailwidget.c @@ -1037,9 +1037,9 @@ static gboolean gail_widget_on_screen (GtkWidget *widget) gtk_widget_get_allocation (viewport, &viewport_allocation); - adjustment = gtk_viewport_get_vadjustment (GTK_VIEWPORT (viewport)); + adjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (viewport)); visible_rect.y = adjustment->value; - adjustment = gtk_viewport_get_hadjustment (GTK_VIEWPORT (viewport)); + adjustment = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (viewport)); visible_rect.x = adjustment->value; visible_rect.width = viewport_allocation.width; visible_rect.height = viewport_allocation.height; |