1 | /* |
2 | * Copyright © 2019 Benjamin Otte |
3 | * |
4 | * This library is free software; you can redistribute it and/or |
5 | * modify it under the terms of the GNU Lesser General Public |
6 | * License as published by the Free Software Foundation; either |
7 | * version 2.1 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 | * Lesser General Public License for more details. |
13 | * |
14 | * You should have received a copy of the GNU Lesser General Public |
15 | * License along with this library. If not, see <http://www.gnu.org/licenses/>. |
16 | * |
17 | * Authors: Benjamin Otte <otte@gnome.org> |
18 | */ |
19 | |
20 | #ifndef __GTK_LIST_BASE_PRIVATE_H__ |
21 | #define __GTK_LIST_BASE_PRIVATE_H__ |
22 | |
23 | #include "gtklistbase.h" |
24 | |
25 | #include "gtklistitemmanagerprivate.h" |
26 | #include "gtkprivate.h" |
27 | |
28 | struct _GtkListBase |
29 | { |
30 | GtkWidget parent_instance; |
31 | }; |
32 | |
33 | struct _GtkListBaseClass |
34 | { |
35 | GtkWidgetClass parent_class; |
36 | |
37 | const char * list_item_name; |
38 | GtkAccessibleRole list_item_role; |
39 | gsize list_item_size; |
40 | gsize list_item_augment_size; |
41 | GtkRbTreeAugmentFunc list_item_augment_func; |
42 | |
43 | void (* adjustment_value_changed) (GtkListBase *self, |
44 | GtkOrientation orientation); |
45 | gboolean (* get_allocation_along) (GtkListBase *self, |
46 | guint pos, |
47 | int *offset, |
48 | int *size); |
49 | gboolean (* get_allocation_across) (GtkListBase *self, |
50 | guint pos, |
51 | int *offset, |
52 | int *size); |
53 | gboolean (* get_position_from_allocation) (GtkListBase *self, |
54 | int across, |
55 | int along, |
56 | guint *pos, |
57 | cairo_rectangle_int_t *area); |
58 | GtkBitset * (* get_items_in_rect) (GtkListBase *self, |
59 | const cairo_rectangle_int_t *rect); |
60 | guint (* move_focus_along) (GtkListBase *self, |
61 | guint pos, |
62 | int steps); |
63 | guint (* move_focus_across) (GtkListBase *self, |
64 | guint pos, |
65 | int steps); |
66 | }; |
67 | |
68 | GtkOrientation gtk_list_base_get_orientation (GtkListBase *self); |
69 | #define gtk_list_base_get_opposite_orientation(self) OPPOSITE_ORIENTATION(gtk_list_base_get_orientation(self)) |
70 | guint gtk_list_base_get_focus_position (GtkListBase *self); |
71 | GtkListItemManager * gtk_list_base_get_manager (GtkListBase *self); |
72 | GtkScrollablePolicy gtk_list_base_get_scroll_policy (GtkListBase *self, |
73 | GtkOrientation orientation); |
74 | guint gtk_list_base_get_n_items (GtkListBase *self); |
75 | GtkSelectionModel * gtk_list_base_get_model (GtkListBase *self); |
76 | gboolean gtk_list_base_set_model (GtkListBase *self, |
77 | GtkSelectionModel *model); |
78 | void gtk_list_base_update_adjustments (GtkListBase *self, |
79 | int total_across, |
80 | int total_along, |
81 | int page_across, |
82 | int page_along, |
83 | int *across, |
84 | int *along); |
85 | |
86 | guint gtk_list_base_get_anchor (GtkListBase *self); |
87 | void gtk_list_base_set_anchor (GtkListBase *self, |
88 | guint anchor_pos, |
89 | double anchor_align_across, |
90 | GtkPackType anchor_side_across, |
91 | double anchor_align_along, |
92 | GtkPackType anchor_side_along); |
93 | void gtk_list_base_set_anchor_max_widgets (GtkListBase *self, |
94 | guint n_center, |
95 | guint n_above_below); |
96 | void gtk_list_base_select_item (GtkListBase *self, |
97 | guint pos, |
98 | gboolean modify, |
99 | gboolean extend); |
100 | gboolean gtk_list_base_grab_focus_on_item (GtkListBase *self, |
101 | guint pos, |
102 | gboolean select, |
103 | gboolean modify, |
104 | gboolean extend); |
105 | |
106 | void gtk_list_base_set_enable_rubberband (GtkListBase *self, |
107 | gboolean enable); |
108 | gboolean gtk_list_base_get_enable_rubberband (GtkListBase *self); |
109 | void gtk_list_base_allocate_rubberband (GtkListBase *self); |
110 | |
111 | void gtk_list_base_size_allocate_child (GtkListBase *self, |
112 | GtkWidget *child, |
113 | int x, |
114 | int y, |
115 | int width, |
116 | int height); |
117 | |
118 | #endif /* __GTK_LIST_BASE_PRIVATE_H__ */ |
119 | |