summaryrefslogtreecommitdiff
path: root/src/lib/elm_scroll.h
blob: feb541c277581ecf877a402d55661f972672366d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/**
 * @defgroup Scrollhints Scrollhints
 * @ingroup Elementary
 *
 * Objects when inside a scroller can scroll, but this may not always be
 * desirable in certain situations. This allows an object to hint to itself
 * and parents to "not scroll" in one of 2 ways. If any child object of a
 * scroller has pushed a scroll freeze or hold then it affects all parent
 * scrollers until all children have released them.
 *
 * 1. To hold on scrolling. This means just flicking and dragging may no
 * longer scroll, but pressing/dragging near an edge of the scroller will
 * still scroll. This is automatically used by the entry object when
 * selecting text.
 *
 * 2. To totally freeze scrolling. This means it stops. until
 * popped/released.
 *
 * @{
 */

/**
 * Push the scroll hold by 1
 *
 * This increments the scroll hold count by one. If it is more than 0 it will
 * take effect on the parents of the indicated object.
 *
 * @param obj The object
 * @ingroup Scrollhints
 */
EAPI void      elm_object_scroll_hold_push(Evas_Object *obj);

/**
 * Pop the scroll hold by 1
 *
 * This decrements the scroll hold count by one. If it is more than 0 it will
 * take effect on the parents of the indicated object.
 *
 * @param obj The object
 * @ingroup Scrollhints
 */
EAPI void      elm_object_scroll_hold_pop(Evas_Object *obj);

/**
 * Get the scroll hold by 1
 *
 * This gets the scroll hold count by one.
 *
 * @param obj The object
 * @return The scroll hold count
 * @since 1.7
 * @ingroup Scrollhints
 */
EAPI int       elm_object_scroll_hold_get(const Evas_Object *obj);

/**
 * Push the scroll freeze by 1
 *
 * This increments the scroll freeze count by one. If it is more
 * than 0 it will take effect on the parents of the indicated
 * object.
 *
 * @param obj The object
 * @ingroup Scrollhints
 */
EAPI void      elm_object_scroll_freeze_push(Evas_Object *obj);

/**
 * Pop the scroll freeze by 1
 *
 * This decrements the scroll freeze count by one. If it is more
 * than 0 it will take effect on the parents of the indicated
 * object.
 *
 * @param obj The object
 * @ingroup Scrollhints
 */
EAPI void      elm_object_scroll_freeze_pop(Evas_Object *obj);

/**
 * Get the scroll freeze by 1
 *
 * This gets the scroll freeze count by one.
 *
 * @param obj The object
 * @return The scroll freeze count
 * @since 1.7
 * @ingroup Scrollhints
 */
EAPI int       elm_object_scroll_freeze_get(const Evas_Object *obj);

/**
 * Lock the scrolling of the given widget (and thus all parents)
 *
 * This locks the given object from scrolling in the X axis (and implicitly
 * also locks all parent scrollers too from doing the same).
 *
 * @param obj The object
 * @param lock The lock state (1 == locked, 0 == unlocked)
 * @ingroup Scrollhints
 */
EAPI void      elm_object_scroll_lock_x_set(Evas_Object *obj, Eina_Bool lock);

/**
 * Lock the scrolling of the given widget (and thus all parents)
 *
 * This locks the given object from scrolling in the Y axis (and implicitly
 * also locks all parent scrollers too from doing the same).
 *
 * @param obj The object
 * @param lock The lock state (1 == locked, 0 == unlocked)
 * @ingroup Scrollhints
 */
EAPI void      elm_object_scroll_lock_y_set(Evas_Object *obj, Eina_Bool lock);

/**
 * Get the scrolling lock of the given widget
 *
 * This gets the lock for X axis scrolling.
 *
 * @param obj The object
 * @ingroup Scrollhints
 */
EAPI Eina_Bool elm_object_scroll_lock_x_get(const Evas_Object *obj);

/**
 * Get the scrolling lock of the given widget
 *
 * This gets the lock for Y axis scrolling.
 *
 * @param obj The object
 * @ingroup Scrollhints
 */
EAPI Eina_Bool elm_object_scroll_lock_y_get(const Evas_Object *obj);

/**
 * Enable item loop feature of the given widget
 *
 * If @p enable is @c EINA_TRUE, item selection/focus will loop internally.
 * This means if arrow keys are pressed at end of scroller's item,
 * screen is moved to opposite side.
 *
 * @param obj The object
 * @param enable item loop feature (@c EINA_TRUE == enable, @c EINA_FALSE == disable)
 *
 * @see elm_object_scroll_item_loop_enabled_get()
 * @since 1.10
 * @ingroup Scrollitem
 */
EAPI void      elm_object_scroll_item_loop_enabled_set(Evas_Object *obj, Eina_Bool enable);

/**
 * Get the item loop enable status of the given widget
 *
 * This gets the item loop enabled status.
 *
 * @param obj The object
 *
 * @see elm_objecdt_scroll_item_enabled_set()
 * @since 1.10
 * @ingroup Scrollitem
 */
EAPI Eina_Bool elm_object_scroll_item_loop_enabled_get(const Evas_Object *obj);

/**
 * @}
 */