1 /* gtkiconview.h 2 * Copyright (C) 2002, 2004 Anders Carlsson <andersca@gnome.org> 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public 15 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #include "gtk/gtkiconview.h" 19 #include "gtk/gtkcssnodeprivate.h" 20 21 #ifndef __GTK_ICON_VIEW_PRIVATE_H__ 22 #define __GTK_ICON_VIEW_PRIVATE_H__ 23 24 typedef struct _GtkIconViewItem GtkIconViewItem; 25 struct _GtkIconViewItem 26 { 27 GdkRectangle cell_area; 28 29 gint index; 30 31 gint row, col; 32 33 guint selected : 1; 34 guint selected_before_rubberbanding : 1; 35 36 }; 37 38 struct _GtkIconViewPrivate 39 { 40 GtkCellArea *cell_area; 41 GtkCellAreaContext *cell_area_context; 42 43 gulong add_editable_id; 44 gulong remove_editable_id; 45 gulong context_changed_id; 46 47 GPtrArray *row_contexts; 48 49 gint width, height; 50 51 GtkSelectionMode selection_mode; 52 53 GdkWindow *bin_window; 54 55 GList *children; 56 57 GtkTreeModel *model; 58 59 GList *items; 60 61 GtkAdjustment *hadjustment; 62 GtkAdjustment *vadjustment; 63 64 gint rubberband_x1, rubberband_y1; 65 gint rubberband_x2, rubberband_y2; 66 GdkDevice *rubberband_device; 67 GtkCssNode *rubberband_node; 68 69 guint scroll_timeout_id; 70 gint scroll_value_diff; 71 gint event_last_x, event_last_y; 72 73 GtkIconViewItem *anchor_item; 74 GtkIconViewItem *cursor_item; 75 76 GtkIconViewItem *last_single_clicked; 77 GtkIconViewItem *last_prelight; 78 79 GtkOrientation item_orientation; 80 81 gint columns; 82 gint item_width; 83 gint spacing; 84 gint row_spacing; 85 gint column_spacing; 86 gint margin; 87 gint item_padding; 88 89 gint text_column; 90 gint markup_column; 91 gint pixbuf_column; 92 gint tooltip_column; 93 94 GtkCellRenderer *pixbuf_cell; 95 GtkCellRenderer *text_cell; 96 97 /* Drag-and-drop. */ 98 GdkModifierType start_button_mask; 99 gint pressed_button; 100 gint press_start_x; 101 gint press_start_y; 102 103 GdkDragAction source_actions; 104 GdkDragAction dest_actions; 105 106 GtkTreeRowReference *dest_item; 107 GtkIconViewDropPosition dest_pos; 108 109 /* scroll to */ 110 GtkTreeRowReference *scroll_to_path; 111 gfloat scroll_to_row_align; 112 gfloat scroll_to_col_align; 113 guint scroll_to_use_align : 1; 114 115 guint source_set : 1; 116 guint dest_set : 1; 117 guint reorderable : 1; 118 guint empty_view_drop :1; 119 guint activate_on_single_click : 1; 120 121 guint modify_selection_pressed : 1; 122 guint extend_selection_pressed : 1; 123 124 guint draw_focus : 1; 125 126 /* GtkScrollablePolicy needs to be checked when 127 * driving the scrollable adjustment values */ 128 guint hscroll_policy : 1; 129 guint vscroll_policy : 1; 130 131 guint doing_rubberband : 1; 132 133 }; 134 135 void _gtk_icon_view_set_cell_data (GtkIconView *icon_view, 136 GtkIconViewItem *item); 137 void _gtk_icon_view_set_cursor_item (GtkIconView *icon_view, 138 GtkIconViewItem *item, 139 GtkCellRenderer *cursor_cell); 140 GtkIconViewItem * _gtk_icon_view_get_item_at_coords (GtkIconView *icon_view, 141 gint x, 142 gint y, 143 gboolean only_in_cell, 144 GtkCellRenderer **cell_at_pos); 145 void _gtk_icon_view_select_item (GtkIconView *icon_view, 146 GtkIconViewItem *item); 147 void _gtk_icon_view_unselect_item (GtkIconView *icon_view, 148 GtkIconViewItem *item); 149 150 G_END_DECLS 151 152 #endif /* __GTK_ICON_VIEW_PRIVATE_H__ */ 153