forked from enlightenment/enlightenment
bugfix: setting min size on a gadget now propagates to desktop gadgets
This commit is contained in:
parent
eaa2b43fba
commit
3024562fcc
|
@ -1,3 +1,7 @@
|
|||
2013-07-26 Mike Blumenkrantz
|
||||
|
||||
* fixed bug where setting min size on a gadget would not be passed to desktop gadgets
|
||||
|
||||
2013-07-26 Mike Blumenkrantz
|
||||
|
||||
* fixed bug where double clicking filemanager windows would not correctly autosize
|
||||
|
|
1
NEWS
1
NEWS
|
@ -227,3 +227,4 @@ Fixes:
|
|||
* fixed bug with filemanager setting path with too many spaces when opened from menu
|
||||
* fixed crash when multiple windows shared a remember
|
||||
* fixed bug where double clicking filemanager windows would not correctly autosize
|
||||
* fixed bug where setting min size on a gadget would not be passed to desktop gadgets
|
||||
|
|
|
@ -3678,7 +3678,12 @@ e_gadcon_layout_pack_min_size_set(Evas_Object *obj, int w, int h)
|
|||
|
||||
if (!obj) return;
|
||||
bi = evas_object_data_get(obj, "e_gadcon_layout_data");
|
||||
if (!bi) return;
|
||||
if (!bi)
|
||||
{
|
||||
evas_object_size_hint_min_set(obj, w, h);
|
||||
edje_extern_object_min_size_set(obj, w, h);
|
||||
return;
|
||||
}
|
||||
if (bi->sd->horizontal)
|
||||
{
|
||||
bi->min.w = w;
|
||||
|
|
|
@ -45,6 +45,9 @@ Manager *Man = NULL;
|
|||
static Eina_List *_gadman_hdls = NULL;
|
||||
static Eina_Hash *_gadman_gadgets = NULL;
|
||||
|
||||
/* for locking geometry during our own move/resize */
|
||||
static Eina_Bool mover_lock = EINA_FALSE;
|
||||
|
||||
/* Implementation */
|
||||
void
|
||||
gadman_reset(void)
|
||||
|
@ -231,6 +234,19 @@ _gadman_gadget_free(void *data __UNUSED__, void *obj)
|
|||
gadman_gadget_edit_end(NULL, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
_gadman_gadget_size_hints_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||
{
|
||||
E_Gadcon_Client *gcc = data;
|
||||
int w, h;
|
||||
|
||||
evas_object_geometry_get(obj, NULL, NULL, &w, &h);
|
||||
w = MAX(w, gcc->min.w);
|
||||
h = MAX(h, gcc->min.h);
|
||||
evas_object_resize(gcc->o_frame, w, h);
|
||||
_save_widget_position(gcc);
|
||||
}
|
||||
|
||||
static E_Gadcon_Client *
|
||||
gadman_gadget_place(E_Gadcon_Client *gcc, const E_Gadcon_Client_Class *cc, E_Config_Gadcon_Client *cf, Gadman_Layer_Type layer, E_Zone *zone)
|
||||
{
|
||||
|
@ -290,6 +306,8 @@ gadman_gadget_place(E_Gadcon_Client *gcc, const E_Gadcon_Client_Class *cc, E_Con
|
|||
edje_object_part_swallow(gcc->o_frame, "e.swallow.content", gcc->o_base);
|
||||
evas_object_event_callback_add(gcc->o_frame, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
on_frame_click, gcc);
|
||||
evas_object_event_callback_add(gcc->o_frame, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
|
||||
_gadman_gadget_size_hints_cb, gcc);
|
||||
|
||||
gcc->hidden = 1;
|
||||
if (gcc->gadcon->id == ID_GADMAN_LAYER_TOP)
|
||||
|
@ -379,6 +397,24 @@ gadman_edit(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *e
|
|||
_apply_widget_position(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_gadman_gadget_edit_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||
{
|
||||
int w, h;
|
||||
if (mover_lock) return;
|
||||
evas_object_geometry_get(obj, NULL, NULL, &w, &h);
|
||||
evas_object_resize(_get_mover(data), w, h);
|
||||
}
|
||||
|
||||
static void
|
||||
_gadman_gadget_edit_move_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||
{
|
||||
int x, y;
|
||||
if (mover_lock) return;
|
||||
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
|
||||
evas_object_move(_get_mover(data), x, y);
|
||||
}
|
||||
|
||||
void
|
||||
gadman_gadget_edit_start(E_Gadcon_Client *gcc)
|
||||
{
|
||||
|
@ -402,6 +438,8 @@ gadman_gadget_edit_start(E_Gadcon_Client *gcc)
|
|||
mover = _get_mover(gcc);
|
||||
if (!mover) return;
|
||||
evas_object_geometry_get(gcc->o_frame, &x, &y, &w, &h);
|
||||
evas_object_event_callback_add(gcc->o_frame, EVAS_CALLBACK_RESIZE, _gadman_gadget_edit_resize_cb, gcc);
|
||||
evas_object_event_callback_add(gcc->o_frame, EVAS_CALLBACK_MOVE, _gadman_gadget_edit_move_cb, gcc);
|
||||
Man->drag_gcc[gcc->gadcon->id - ID_GADMAN_LAYER_BASE] = gcc;
|
||||
|
||||
evas_object_move(mover, x, y);
|
||||
|
@ -434,6 +472,11 @@ gadman_gadget_edit_end(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const
|
|||
EINA_LIST_FOREACH(Man->gadcons[layer], l, gc)
|
||||
gc->editing = 0;
|
||||
drag_gcc = Man->drag_gcc[layer];
|
||||
if (drag_gcc)
|
||||
{
|
||||
evas_object_event_callback_del_full(drag_gcc->o_frame, EVAS_CALLBACK_RESIZE, _gadman_gadget_edit_resize_cb, drag_gcc);
|
||||
evas_object_event_callback_del_full(drag_gcc->o_frame, EVAS_CALLBACK_MOVE, _gadman_gadget_edit_move_cb, drag_gcc);
|
||||
}
|
||||
Man->drag_gcc[layer] = NULL;
|
||||
break;
|
||||
}
|
||||
|
@ -1242,6 +1285,7 @@ on_top(void *data, Evas_Object *o __UNUSED__, const char *em __UNUSED__, const c
|
|||
drag_gcc = Man->drag_gcc[layer];
|
||||
|
||||
mover = _get_mover(drag_gcc);
|
||||
mover_lock = EINA_TRUE;
|
||||
|
||||
if (action == DRAG_START)
|
||||
{
|
||||
|
@ -1283,6 +1327,7 @@ on_top(void *data, Evas_Object *o __UNUSED__, const char *em __UNUSED__, const c
|
|||
evas_object_move(drag_gcc->o_frame, ox, my - drag_gcc->dy);
|
||||
_save_widget_position(drag_gcc);
|
||||
}
|
||||
mover_lock = EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1298,6 +1343,7 @@ on_right(void *data, Evas_Object *o __UNUSED__, const char *em __UNUSED__, const
|
|||
drag_gcc = Man->drag_gcc[layer];
|
||||
|
||||
mover = _get_mover(drag_gcc);
|
||||
mover_lock = EINA_TRUE;
|
||||
|
||||
action = (int)(long)data;
|
||||
if (action == DRAG_START)
|
||||
|
@ -1328,6 +1374,7 @@ on_right(void *data, Evas_Object *o __UNUSED__, const char *em __UNUSED__, const
|
|||
evas_object_resize(drag_gcc->o_frame, w, oh);
|
||||
_save_widget_position(drag_gcc);
|
||||
}
|
||||
mover_lock = EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1343,6 +1390,7 @@ on_down(void *data, Evas_Object *o __UNUSED__, const char *em __UNUSED__, const
|
|||
drag_gcc = Man->drag_gcc[layer];
|
||||
|
||||
mover = _get_mover(drag_gcc);
|
||||
mover_lock = EINA_TRUE;
|
||||
|
||||
if (action == DRAG_START)
|
||||
{
|
||||
|
@ -1372,6 +1420,7 @@ on_down(void *data, Evas_Object *o __UNUSED__, const char *em __UNUSED__, const
|
|||
evas_object_resize(drag_gcc->o_frame, ow, h);
|
||||
_save_widget_position(drag_gcc);
|
||||
}
|
||||
mover_lock = EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1387,6 +1436,7 @@ on_left(void *data, Evas_Object *o __UNUSED__, const char *em __UNUSED__, const
|
|||
drag_gcc = Man->drag_gcc[layer];
|
||||
|
||||
mover = _get_mover(drag_gcc);
|
||||
mover_lock = EINA_TRUE;
|
||||
if (action == DRAG_START)
|
||||
{
|
||||
drag_gcc->resizing = 1;
|
||||
|
@ -1427,6 +1477,7 @@ on_left(void *data, Evas_Object *o __UNUSED__, const char *em __UNUSED__, const
|
|||
evas_object_move(drag_gcc->o_frame, mx - drag_gcc->dx, oy);
|
||||
_save_widget_position(drag_gcc);
|
||||
}
|
||||
mover_lock = EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue