forked from enlightenment/efl
From: cnook <kimcinoo@gmail.com>
Subject: Re: [E-devel] [Patch][elm_conform] When the indicator is displayed initially and use elm_confrom as parent by using elm_conformant_content_area_get, the indicator area (wd->shelf) does not display properly. Because any interested ECORE_X_EVENT_WINDOW_PROPERTY does not notify. In this case, we have got to evaluate size, when EVAS_CALLBACK_RESIZE occurs. SVN revision: 60616
This commit is contained in:
parent
01c20a80bb
commit
5c060442b3
|
@ -24,8 +24,8 @@ struct _Widget_Data
|
||||||
Evas_Object *shelf, *panel, *virtualkeypad;
|
Evas_Object *shelf, *panel, *virtualkeypad;
|
||||||
Evas_Object *content;
|
Evas_Object *content;
|
||||||
Evas_Object *scroller;
|
Evas_Object *scroller;
|
||||||
Ecore_Event_Handler *prop_hdl;
|
|
||||||
#ifdef HAVE_ELEMENTARY_X
|
#ifdef HAVE_ELEMENTARY_X
|
||||||
|
Ecore_Event_Handler *prop_hdl;
|
||||||
Ecore_X_Virtual_Keyboard_State vkb_state;
|
Ecore_X_Virtual_Keyboard_State vkb_state;
|
||||||
#endif
|
#endif
|
||||||
struct
|
struct
|
||||||
|
@ -51,6 +51,7 @@ static char *sub_type[SUB_TYPE_COUNT] = { "scroller", "genlist" };
|
||||||
|
|
||||||
/* local function prototypes */
|
/* local function prototypes */
|
||||||
static const char *widtype = NULL;
|
static const char *widtype = NULL;
|
||||||
|
static void _del_pre_hook(Evas_Object *obj);
|
||||||
static void _del_hook(Evas_Object *obj);
|
static void _del_hook(Evas_Object *obj);
|
||||||
static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl);
|
static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl);
|
||||||
static void _theme_hook(Evas_Object *obj);
|
static void _theme_hook(Evas_Object *obj);
|
||||||
|
@ -65,17 +66,31 @@ static void _conformant_part_size_set(Evas_Object *obj,
|
||||||
static void _conformant_part_sizing_eval(Evas_Object *obj,
|
static void _conformant_part_sizing_eval(Evas_Object *obj,
|
||||||
Conformant_Part_Type part_type);
|
Conformant_Part_Type part_type);
|
||||||
#endif
|
#endif
|
||||||
|
static void
|
||||||
|
_conformant_move_resize_event_cb(void *data, Evas *e, Evas_Object *obj,
|
||||||
|
void *event_info);
|
||||||
static void _sizing_eval(Evas_Object *obj);
|
static void _sizing_eval(Evas_Object *obj);
|
||||||
static Eina_Bool _prop_change(void *data, int type, void *event);
|
static Eina_Bool _prop_change(void *data, int type, void *event);
|
||||||
|
|
||||||
/* local functions */
|
/* local functions */
|
||||||
|
static void
|
||||||
|
_del_pre_hook(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
Widget_Data *wd = elm_widget_data_get(obj);
|
||||||
|
if (!wd) return;
|
||||||
|
#ifdef HAVE_ELEMENTARY_X
|
||||||
|
if (wd->prop_hdl) ecore_event_handler_del(wd->prop_hdl);
|
||||||
|
#endif
|
||||||
|
evas_object_event_callback_del_full(obj, EVAS_CALLBACK_RESIZE, _conformant_move_resize_event_cb, obj);
|
||||||
|
evas_object_event_callback_del_full(obj, EVAS_CALLBACK_MOVE, _conformant_move_resize_event_cb, obj);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_del_hook(Evas_Object *obj)
|
_del_hook(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
Widget_Data *wd = elm_widget_data_get(obj);
|
Widget_Data *wd = elm_widget_data_get(obj);
|
||||||
|
|
||||||
if (!wd) return;
|
if (!wd) return;
|
||||||
if (wd->prop_hdl) ecore_event_handler_del(wd->prop_hdl);
|
|
||||||
free(wd);
|
free(wd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -404,10 +419,6 @@ _prop_change(void *data, int type __UNUSED__, void *event)
|
||||||
ELM_CONFORM_SOFTKEY_PART |
|
ELM_CONFORM_SOFTKEY_PART |
|
||||||
ELM_CONFORM_VIRTUAL_KEYPAD_PART);
|
ELM_CONFORM_VIRTUAL_KEYPAD_PART);
|
||||||
_conformant_part_sizing_eval(data, part_type);
|
_conformant_part_sizing_eval(data, part_type);
|
||||||
evas_object_event_callback_add(data, EVAS_CALLBACK_RESIZE,
|
|
||||||
_conformant_move_resize_event_cb, data);
|
|
||||||
evas_object_event_callback_add(data, EVAS_CALLBACK_MOVE,
|
|
||||||
_conformant_move_resize_event_cb, data);
|
|
||||||
}
|
}
|
||||||
else if (ev->atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY)
|
else if (ev->atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY)
|
||||||
_conformant_part_sizing_eval(data, ELM_CONFORM_INDICATOR_PART);
|
_conformant_part_sizing_eval(data, ELM_CONFORM_INDICATOR_PART);
|
||||||
|
@ -479,6 +490,10 @@ elm_conformant_add(Evas_Object *parent)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
|
evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
|
||||||
|
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE,
|
||||||
|
_conformant_move_resize_event_cb, obj);
|
||||||
|
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE,
|
||||||
|
_conformant_move_resize_event_cb, obj);
|
||||||
|
|
||||||
_mirrored_set(obj, elm_widget_mirrored_get(obj));
|
_mirrored_set(obj, elm_widget_mirrored_get(obj));
|
||||||
_sizing_eval(obj);
|
_sizing_eval(obj);
|
||||||
|
|
Loading…
Reference in New Issue