static void gtk_icon_view_item_accessible_get_image_size (AtkImage *image, gint *width, gint *height) { GtkIconViewItemAccessible *item; GdkRectangle box; item = GTK_ICON_VIEW_ITEM_ACCESSIBLE (image); if (!GTK_IS_ICON_VIEW (item->widget)) return; if (atk_state_set_contains_state (item->state_set, ATK_STATE_DEFUNCT)) return; *width = 0; *height = 0; if (get_pixbuf_box (GTK_ICON_VIEW (item->widget), item->item, &box)) { *width = box.width; *height = box.height; } }
static void gtk_icon_view_item_accessible_get_image_position (AtkImage *image, gint *x, gint *y, AtkCoordType coord_type) { GtkIconViewItemAccessible *item; GdkRectangle box; item = GTK_ICON_VIEW_ITEM_ACCESSIBLE (image); if (!GTK_IS_ICON_VIEW (item->widget)) return; if (atk_state_set_contains_state (item->state_set, ATK_STATE_DEFUNCT)) return; atk_component_get_position (ATK_COMPONENT (image), x, y, coord_type); if (get_pixbuf_box (GTK_ICON_VIEW (item->widget), item->item, &box)) { *x+= box.x - item->item->cell_area.x; *y+= box.y - item->item->cell_area.y; } }
void setup(GtkWidget *widget) { GtkWidgetProps props(widget); if (widget && GTK_IS_SCROLLED_WINDOW(widget) && !props->scrolledWindowHacked) { GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(widget); GtkWidget *child; if ((child = gtk_scrolled_window_get_hscrollbar(scrolledWindow))) { setupConnections(child, widget); } if ((child = gtk_scrolled_window_get_vscrollbar(scrolledWindow))) { setupConnections(child, widget); } if ((child = gtk_bin_get_child(GTK_BIN(widget)))) { if (GTK_IS_TREE_VIEW(child) || GTK_IS_TEXT_VIEW(child) || GTK_IS_ICON_VIEW(child)) { setupConnections(child, widget); } else if (oneOf(gTypeName(child), "ExoIconView", "FMIconContainer")) { setupConnections(child, widget); } } props->scrolledWindowHacked = true; } }
void qtcScrolledWindowSetup(GtkWidget *widget) { if (widget && GTK_IS_SCROLLED_WINDOW(widget) && !g_object_get_data(G_OBJECT(widget), "QTC_SCROLLED_WINDOW_SET")) { GtkScrolledWindow *scrolledWindow=GTK_SCROLLED_WINDOW(widget); GtkWidget *child; if((child=gtk_scrolled_window_get_hscrollbar(scrolledWindow))) qtcScrolledWindowSetupConnections(child, widget); if((child=gtk_scrolled_window_get_vscrollbar(scrolledWindow))) qtcScrolledWindowSetupConnections(child, widget); if((child=gtk_bin_get_child(GTK_BIN(widget)))) { if(GTK_IS_TREE_VIEW(child) || GTK_IS_TEXT_VIEW(child) || GTK_IS_ICON_VIEW(child)) qtcScrolledWindowSetupConnections(child, widget); else { const gchar *type=g_type_name(qtcWidgetType(child)); if(type && (0==strcmp(type, "ExoIconView") || 0==strcmp(type, "FMIconContainer"))) qtcScrolledWindowSetupConnections(child, widget); } } g_object_set_data(G_OBJECT(widget), "QTC_SCROLLED_WINDOW_SET", (gpointer)1); } }
static HCPApp * hcp_app_view_get_selected_app (GtkWidget *widget, GtkTreePath *path) { GtkTreeModel *model; HCPApp *app = NULL; GtkTreeIter iter; gint item_pos; g_return_val_if_fail (widget, NULL); g_return_val_if_fail (GTK_IS_ICON_VIEW (widget), NULL); g_return_val_if_fail (path, NULL); model = gtk_icon_view_get_model (GTK_ICON_VIEW (widget)); if (path == NULL) return NULL; item_pos = gtk_tree_path_get_indices (path) [0]; if (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (model), &iter, NULL, item_pos)) { gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, HCP_STORE_APP, &app, -1); } return app; }
static GtkTreeModel * gtk_cell_layout_get_model (GtkCellLayout *layout) { if (GTK_IS_TREE_VIEW_COLUMN (layout)) return gtk_tree_view_get_model (GTK_TREE_VIEW (gtk_tree_view_column_get_tree_view (GTK_TREE_VIEW_COLUMN (layout)))); else if (GTK_IS_ICON_VIEW (layout)) return gtk_icon_view_get_model (GTK_ICON_VIEW (layout)); else if (GTK_IS_COMBO_BOX (layout)) return gtk_combo_box_get_model (GTK_COMBO_BOX (layout)); else return NULL; }
static gint gtk_icon_view_item_accessible_get_offset_at_point (AtkText *text, gint x, gint y, AtkCoordType coord_type) { GtkIconViewItemAccessible *item; gint offset = 0; #if 0 GtkIconView *icon_view; const gchar *item_text; gint index; gint l_x, l_y; #endif item = GTK_ICON_VIEW_ITEM_ACCESSIBLE (text); if (!GTK_IS_ICON_VIEW (item->widget)) return -1; if (atk_state_set_contains_state (item->state_set, ATK_STATE_DEFUNCT)) return -1; #if 0 icon_view = GTK_ICON_VIEW (item->widget); /* FIXME we probably have to use GailTextCell to salvage this */ gtk_icon_view_update_item_text (icon_view, item->item); atk_component_get_position (ATK_COMPONENT (text), &l_x, &l_y, coord_type); x -= l_x + item->item->layout_x - item->item->x; x += ((item->item->width - item->item->layout_width) / 2) + (MAX (item->item->pixbuf_width, icon_view->priv->item_width) - item->item->width) / 2, y -= l_y + item->item->layout_y - item->item->y; item_text = pango_layout_get_text (icon_view->priv->layout); if (!pango_layout_xy_to_index (icon_view->priv->layout, x * PANGO_SCALE, y * PANGO_SCALE, &index, NULL)) { if (x < 0 || y < 0) index = 0; else index = -1; } if (index == -1) offset = g_utf8_strlen (item_text, -1); else offset = g_utf8_pointer_to_offset (item_text, item_text + index); #endif return offset; }
static GladeWidget * get_model_widget (GladeWidget * view) { GtkTreeModel *model = NULL; GObject *object = glade_widget_get_object (view); if (GTK_IS_TREE_VIEW (object)) model = gtk_tree_view_get_model (GTK_TREE_VIEW (object)); else if (GTK_IS_ICON_VIEW (object)) model = gtk_icon_view_get_model (GTK_ICON_VIEW (object)); else if (GTK_IS_COMBO_BOX (object)) model = gtk_combo_box_get_model (GTK_COMBO_BOX (object)); if (model) return glade_widget_get_from_gobject (model); return NULL; }
static void gtk_icon_view_item_accessible_get_character_extents (AtkText *text, gint offset, gint *x, gint *y, gint *width, gint *height, AtkCoordType coord_type) { GtkIconViewItemAccessible *item; #if 0 GtkIconView *icon_view; PangoRectangle char_rect; const gchar *item_text; gint index; #endif item = GTK_ICON_VIEW_ITEM_ACCESSIBLE (text); if (!GTK_IS_ICON_VIEW (item->widget)) return; if (atk_state_set_contains_state (item->state_set, ATK_STATE_DEFUNCT)) return; #if 0 icon_view = GTK_ICON_VIEW (item->widget); /* FIXME we probably have to use GailTextCell to salvage this */ gtk_icon_view_update_item_text (icon_view, item->item); item_text = pango_layout_get_text (icon_view->priv->layout); index = g_utf8_offset_to_pointer (item_text, offset) - item_text; pango_layout_index_to_pos (icon_view->priv->layout, index, &char_rect); atk_component_get_position (ATK_COMPONENT (text), x, y, coord_type); *x += item->item->layout_x - item->item->x + char_rect.x / PANGO_SCALE; /* Look at gtk_icon_view_paint_item() to see where the text is. */ *x -= ((item->item->width - item->item->layout_width) / 2) + (MAX (item->item->pixbuf_width, icon_view->priv->item_width) - item->item->width) / 2, *y += item->item->layout_y - item->item->y + char_rect.y / PANGO_SCALE; *width = char_rect.width / PANGO_SCALE; *height = char_rect.height / PANGO_SCALE; #endif }
static gboolean gtk_icon_view_item_accessible_do_action (AtkAction *action, gint i) { GtkIconViewItemAccessible *item; if (i != 0) return FALSE; item = GTK_ICON_VIEW_ITEM_ACCESSIBLE (action); if (!GTK_IS_ICON_VIEW (item->widget)) return FALSE; if (atk_state_set_contains_state (item->state_set, ATK_STATE_DEFUNCT)) return FALSE; if (!item->action_idle_handler) item->action_idle_handler = gdk_threads_add_idle (idle_do_action, item); return TRUE; }
static gboolean gtk_icon_view_item_accessible_is_showing (GtkIconViewItemAccessible *item) { GtkAllocation allocation; GtkIconView *icon_view; GdkRectangle visible_rect; gboolean is_showing; /* An item is considered "SHOWING" if any part of the item * is in the visible rectangle. */ if (!GTK_IS_ICON_VIEW (item->widget)) return FALSE; if (item->item == NULL) return FALSE; gtk_widget_get_allocation (item->widget, &allocation); icon_view = GTK_ICON_VIEW (item->widget); visible_rect.x = 0; if (icon_view->priv->hadjustment) visible_rect.x += gtk_adjustment_get_value (icon_view->priv->hadjustment); visible_rect.y = 0; if (icon_view->priv->hadjustment) visible_rect.y += gtk_adjustment_get_value (icon_view->priv->vadjustment); visible_rect.width = allocation.width; visible_rect.height = allocation.height; if (((item->item->cell_area.x + item->item->cell_area.width) < visible_rect.x) || ((item->item->cell_area.y + item->item->cell_area.height) < (visible_rect.y)) || (item->item->cell_area.x > (visible_rect.x + visible_rect.width)) || (item->item->cell_area.y > (visible_rect.y + visible_rect.height))) is_showing = FALSE; else is_showing = TRUE; return is_showing; }