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.
This commit is contained in:
committed by
Matthias Clasen
parent
86b3c1b65e
commit
55196a705f
@ -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
|
||||
{
|
||||
@ -414,6 +408,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);
|
||||
}
|
||||
@ -2360,43 +2379,6 @@ gail_tree_view_size_allocate_gtk (GtkWidget *widget,
|
||||
traverse_cells (gailview, NULL, FALSE, FALSE);
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user