/usr/include/elementary-1/elm_widget_gengrid.h is in libelementary-dev 1.8.5-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 168 169 170 171 172 173 174 175 176 177 178 179 | #ifndef ELM_WIDGET_GENGRID_H
#define ELM_WIDGET_GENGRID_H
#include "elm_gen_common.h"
#include "Elementary.h"
/**
* @addtogroup Widget
* @{
*
* @section elm-gengrid-class The Elementary Gengrid Class
*
* Elementary, besides having the @ref Gengrid widget, exposes its
* foundation -- the Elementary Gengrid Class -- in order to create
* other widgets which are a gengrid with some more logic on top.
*/
/**
* Base widget smart data extended with gengrid instance data.
*/
typedef struct _Elm_Gengrid_Smart_Data Elm_Gengrid_Smart_Data;
struct _Elm_Gengrid_Smart_Data
{
Eina_Inlist_Sorted_State *state;
Evas_Object *hit_rect;
Evas_Object *pan_obj;
Evas_Object *obj; // the object itself
Evas_Object *stack; // stacking markers in pan for selectraise feature
Eina_List *selected; /* a list of
* selected
* items */
Eina_List *group_items; /* a list of
* groups index
* items */
Eina_Inlist *items; /* an inlist of all items */
Elm_Gen_Item *reorder_it; /* item currently
* being
* repositioned */
Elm_Object_Item *last_selected_item;
Elm_Gen_Item *show_it;
Elm_Gen_Item *bring_in_it;
Elm_Gengrid_Item_Scrollto_Type s_type;
Ecore_Job *calc_job;
int walking;
int item_width, item_height;
int group_item_width, group_item_height;
int minw, minh;
unsigned int item_count;
Evas_Coord pan_x, pan_y;
Elm_Object_Select_Mode select_mode;
Elm_Object_Multi_Select_Mode multi_select_mode; /**< select mode for multiple selection */
Ecore_Cb calc_cb;
Ecore_Cb clear_cb;
/* longpress timeout. this value comes from _elm_config by
* default. this can be changed by
* elm_config_longpress_timeout_set() */
double longpress_timeout;
/* a generation of gengrid. when gengrid is cleared, this value
* will be increased and a new generation will start */
int generation;
Eina_Compare_Cb item_compare_cb;
/* The stuff below directly come from gengrid without any thinking */
unsigned int nmax;
Evas_Coord reorder_item_x, reorder_item_y;
Evas_Coord old_pan_x, old_pan_y;
long items_lost;
double align_x, align_y;
Eina_Bool reorder_item_changed : 1;
Eina_Bool move_effect_enabled : 1;
Eina_Bool old_h_bounce;
Eina_Bool old_v_bounce;
/* a flag for reorder mode enable/disable */
Eina_Bool reorder_mode : 1;
Eina_Bool was_selected : 1;
Eina_Bool longpressed : 1;
Eina_Bool pan_changed : 1;
Eina_Bool horizontal : 1;
/* a flag for items can be highlighted or not. by default this flag
* is true. */
Eina_Bool highlight : 1;
Eina_Bool clear_me : 1; /**< a flag whether
* gengrid is marked
* as to be cleared or
* not. if this flag
* is true, gengrid
* clear was already
* deferred. */
Eina_Bool on_hold : 1;
Eina_Bool filled : 1;
Eina_Bool multi : 1; /* a flag for item
* multi
* selection */
Eina_Bool show_region : 1;
Eina_Bool bring_in : 1;
};
struct Elm_Gen_Item_Type
{
Elm_Gen_Item *it;
Elm_Gengrid_Smart_Data *wsd;
Ecore_Animator *item_reorder_move_animator;
Evas_Coord gx, gy, ox, oy, tx, ty, rx, ry;
unsigned int moving_effect_start_time;
int prev_group;
Eina_Bool group_realized : 1;
Eina_Bool moving : 1;
};
typedef struct _Elm_Gengrid_Pan_Smart_Data Elm_Gengrid_Pan_Smart_Data;
struct _Elm_Gengrid_Pan_Smart_Data
{
Evas_Object *wobj;
Elm_Gengrid_Smart_Data *wsd;
Ecore_Job *resize_job;
};
/**
* @}
*/
#define ELM_GENGRID_DATA_GET(o, sd) \
Elm_Gengrid_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_GENGRID_CLASS)
#define ELM_GENGRID_PAN_DATA_GET(o, sd) \
Elm_Gengrid_Pan_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_GENGRID_PAN_CLASS)
#define ELM_GENGRID_DATA_GET_OR_RETURN(o, ptr) \
ELM_GENGRID_DATA_GET(o, ptr); \
if (!ptr) \
{ \
CRITICAL("No widget data for object %p (%s)", \
o, evas_object_type_get(o)); \
return; \
}
#define ELM_GENGRID_DATA_GET_OR_RETURN_VAL(o, ptr, val) \
ELM_GENGRID_DATA_GET(o, ptr); \
if (!ptr) \
{ \
CRITICAL("No widget data for object %p (%s)", \
o, evas_object_type_get(o)); \
return val; \
}
#define ELM_GENGRID_CHECK(obj) \
if (!eo_isa((obj), ELM_OBJ_GENGRID_CLASS)) \
return
#define ELM_GENGRID_ITEM_CHECK(it) \
ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item *)it, ); \
ELM_GENGRID_CHECK(it->base.widget);
#define ELM_GENGRID_ITEM_CHECK_OR_RETURN(it, ...) \
ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item *)it, __VA_ARGS__); \
ELM_GENGRID_CHECK(it->base.widget) __VA_ARGS__;
#define ELM_GENGRID_ITEM_CHECK_OR_GOTO(it, label) \
ELM_WIDGET_ITEM_CHECK_OR_GOTO((Elm_Widget_Item *)it, label); \
if (!it->base.widget || !eo_isa \
((it->base.widget), ELM_OBJ_GENGRID_CLASS)) goto label;
#endif
|