Add handler for zone_move_resize so we can adjust minimum width of

indicator when zone size changes.



SVN revision: 46599
This commit is contained in:
Christopher Michael 2010-02-27 19:41:59 +00:00
parent fd63280f2e
commit 8294b889c5
2 changed files with 35 additions and 7 deletions

View File

@ -5,6 +5,7 @@
/* local function prototypes */ /* local function prototypes */
static void _e_mod_ind_win_cb_free(Ind_Win *iwin); static void _e_mod_ind_win_cb_free(Ind_Win *iwin);
static int _e_mod_ind_win_cb_win_prop(void *data, int type __UNUSED__, void *event); static int _e_mod_ind_win_cb_win_prop(void *data, int type __UNUSED__, void *event);
static int _e_mod_ind_win_cb_zone_resize(void *data, int type __UNUSED__, void *event);
static void _e_mod_ind_win_cb_resize(E_Win *win); static void _e_mod_ind_win_cb_resize(E_Win *win);
static void _e_mod_ind_win_cb_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event); static void _e_mod_ind_win_cb_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event);
static void _e_mod_ind_win_cb_mouse_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event); static void _e_mod_ind_win_cb_mouse_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event);
@ -102,9 +103,18 @@ e_mod_ind_win_new(E_Zone *zone)
e_gadcon_populate(iwin->gadcon); e_gadcon_populate(iwin->gadcon);
/* hook into property change so we can adjust w/ e_scale */ /* hook into property change so we can adjust w/ e_scale */
iwin->scale_hdl = iwin->hdls =
ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY, eina_list_append(iwin->hdls,
_e_mod_ind_win_cb_win_prop, iwin); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY,
_e_mod_ind_win_cb_win_prop, iwin));
/* hook into zone resize so we can set minimum window width when zone
* size changes */
iwin->hdls =
eina_list_append(iwin->hdls,
ecore_event_handler_add(E_EVENT_ZONE_MOVE_RESIZE,
_e_mod_ind_win_cb_zone_resize,
iwin));
/* set minimum size of this window */ /* set minimum size of this window */
e_win_size_min_set(iwin->win, zone->w, (32 * e_scale)); e_win_size_min_set(iwin->win, zone->w, (32 * e_scale));
@ -133,9 +143,11 @@ e_mod_ind_win_new(E_Zone *zone)
static void static void
_e_mod_ind_win_cb_free(Ind_Win *iwin) _e_mod_ind_win_cb_free(Ind_Win *iwin)
{ {
/* delete the scale handler */ Ecore_Event_Handler *hdl;
if (iwin->scale_hdl) ecore_event_handler_del(iwin->scale_hdl);
iwin->scale_hdl = NULL; /* delete the handlers */
EINA_LIST_FREE(iwin->hdls, hdl)
ecore_event_handler_del(hdl);
/* delete the border hook */ /* delete the border hook */
if (iwin->hook) e_border_hook_del(iwin->hook); if (iwin->hook) e_border_hook_del(iwin->hook);
@ -201,6 +213,22 @@ _e_mod_ind_win_cb_win_prop(void *data, int type __UNUSED__, void *event)
return 1; return 1;
} }
static int
_e_mod_ind_win_cb_zone_resize(void *data, int type __UNUSED__, void *event)
{
Ind_Win *iwin;
E_Event_Zone_Move_Resize *ev;
ev = event;
if (!(iwin = data)) return 1;
if (ev->zone != iwin->zone) return 1;
/* set minimum size of this window to match zone size */
e_win_size_min_set(iwin->win, ev->zone->w, (32 * e_scale));
return 1;
}
static void static void
_e_mod_ind_win_cb_resize(E_Win *win) _e_mod_ind_win_cb_resize(E_Win *win)
{ {

View File

@ -12,7 +12,7 @@ struct _Ind_Win
E_Zone *zone; E_Zone *zone;
E_Border_Hook *hook; E_Border_Hook *hook;
Ecore_Event_Handler *scale_hdl; Eina_List *hdls;
E_Win *win; E_Win *win;
Evas_Object *o_base, *o_event; Evas_Object *o_base, *o_event;