static void cainteoir_document_view_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { CainteoirDocumentViewPrivate *priv = CAINTEOIR_DOCUMENT_VIEW_PRIVATE(object); GtkScrollable *scroll = GTK_SCROLLABLE(priv->text_view); switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; // GtkScrollable interface: case PROP_HADJUSTMENT: gtk_scrollable_set_hadjustment(scroll, GTK_ADJUSTMENT(g_value_get_object(value))); break; case PROP_VADJUSTMENT: gtk_scrollable_set_vadjustment(scroll, GTK_ADJUSTMENT(g_value_get_object(value))); break; case PROP_HSCROLL_POLICY: gtk_scrollable_set_hscroll_policy(scroll, (GtkScrollablePolicy)g_value_get_enum(value)); break; case PROP_VSCROLL_POLICY: gtk_scrollable_set_vscroll_policy(scroll, (GtkScrollablePolicy)g_value_get_enum(value)); break; } }
static void gnc_header_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec *pspec) { GncHeader *header = GNC_HEADER (object); GtkLayout *layout = GTK_LAYOUT (header); gboolean needs_update = FALSE; gchar *old_name; switch (param_id) { case PROP_SHEET: header->sheet = GNUCASH_SHEET (g_value_get_object (value)); gtk_scrollable_set_hadjustment (GTK_SCROLLABLE(layout), header->sheet->hadj); needs_update = TRUE; break; case PROP_CURSOR_NAME: old_name = header->cursor_name; header->cursor_name = g_value_dup_string (value); needs_update = !old_name || !header->cursor_name || strcmp (old_name, header->cursor_name) != 0; g_free (old_name); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; } if ((header->sheet != NULL) && needs_update) gnc_header_reconfigure (header); }
void nsgtk_layout_set_hadjustment(GtkLayout *layout, GtkAdjustment *adj) { #if GTK_CHECK_VERSION(3,0,0) gtk_scrollable_set_hadjustment(GTK_SCROLLABLE(layout), adj); #else gtk_layout_set_hadjustment(layout, adj); #endif }
static void create_layout (GtkWidget *vbox) { GtkAdjustment *hadjustment, *vadjustment; GtkLayout *layout; GtkWidget *layout_widget; GtkWidget *scrolledwindow; GtkWidget *button; gchar buf[16]; gint i, j; scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_CORNER_TOP_RIGHT); gtk_box_pack_start (GTK_BOX (vbox), scrolledwindow, TRUE, TRUE, 0); layout_widget = gtk_layout_new (NULL, NULL); layout = GTK_LAYOUT (layout_widget); gtk_container_add (GTK_CONTAINER (scrolledwindow), layout_widget); /* We set step sizes here since GtkLayout does not set * them itself. */ hadjustment = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (layout)); vadjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (layout)); gtk_adjustment_set_step_increment (hadjustment, 10.0); gtk_adjustment_set_step_increment (vadjustment, 10.0); gtk_scrollable_set_hadjustment (GTK_SCROLLABLE (layout), hadjustment); gtk_scrollable_set_vadjustment (GTK_SCROLLABLE (layout), vadjustment); gtk_widget_set_events (layout_widget, GDK_EXPOSURE_MASK); g_signal_connect (layout, "draw", G_CALLBACK (layout_draw_handler), NULL); gtk_layout_set_size (layout, 1600, 128000); for (i = 0 ; i < 16 ; i++) for (j = 0 ; j < 16 ; j++) { g_snprintf (buf, sizeof (buf), "Button %d, %d", i, j); if ((i + j) % 2) button = gtk_button_new_with_label (buf); else button = gtk_label_new (buf); gtk_layout_put (layout, button, j * 100, i * 100); } for (i = 16; i < 1280; i++) { g_snprintf (buf, sizeof (buf), "Button %d, %d", i, 0); if (i % 2) button = gtk_button_new_with_label (buf); else button = gtk_label_new (buf); gtk_layout_put (layout, button, 0, i * 100); } layout_timeout = g_timeout_add (1000, scroll_layout, layout); }