summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorTadej Borovšak <tadeboro@gmail.com>2010-10-18 00:21:39 -0400
committerMatthias Clasen <mclasen@redhat.com>2010-10-22 11:03:45 +0200
commit55196a705f00564a44647bfc97981db0a783369a (patch)
tree101187f418d74b2cb16929f0dcd4ce2ed4575e44 /modules
parent86b3c1b65e6fefc6f686279b1bc15b10895b61fe (diff)
downloadgtk+-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.c124
-rw-r--r--modules/other/gail/gailwidget.c4
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;