2 * Copyright (C) 2002, 2004 Anders Carlsson <andersca@gnome.org>
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.
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.
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/>.
18 #include "gtk/gtkiconview.h"
20 #ifndef __GTK_ICON_VIEW_PRIVATE_H__
21 #define __GTK_ICON_VIEW_PRIVATE_H__
23 typedef struct _GtkIconViewItem GtkIconViewItem;
24 struct _GtkIconViewItem
26 /* First member is always the rectangle so it
27 * can be cast to a rectangle. */
28 GdkRectangle cell_area;
37 guint selected_before_rubberbanding : 1;
41 struct _GtkIconViewPrivate
43 GtkCellArea *cell_area;
44 GtkCellAreaContext *cell_area_context;
46 gulong add_editable_id;
47 gulong remove_editable_id;
48 gulong context_changed_id;
50 GPtrArray *row_contexts;
54 GtkSelectionMode selection_mode;
58 GdkWindow *bin_window;
66 GtkAdjustment *hadjustment;
67 GtkAdjustment *vadjustment;
69 gint rubberband_x1, rubberband_y1;
70 gint rubberband_x2, rubberband_y2;
71 GdkDevice *rubberband_device;
73 guint scroll_timeout_id;
74 gint scroll_value_diff;
75 gint event_last_x, event_last_y;
77 GtkIconViewItem *anchor_item;
78 GtkIconViewItem *cursor_item;
80 GtkIconViewItem *last_single_clicked;
81 GtkIconViewItem *last_prelight;
83 GtkOrientation item_orientation;
98 GtkCellRenderer *pixbuf_cell;
99 GtkCellRenderer *text_cell;
102 GdkModifierType start_button_mask;
107 GdkDragAction source_actions;
108 GdkDragAction dest_actions;
110 GtkTreeRowReference *dest_item;
111 GtkIconViewDropPosition dest_pos;
114 GtkTreeRowReference *scroll_to_path;
115 gfloat scroll_to_row_align;
116 gfloat scroll_to_col_align;
117 guint scroll_to_use_align : 1;
119 guint source_set : 1;
121 guint reorderable : 1;
122 guint empty_view_drop :1;
124 guint modify_selection_pressed : 1;
125 guint extend_selection_pressed : 1;
127 guint draw_focus : 1;
129 /* GtkScrollablePolicy needs to be checked when
130 * driving the scrollable adjustment values */
131 guint hscroll_policy : 1;
132 guint vscroll_policy : 1;
134 guint doing_rubberband : 1;
138 void _gtk_icon_view_set_cell_data (GtkIconView *icon_view,
139 GtkIconViewItem *item);
140 void _gtk_icon_view_set_cursor_item (GtkIconView *icon_view,
141 GtkIconViewItem *item,
142 GtkCellRenderer *cursor_cell);
143 GtkIconViewItem * _gtk_icon_view_get_item_at_coords (GtkIconView *icon_view,
146 gboolean only_in_cell,
147 GtkCellRenderer **cell_at_pos);
148 void _gtk_icon_view_select_item (GtkIconView *icon_view,
149 GtkIconViewItem *item);
150 void _gtk_icon_view_unselect_item (GtkIconView *icon_view,
151 GtkIconViewItem *item);
155 #endif /* __GTK_ICON_VIEW_PRIVATE_H__ */