static void gail_container_real_initialize (AtkObject *obj, gpointer data) { GailContainer *container = GAIL_CONTAINER (obj); guint handler_id; ATK_OBJECT_CLASS (parent_class)->initialize (obj, data); container->children = gtk_container_get_children (GTK_CONTAINER (data)); /* * We store the handler ids for these signals in case some objects * need to remove these handlers. */ handler_id = g_signal_connect (data, "add", G_CALLBACK (gail_container_add_gtk), obj); g_object_set_data (G_OBJECT (obj), "gail-add-handler-id", GUINT_TO_POINTER (handler_id)); handler_id = g_signal_connect (data, "remove", G_CALLBACK (gail_container_remove_gtk), obj); g_object_set_data (G_OBJECT (obj), "gail-remove-handler-id", GUINT_TO_POINTER (handler_id)); if (GTK_IS_TOOLBAR (data)) obj->role = ATK_ROLE_TOOL_BAR; else if (GTK_IS_VIEWPORT (data)) obj->role = ATK_ROLE_VIEWPORT; else obj->role = ATK_ROLE_PANEL; }
static gboolean wrap_table_child_focus_in (GtkWidget *widget, GdkEventFocus *event, gpointer data) { gint x, y; GtkWidget *container, *viewport = NULL; container = gtk_widget_get_parent (widget); if (container) { viewport = gtk_widget_get_parent (container); } g_assert (container && viewport); g_assert (GTK_IS_VIEWPORT (viewport)); g_return_val_if_fail (gtk_widget_get_realized (viewport), FALSE); if (!wrap_table_child_visible_in (widget, viewport)) { GtkAdjustment *hadj, *vadj; hadj = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (viewport)); vadj = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (viewport)); gtk_widget_translate_coordinates (widget, container, 0, 0, &x, &y); gtk_adjustment_set_value (hadj, MIN (x, gtk_adjustment_get_upper(hadj) - gtk_adjustment_get_page_size(hadj))); gtk_adjustment_set_value (vadj, MIN (y, gtk_adjustment_get_upper(vadj) - gtk_adjustment_get_page_size(vadj))); } return FALSE; }
//_____________________________________________ GdkRectangle ToolBarStateData::dirtyRect( void ) { GdkRectangle rect( Gtk::gdk_rectangle() ); Gtk::gdk_rectangle_union( &_previous._rect, &_current._rect, &rect ); // add _dirtyRect if( Gtk::gdk_rectangle_is_valid( &_dirtyRect ) ) { Gtk::gdk_rectangle_union( &_dirtyRect, &rect, &rect ); _dirtyRect = Gtk::gdk_rectangle(); } // add followMouse dirtyRect if( followMouse() ) { const GdkRectangle followMouseRect( FollowMouseData::dirtyRect() ); Gtk::gdk_rectangle_union( &followMouseRect, &rect, &rect ); } // check validity if( !Gtk::gdk_rectangle_is_valid( &rect ) ) return rect; /* Add viewport offsets if any */ if( GTK_IS_VIEWPORT( _target ) ) { gint xOffset, yOffset; Gtk::gtk_viewport_get_position( GTK_VIEWPORT( _target ), &xOffset, &yOffset ); rect.x -= xOffset; rect.y -= yOffset; } /* Add extra margin to rect. FIXME: this should be triggered from widget's metrics */ rect.x -= 2; rect.y -= 2; rect.width += 4; rect.height += 4; return rect; }