group "Elm_Config" struct {
+ value "config_version" int: 65537;
value "engine" int: 0;
value "thumbscroll_enable" int: 1;
value "thumbscroll_threshhold" int: 24;
group "Elm_Config" struct {
+ value "config_version" int: 65537;
value "engine" int: 0;
value "thumbscroll_enable" int: 1;
value "thumbscroll_threshhold" int: 24;
group "Elm_Config" struct {
+ value "config_version" int: 65537;
value "engine" int: 0;
value "thumbscroll_enable" int: 1;
value "thumbscroll_threshhold" int: 4;
}
void
+my_fl_7(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *fl = data;
+ elm_flip_go(fl, ELM_FLIP_CUBE_UP);
+}
+void
+my_fl_8(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *fl = data;
+ elm_flip_go(fl, ELM_FLIP_CUBE_DOWN);
+}
+void
test_flip(void *data, Evas_Object *obj, void *event_info)
{
Evas_Object *win, *bg, *bx, *bx2, *fl, *o, *bt, *ly;
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
+ elm_box_pack_end(bx, bx2);
+ evas_object_show(bx2);
+ bx2 = elm_box_add(win);
+ elm_box_horizontal_set(bx2, 1);
+ evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
bt = elm_button_add(win);
elm_button_label_set(bt, "5");
evas_object_smart_callback_add(bt, "clicked", my_fl_5, fl);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "7");
+ evas_object_smart_callback_add(bt, "clicked", my_fl_7, fl);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "8");
+ evas_object_smart_callback_add(bt, "clicked", my_fl_8, fl);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
elm_box_pack_end(bx, bx2);
evas_object_show(bx2);
void
test_flip3(void *data, Evas_Object *obj, void *event_info)
{
- Evas_Object *win, *bg, *bx, *bx2, *bx3, *bx4, *bx5, *fl, *fl_f, *fl_b, *o,
- *bt, *ly, *lb;
+ Evas_Object *win, *bg, *bx, *bx2, *fl, *fl_f, *fl_b, *o, *bt, *fr;
char buf[PATH_MAX];
win = elm_win_add(NULL, "flip flip", ELM_WIN_BASIC);
evas_object_size_hint_align_set(fl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, fl);
+ evas_object_show(fl);
- bx3 = elm_box_add(win);
- evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(bx3);
+ fr = elm_frame_add(win);
+ elm_frame_label_set(fr, "Front");
+ evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_flip_content_front_set(fl, fr);
+ evas_object_show(fr);
fl_f = elm_flip_add(win);
evas_object_size_hint_align_set(fl_f, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fl_f, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- bx5 = elm_box_add(win);
- evas_object_size_hint_align_set(bx5, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(bx5, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(bx5);
+ elm_frame_content_set(fr, fl_f);
+ evas_object_show(fl_f);
o = elm_bg_add(win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, "sky_01.jpg");
elm_bg_file_set(o, buf, NULL);
+ elm_flip_content_front_set(fl_f, o);
evas_object_show(o);
- elm_box_pack_end(bx5, o);
- lb = elm_label_add(win);
- evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0);
- elm_label_label_set(lb, "Front Flip - Front");
- evas_object_show(lb);
- elm_box_pack_end(bx5, lb);
- elm_flip_content_front_set(fl_f, bx5);
- bx5 = elm_box_add(win);
- evas_object_size_hint_align_set(bx5, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(bx5, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(bx5);
o = elm_bg_add(win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, "sky_02.jpg");
elm_bg_file_set(o, buf, NULL);
+ elm_flip_content_back_set(fl_f, o);
evas_object_show(o);
- elm_box_pack_end(bx5, o);
- lb = elm_label_add(win);
- evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0);
- elm_label_label_set(lb, "Front Flip - Back");
- evas_object_show(lb);
- elm_box_pack_end(bx5, lb);
+ fr = elm_frame_add(win);
+ elm_frame_label_set(fr, "Back");
- elm_flip_content_back_set(fl_f, bx5);
- evas_object_show(fl_f);
- elm_box_pack_end(bx3, fl_f);
- lb = elm_label_add(win);
- evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0);
- elm_label_label_set(lb, "Main Flip - Front");
- evas_object_show(lb);
- elm_box_pack_end(bx3, lb);
+ evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_flip_content_back_set(fl, fr);
- bx4 = elm_box_add(win);
- evas_object_size_hint_weight_set(bx4, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(bx4);
+ evas_object_show(fr);
fl_b = elm_flip_add(win);
evas_object_size_hint_align_set(fl_b, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fl_b, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- bx5 = elm_box_add(win);
- evas_object_size_hint_align_set(bx5, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(bx5, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(bx5);
+ elm_frame_content_set(fr, fl_b);
+ evas_object_show(fl_b);
o = elm_bg_add(win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, "sky_03.jpg");
elm_bg_file_set(o, buf, NULL);
+ elm_flip_content_front_set(fl_b, o);
evas_object_show(o);
- elm_box_pack_end(bx5, o);
- lb = elm_label_add(win);
- evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0);
- elm_label_label_set(lb, "Back Flip - Front");
- evas_object_show(lb);
- elm_box_pack_end(bx5, lb);
- elm_flip_content_front_set(fl_b, bx5);
- bx5 = elm_box_add(win);
- evas_object_size_hint_align_set(bx5, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(bx5, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(bx5);
o = elm_bg_add(win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, "sky_04.jpg");
elm_bg_file_set(o, buf, NULL);
+ elm_flip_content_back_set(fl_b, o);
evas_object_show(o);
- elm_box_pack_end(bx5, o);
- lb = elm_label_add(win);
- evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0);
- elm_label_label_set(lb, "Back Flip - Back");
- evas_object_show(lb);
- elm_box_pack_end(bx5, lb);
- elm_flip_content_back_set(fl_b, bx5);
- evas_object_show(fl_b);
- elm_box_pack_end(bx4, fl_b);
- lb = elm_label_add(win);
- evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0);
- elm_label_label_set(lb, "Main Flip - Back");
- elm_box_pack_end(bx4, lb);
- evas_object_show(lb);
- elm_flip_content_front_set(fl, bx3);
- elm_flip_content_back_set(fl, bx4);
- evas_object_show(fl);
bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, 1);
bt = elm_button_add(win);
elm_button_label_set(bt, "Main Flip");
- evas_object_smart_callback_add(bt, "clicked", my_fl_1, fl);
+ evas_object_smart_callback_add(bt, "clicked", my_fl_6, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
bt = elm_button_add(win);
elm_button_label_set(bt, "Front Flip");
- evas_object_smart_callback_add(bt, "clicked", my_fl_1, fl_f);
+ evas_object_smart_callback_add(bt, "clicked", my_fl_6, fl_f);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
bt = elm_button_add(win);
elm_button_label_set(bt, "Back Flip");
- evas_object_smart_callback_add(bt, "clicked", my_fl_1, fl_b);
+ evas_object_smart_callback_add(bt, "clicked", my_fl_6, fl_b);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
ELM_FLIP_ROTATE_XZ_CENTER_AXIS,
ELM_FLIP_ROTATE_YZ_CENTER_AXIS,
ELM_FLIP_CUBE_LEFT,
- ELM_FLIP_CUBE_RIGHT
+ ELM_FLIP_CUBE_RIGHT,
+ ELM_FLIP_CUBE_UP,
+ ELM_FLIP_CUBE_DOWN
} Elm_Flip_Mode;
EAPI Evas_Object *elm_flip_add(Evas_Object *parent);
static void _profile_get(void);
static void _config_free(void);
static void _config_apply(void);
+static Elm_Config * _config_user_load(void);
+static Elm_Config * _config_system_load(void);
static void _config_load(void);
+static void _config_update(void);
static void _env_get(void);
#ifdef HAVE_ELEMENTARY_X
config_data = eet_data_descriptor_decode(_config_edd, data, size);
free(data);
if (!config_data) return EINA_FALSE;
+ /* What do we do on version mismatch when someone changes the
+ * config in the rootwindow? */
+ /* Most obvious case, new version and we are still linked to
+ * whatever was there before, we just ignore until user restarts us */
+ if (config_data->config_version > ELM_CONFIG_VERSION)
+ return EINA_TRUE;
+/* What in the case the version is older? Do we even support those
+* cases or we only check for equality above? */
_config_free();
_elm_config = config_data;
_config_apply();
val = ecore_x_window_prop_string_get(event->win,
event->atom);
- eina_stringshare_replace(&_elm_config->theme, val);
if (val)
{
int changed = 0;
printf("EEEK! eet_data_descriptor_file_new() failed\n");
return;
}
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config, "config_version", config_version, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config, "engine", engine, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config, "thumbscroll_enable", thumbscroll_enable, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config, "thumbscroll_threshhold", thumbscroll_threshhold, EET_T_INT);
edje_autoperiod_allow_set(_elm_config->autoperiod_allow);
}
-static void
-_config_load(void)
+static Elm_Config *
+_config_user_load(void)
{
- Eet_File *ef = NULL;
+ Elm_Config *cfg = NULL;
+ Eet_File *ef;
char buf[PATH_MAX];
- const char *home = NULL;
-
+ const char *home;
+
home = getenv("HOME");
- if (!home) home = "/";
-
- // user config
- snprintf(buf, sizeof(buf), "%s/.elementary/config/%s/base.cfg", home, _elm_profile);
+ if (!home) home = "";
+
+ snprintf(buf, sizeof(buf), "%s/.elementary/config/%s/base.cfg", home,
+ _elm_profile);
ef = eet_open(buf, EET_FILE_MODE_READ);
if (ef)
{
- _elm_config = eet_data_read(ef, _config_edd, "config");
+ cfg = eet_data_read(ef, _config_edd, "config");
eet_close(ef);
}
- if (_elm_config) return;
-
- // system config
- snprintf(buf, sizeof(buf), "%s/config/%s/base.cfg", _elm_data_dir, _elm_profile);
+ return cfg;
+}
+
+static Elm_Config *
+_config_system_load(void)
+{
+ Elm_Config *cfg = NULL;
+ Eet_File *ef;
+ char buf[PATH_MAX];
+
+ snprintf(buf, sizeof(buf), "%s/config/%s/base.cfg", _elm_data_dir,
+ _elm_profile);
ef = eet_open(buf, EET_FILE_MODE_READ);
if (ef)
{
- _elm_config = eet_data_read(ef, _config_edd, "config");
+ cfg = eet_data_read(ef, _config_edd, "config");
eet_close(ef);
}
+ return cfg;
+}
+
+
+static void
+_config_load(void)
+{
+ _elm_config = _config_user_load();
+
+
+ // user config
+ if (_elm_config)
+ {
+ if (_elm_config->config_version < ELM_CONFIG_VERSION)
+ _config_update();
+ return;
+ }
+
+ /* no user config, fallback for system. No need to check version for
+ * this one, if it's not the right one, someone screwed up at the time
+ * of installing it */
+ _elm_config = _config_system_load();
if (_elm_config) return;
+ /* FIXME: config load could have failed because of a non-existent
+ * profile. Fallback to default before moving on */
// config load fail - defaults
+ /* XXX: do these make sense? Only if it's valid to install the lib
+ * without the config, but do we want that? */
_elm_config = ELM_NEW(Elm_Config);
+ _elm_config->config_version = ELM_CONFIG_VERSION;
_elm_config->engine = ELM_SOFTWARE_X11;
_elm_config->thumbscroll_enable = 1;
_elm_config->thumbscroll_threshhold = 24;
_elm_config->fps = 60.0;
_elm_config->theme = eina_stringshare_add("default");
_elm_config->modules = NULL;
- _elm_config->input_panel_enable = 0;
- _elm_config->autocapital_allow = 0;
- _elm_config->autoperiod_allow = 0;
+}
+static void
+_config_update(void)
+{
+ Elm_Config *tcfg;
+ tcfg = _config_system_load();
+ if (!tcfg)
+ {
+ return;
+ }
+#define IFCFG(v) if ((_elm_config->config_version & 0xffff) < (v)) {
+#define IFCFGELSE } else {
+#define IFCFGEND }
+#define COPYVAL(x) do {_elm_config->x = tcfg->x;} while(0)
+#define COPYPTR(x) do {_elm_config->x = tcfg->x; tcfg->x = NULL; } while(0)
+#define COPYSTR(x) COPYPTR(x)
+
+ /* we also need to update for property changes in the root window
+ * if needed, but that will be dependant on new properties added
+ * with each version */
+
+ /* nothing here, just an example */
+ /*
+ IFCFG(0x0002);
+ COPYVAL(some_value);
+ IFCFGEND;
+ */
+
+#undef COPYSTR
+#undef COPYPTR
+#undef COPYVAL
+#undef IFCFGEND
+#undef IFCFGELSE
+#undef IFCFG
+
+ /* after updating user config, we must save */
}
static void
Ecore_Animator *animator;
double start, len;
Elm_Flip_Mode mode;
+ Evas_Object *clip;
struct {
Evas_Object *content, *clip;
} front, back;
}
}
+static void
+flip_show_hide(Evas_Object *obj)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (elm_flip_front_get(obj))
+ {
+ if (wd->front.content)
+ evas_object_show(wd->front.clip);
+ else
+ evas_object_hide(wd->front.clip);
+ if (wd->back.content)
+ evas_object_hide(wd->back.clip);
+ else
+ evas_object_hide(wd->back.clip);
+ }
+ else
+ {
+ if (wd->front.content)
+ evas_object_hide(wd->front.clip);
+ else
+ evas_object_hide(wd->front.clip);
+ if (wd->back.content)
+ evas_object_show(wd->back.clip);
+ else
+ evas_object_hide(wd->back.clip);
+ }
+}
static Eina_Bool
_flip(Evas_Object *obj)
{
evas_map_util_3d_rotate(mb, 0.0, deg, 0.0, cx, cy, w / 2);
}
break;
-
+ case ELM_FLIP_CUBE_UP:
+ p = 1.0 - t;
+ p = 1.0 - (p * p);
+ deg = -90.0 * p;
+ if (wd->state)
+ {
+ evas_map_util_3d_rotate(mf, deg, 0.0, 0.0, cx, cy, h / 2);
+ evas_map_util_3d_rotate(mb, deg + 90, 0.0, 0.0, cx, cy, h / 2);
+ }
+ else
+ {
+ evas_map_util_3d_rotate(mf, deg + 90, 0.0, 0.0, cx, cy, h / 2);
+ evas_map_util_3d_rotate(mb, deg, 0.0, 0.0, cx, cy, h / 2);
+ }
+ break;
+ case ELM_FLIP_CUBE_DOWN:
+ p = 1.0 - t;
+ p = 1.0 - (p * p);
+ deg = 90.0 * p;
+ if (wd->state)
+ {
+ evas_map_util_3d_rotate(mf, deg, 0.0, 0.0, cx, cy, h / 2);
+ evas_map_util_3d_rotate(mb, deg - 90, 0.0, 0.0, cx, cy, h / 2);
+ }
+ else
+ {
+ evas_map_util_3d_rotate(mf, deg - 90, 0.0, 0.0, cx, cy, h / 2);
+ evas_map_util_3d_rotate(mb, deg, 0.0, 0.0, cx, cy, h / 2);
+ }
+ break;
default:
break;
}
{
evas_object_map_enable_set(wd->front.content, 0);
evas_object_map_enable_set(wd->back.content, 0);
+// FIXME: hack around evas rendering bug (only fix makes evas bitch-slow
+ evas_object_resize(wd->front.content, 0, 0);
+ evas_object_resize(wd->back.content, 0, 0);
+ evas_smart_objects_calculate(evas_object_evas_get(obj));
+// FIXME: end hack
wd->animator = NULL;
wd->state = !wd->state;
_configure(obj);
elm_widget_del_hook_set(obj, _del_hook);
elm_widget_theme_hook_set(obj, _theme_hook);
+ wd->clip = evas_object_rectangle_add(e);
+ evas_object_color_set(wd->clip, 255, 255, 255, 255);
+ evas_object_move(wd->clip, -49999, -49999);
+ evas_object_resize(wd->clip, 99999, 99999);
+ elm_widget_sub_object_add(obj, wd->clip);
+ evas_object_clip_set(wd->clip, evas_object_clip_get(obj));
+ evas_object_smart_member_add(wd->clip, obj);
wd->front.clip = evas_object_rectangle_add(e);
+ evas_object_static_clip_set(wd->front.clip, 1);
+ evas_object_data_set(wd->front.clip, "_elm_leaveme", obj);
evas_object_color_set(wd->front.clip, 255, 255, 255, 255);
evas_object_move(wd->front.clip, -49999, -49999);
evas_object_resize(wd->front.clip, 99999, 99999);
- elm_widget_sub_object_add(wd->front.clip, obj);
+ elm_widget_sub_object_add(obj, wd->front.clip);
evas_object_smart_member_add(wd->front.clip, obj);
- evas_object_clip_set(wd->front.clip, evas_object_clip_get(obj));
+ evas_object_clip_set(wd->front.clip, wd->clip);
wd->back.clip = evas_object_rectangle_add(e);
+ evas_object_static_clip_set(wd->back.clip, 1);
+ evas_object_data_set(wd->back.clip, "_elm_leaveme", obj);
evas_object_color_set(wd->back.clip, 255, 255, 255, 255);
evas_object_move(wd->back.clip, -49999, -49999);
evas_object_resize(wd->back.clip, 99999, 99999);
elm_widget_sub_object_add(wd->back.clip, obj);
- evas_object_smart_member_add(wd->back.clip, obj);
- evas_object_clip_set(wd->back.clip, evas_object_clip_get(obj));
+ evas_object_smart_member_add(obj, wd->back.clip);
+ evas_object_clip_set(wd->back.clip, wd->clip);
evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, NULL);
EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_changed_size_hints, obj);
_sizing_eval(obj);
- if (!elm_flip_front_get(obj)) evas_object_hide(wd->front.clip);
- else evas_object_show(wd->front.clip);
}
- else
- evas_object_hide(wd->front.clip);
+ flip_show_hide(obj);
_configure(obj);
}
EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_changed_size_hints, obj);
_sizing_eval(obj);
- if (elm_flip_front_get(obj)) evas_object_hide(wd->back.clip);
- else evas_object_show(wd->back.clip);
}
- else
- evas_object_hide(wd->back.clip);
+ flip_show_hide(obj);
_configure(obj);
}
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
if (!wd->animator) wd->animator = ecore_animator_add(_animate, obj);
+ flip_show_hide(obj);
wd->mode = mode;
wd->start = ecore_loop_time_get();
wd->len = 0.5;
+ _flip(obj);
}
if (!wd) return;
if (wd->content)
{
- Evas_Coord x, y, w, h;
+ Evas_Coord x, y, w, h, x2, y2;
evas_object_geometry_get(obj, &x, &y, &w, &h);
- if (!wd->enabled) evas_object_move(wd->content, x, y);
+ evas_object_geometry_get(wd->content, &x2, &y2, NULL, NULL);
+ if ((x != x2) || (y != y2))
+ {
+ if (!wd->enabled)
+ evas_object_move(wd->content, x, y);
+ else
+ {
+
+ Evas *e = evas_object_evas_get(obj);
+ evas_smart_objects_calculate(e);
+ evas_nochange_push(e);
+// printf("x--------------------\n");
+ evas_object_move(wd->content, x, y);
+ evas_smart_objects_calculate(e);
+// printf("y--------------------\n");
+ evas_nochange_pop(e);
+ }
+ }
evas_object_resize(wd->content, w, h);
_mapbuf(obj);
}
int len;
};
+
+/* increment this whenever we change config enough that you need new
+ * defaults for elm to work.
+ */
+#define ELM_CONFIG_EPOCH 0x0001
+/* increment this whenever a new set of config values are added but the users
+ * config doesn't need to be wiped - simply new values need to be put in
+ */
+#define ELM_CONFIG_FILE_GENERATION 0x0001
+#define ELM_CONFIG_VERSION ((ELM_CONFIG_EPOCH << 16) | ELM_CONFIG_FILE_GENERATION)
+
+
struct _Elm_Config
{
+ int config_version;
int engine;
int thumbscroll_enable;
int thumbscroll_threshhold;
static void
_smart_show(Evas_Object *obj)
{
+ Eina_List *list, *l;
+ Evas_Object *o;
INTERNAL_ENTRY;
- evas_object_show(sd->resize_obj);
+ list = evas_object_smart_members_get(obj);
+ EINA_LIST_FOREACH(list, l, o)
+ {
+ if (evas_object_data_get(o, "_elm_leaveme")) continue;
+ evas_object_show(o);
+ }
}
static void
_smart_hide(Evas_Object *obj)
{
+ Eina_List *list, *l;
+ Evas_Object *o;
INTERNAL_ENTRY;
- evas_object_hide(sd->resize_obj);
+ list = evas_object_smart_members_get(obj);
+ EINA_LIST_FOREACH(list, l, o)
+ {
+ if (evas_object_data_get(o, "_elm_leaveme")) continue;
+ evas_object_hide(o);
+ }
_if_focused_revert(obj);
}
static void
_smart_color_set(Evas_Object *obj, int r, int g, int b, int a)
{
+ Eina_List *list, *l;
+ Evas_Object *o;
INTERNAL_ENTRY;
- evas_object_color_set(sd->resize_obj, r, g, b, a);
+ list = evas_object_smart_members_get(obj);
+ EINA_LIST_FOREACH(list, l, o)
+ {
+ if (evas_object_data_get(o, "_elm_leaveme")) continue;
+ evas_object_color_set(o, r, g, b, a);
+ }
}
static void
_smart_clip_set(Evas_Object *obj, Evas_Object *clip)
{
+ Eina_List *list, *l;
+ Evas_Object *o;
INTERNAL_ENTRY;
- evas_object_clip_set(sd->resize_obj, clip);
+ list = evas_object_smart_members_get(obj);
+ EINA_LIST_FOREACH(list, l, o)
+ {
+ if (evas_object_data_get(o, "_elm_leaveme")) continue;
+ evas_object_clip_set(o, clip);
+ }
}
static void
_smart_clip_unset(Evas_Object *obj)
{
+ Eina_List *list, *l;
+ Evas_Object *o;
INTERNAL_ENTRY;
- evas_object_clip_unset(sd->resize_obj);
+// evas_object_clip_unset(sd->resize_obj);
+// return;
+ list = evas_object_smart_members_get(obj);
+ EINA_LIST_FOREACH(list, l, o)
+ {
+ if (evas_object_data_get(o, "_elm_leaveme")) continue;
+ evas_object_clip_unset(o);
+ }
}
static void