parent
73fbff9c58
commit
791c7e0eb1
16
TODO
16
TODO
|
@ -8,8 +8,11 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
BUGS / FIXES
|
BUGS / FIXES
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
* BUG: sometimes unshade fails. Must be the wrong order of some events.
|
* BUG: sometimes unshade fails. Must be the wrong order of some events. (under
|
||||||
* FIX: need to hide other windows while doing fullscreen.
|
what conditions? i don't see it)
|
||||||
|
* BUG: when fullscreen should put up big black window above all windows EXCEPT
|
||||||
|
the fullscreen one (no need to hide other windows). in general fullscreen
|
||||||
|
needs work, cleaning and testing
|
||||||
* BUG: on font apply borders need to be adjusted for size changes
|
* BUG: on font apply borders need to be adjusted for size changes
|
||||||
* BUG: font apply doesnt seem to keep working (edje problem?) unless you
|
* BUG: font apply doesnt seem to keep working (edje problem?) unless you
|
||||||
restart
|
restart
|
||||||
|
@ -28,8 +31,6 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
hidden, until you flip desktops then it appears again - but with no client
|
hidden, until you flip desktops then it appears again - but with no client
|
||||||
around. currently they have a dangling reference - need to find out WHO
|
around. currently they have a dangling reference - need to find out WHO
|
||||||
added that ref and didnt remove it (i haven't seen this for ages now)
|
added that ref and didnt remove it (i haven't seen this for ages now)
|
||||||
* BUG: fix action delete (can segv if action is stored for "long runing actions"
|
|
||||||
like move/resize)
|
|
||||||
* BUG: if you have 2 zones and you fill up zone 2 (right) mostly and then run
|
* BUG: if you have 2 zones and you fill up zone 2 (right) mostly and then run
|
||||||
a big xev (xev -g 1280x1024) that wont fit it gets placed offscreen to the
|
a big xev (xev -g 1280x1024) that wont fit it gets placed offscreen to the
|
||||||
right of zone 2
|
right of zone 2
|
||||||
|
@ -159,6 +160,13 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
CLEANUPS
|
CLEANUPS
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
* winlist should support place for window "screenshot" in list as well as
|
||||||
|
app icon
|
||||||
|
* winlist should in theory allow horizontal list layout not just vertical (set
|
||||||
|
by the theme)
|
||||||
|
* winlist could divide windows up into blocks - sub-lists within a container
|
||||||
|
pwer desktop (with stick windows considered to live on the "current" desk
|
||||||
|
when winlist starts)
|
||||||
* make auto kill client and the kill() stuff config options
|
* make auto kill client and the kill() stuff config options
|
||||||
* make 10.0 sec ping time and the 10.0 sec wait for a SIGKILL an option
|
* make 10.0 sec ping time and the 10.0 sec wait for a SIGKILL an option
|
||||||
* make it easy for modules to hook into ipc and extend it for themselves
|
* make it easy for modules to hook into ipc and extend it for themselves
|
||||||
|
|
|
@ -6,48 +6,49 @@
|
||||||
#define INITS
|
#define INITS
|
||||||
#define ACT_GO(name) \
|
#define ACT_GO(name) \
|
||||||
{ \
|
{ \
|
||||||
act = e_action_set(#name); \
|
act = e_action_add(#name); \
|
||||||
if (act) act->func.go = _e_actions_act_##name##_go; \
|
if (act) act->func.go = _e_actions_act_##name##_go; \
|
||||||
}
|
}
|
||||||
#define ACT_FN_GO(act) \
|
#define ACT_FN_GO(act) \
|
||||||
static void _e_actions_act_##act##_go(E_Object *obj, char *params)
|
static void _e_actions_act_##act##_go(E_Object *obj, char *params)
|
||||||
#define ACT_GO_MOUSE(name) \
|
#define ACT_GO_MOUSE(name) \
|
||||||
{ \
|
{ \
|
||||||
act = e_action_set(#name); \
|
act = e_action_add(#name); \
|
||||||
if (act) act->func.go_mouse = _e_actions_act_##name##_go_mouse; \
|
if (act) act->func.go_mouse = _e_actions_act_##name##_go_mouse; \
|
||||||
}
|
}
|
||||||
#define ACT_FN_GO_MOUSE(act) \
|
#define ACT_FN_GO_MOUSE(act) \
|
||||||
static void _e_actions_act_##act##_go_mouse(E_Object *obj, char *params, Ecore_X_Event_Mouse_Button_Down *ev)
|
static void _e_actions_act_##act##_go_mouse(E_Object *obj, char *params, Ecore_X_Event_Mouse_Button_Down *ev)
|
||||||
#define ACT_GO_KEY(name) \
|
#define ACT_GO_KEY(name) \
|
||||||
{ \
|
{ \
|
||||||
act = e_action_set(#name); \
|
act = e_action_add(#name); \
|
||||||
if (act) act->func.go_key = _e_actions_act_##name##_go_key; \
|
if (act) act->func.go_key = _e_actions_act_##name##_go_key; \
|
||||||
}
|
}
|
||||||
#define ACT_FN_GO_KEY(act) \
|
#define ACT_FN_GO_KEY(act) \
|
||||||
static void _e_actions_act_##act##_go_key(E_Object *obj, char *params, Ecore_X_Event_Key_Down *ev)
|
static void _e_actions_act_##act##_go_key(E_Object *obj, char *params, Ecore_X_Event_Key_Down *ev)
|
||||||
#define ACT_END(name) \
|
#define ACT_END(name) \
|
||||||
{ \
|
{ \
|
||||||
act = e_action_set(#name); \
|
act = e_action_add(#name); \
|
||||||
if (act) act->func.end = _e_actions_act_##name##_end; \
|
if (act) act->func.end = _e_actions_act_##name##_end; \
|
||||||
}
|
}
|
||||||
#define ACT_FN_END(act) \
|
#define ACT_FN_END(act) \
|
||||||
static void _e_actions_act_##act##_end(E_Object *obj, char *params)
|
static void _e_actions_act_##act##_end(E_Object *obj, char *params)
|
||||||
#define ACT_END_MOUSE(name) \
|
#define ACT_END_MOUSE(name) \
|
||||||
{ \
|
{ \
|
||||||
act = e_action_set(#name); \
|
act = e_action_add(#name); \
|
||||||
if (act) act->func.end_mouse = _e_actions_act_##name##_end_mouse; \
|
if (act) act->func.end_mouse = _e_actions_act_##name##_end_mouse; \
|
||||||
}
|
}
|
||||||
#define ACT_FN_END_MOUSE(act) \
|
#define ACT_FN_END_MOUSE(act) \
|
||||||
static void _e_actions_act_##act##_end_mouse(E_Object *obj, char *params, Ecore_X_Event_Mouse_Button_Up *ev)
|
static void _e_actions_act_##act##_end_mouse(E_Object *obj, char *params, Ecore_X_Event_Mouse_Button_Up *ev)
|
||||||
#define ACT_END_KEY(name) \
|
#define ACT_END_KEY(name) \
|
||||||
{ \
|
{ \
|
||||||
act = e_action_set(#name); \
|
act = e_action_add(#name); \
|
||||||
if (act) act->func.end_key = _e_actions_act_##name##_end_key; \
|
if (act) act->func.end_key = _e_actions_act_##name##_end_key; \
|
||||||
}
|
}
|
||||||
#define ACT_FN_END_KEY(act) \
|
#define ACT_FN_END_KEY(act) \
|
||||||
static void _e_actions_act_##act##_end_key(E_Object *obj, char *params, Ecore_X_Event_Key_Up *ev)
|
static void _e_actions_act_##act##_end_key(E_Object *obj, char *params, Ecore_X_Event_Key_Up *ev)
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
|
static void _e_action_free(E_Action *act);
|
||||||
static Evas_Bool _e_actions_cb_free(Evas_Hash *hash, const char *key, void *data, void *fdata);
|
static Evas_Bool _e_actions_cb_free(Evas_Hash *hash, const char *key, void *data, void *fdata);
|
||||||
|
|
||||||
/* to save writing this in N places - the sctions are defined here */
|
/* to save writing this in N places - the sctions are defined here */
|
||||||
|
@ -703,6 +704,22 @@ e_actions_shutdown(void)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
E_Action *
|
||||||
|
e_action_add(char *name)
|
||||||
|
{
|
||||||
|
E_Action *act;
|
||||||
|
|
||||||
|
act = e_action_find(name);
|
||||||
|
if (!act)
|
||||||
|
{
|
||||||
|
act = E_OBJECT_ALLOC(E_Action, E_ACTION_TYPE, _e_action_free);
|
||||||
|
if (!act) return NULL;
|
||||||
|
act->name = strdup(name);
|
||||||
|
actions = evas_hash_add(actions, name, act);
|
||||||
|
}
|
||||||
|
return act;
|
||||||
|
}
|
||||||
|
|
||||||
E_Action *
|
E_Action *
|
||||||
e_action_find(char *name)
|
e_action_find(char *name)
|
||||||
{
|
{
|
||||||
|
@ -712,45 +729,20 @@ e_action_find(char *name)
|
||||||
return act;
|
return act;
|
||||||
}
|
}
|
||||||
|
|
||||||
E_Action *
|
|
||||||
e_action_set(char *name)
|
|
||||||
{
|
|
||||||
E_Action *act;
|
|
||||||
|
|
||||||
act = e_action_find(name);
|
|
||||||
if (!act)
|
|
||||||
{
|
|
||||||
act = calloc(1, sizeof(E_Action));
|
|
||||||
if (!act) return NULL;
|
|
||||||
act->name = strdup(name);
|
|
||||||
actions = evas_hash_add(actions, name, act);
|
|
||||||
}
|
|
||||||
return act;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
e_action_del(char *name)
|
|
||||||
{
|
|
||||||
E_Action *act;
|
|
||||||
|
|
||||||
act = e_action_find(name);
|
|
||||||
if (act)
|
|
||||||
{
|
|
||||||
actions = evas_hash_del(actions, name, act);
|
|
||||||
IF_FREE(act->name);
|
|
||||||
free(act);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_action_free(E_Action *act)
|
||||||
|
{
|
||||||
|
actions = evas_hash_del(actions, act->name, act);
|
||||||
|
IF_FREE(act->name);
|
||||||
|
free(act);
|
||||||
|
}
|
||||||
|
|
||||||
static Evas_Bool
|
static Evas_Bool
|
||||||
_e_actions_cb_free(Evas_Hash *hash __UNUSED__, const char *key __UNUSED__,
|
_e_actions_cb_free(Evas_Hash *hash __UNUSED__, const char *key __UNUSED__,
|
||||||
void *data, void *fdata __UNUSED__)
|
void *data, void *fdata __UNUSED__)
|
||||||
{
|
{
|
||||||
E_Action *act;
|
e_object_del(E_OBJECT(data));
|
||||||
|
|
||||||
act = data;
|
|
||||||
IF_FREE(act->name);
|
|
||||||
free(act);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,16 @@
|
||||||
|
|
||||||
typedef struct _E_Action E_Action;
|
typedef struct _E_Action E_Action;
|
||||||
|
|
||||||
|
#else
|
||||||
|
#ifndef E_ACTIONS_H
|
||||||
|
#define E_ACTIONS_H
|
||||||
|
|
||||||
|
#define E_ACTION_TYPE 0xE0b01010
|
||||||
|
|
||||||
struct _E_Action
|
struct _E_Action
|
||||||
{
|
{
|
||||||
|
E_Object e_obj_inherit;
|
||||||
|
|
||||||
char *name;
|
char *name;
|
||||||
struct {
|
struct {
|
||||||
void (*go) (E_Object *obj, char *params);
|
void (*go) (E_Object *obj, char *params);
|
||||||
|
@ -18,16 +26,11 @@ struct _E_Action
|
||||||
} func;
|
} func;
|
||||||
};
|
};
|
||||||
|
|
||||||
#else
|
|
||||||
#ifndef E_ACTIONS_H
|
|
||||||
#define E_ACTIONS_H
|
|
||||||
|
|
||||||
EAPI int e_actions_init(void);
|
EAPI int e_actions_init(void);
|
||||||
EAPI int e_actions_shutdown(void);
|
EAPI int e_actions_shutdown(void);
|
||||||
|
|
||||||
|
EAPI E_Action *e_action_add(char *name);
|
||||||
EAPI E_Action *e_action_find(char *name);
|
EAPI E_Action *e_action_find(char *name);
|
||||||
EAPI E_Action *e_action_set(char *name);
|
|
||||||
EAPI void e_action_del(char *name);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1879,6 +1879,12 @@ _e_border_free(E_Border *bd)
|
||||||
_e_border_move_end(bd);
|
_e_border_move_end(bd);
|
||||||
/* TODO: Other states to end before dying? */
|
/* TODO: Other states to end before dying? */
|
||||||
|
|
||||||
|
if (bd->cur_mouse_action)
|
||||||
|
{
|
||||||
|
e_object_unref(E_OBJECT(bd->cur_mouse_action));
|
||||||
|
bd->cur_mouse_action = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
IF_FREE(bd->shape_rects);
|
IF_FREE(bd->shape_rects);
|
||||||
bd->shape_rects_num = 0;
|
bd->shape_rects_num = 0;
|
||||||
if (bd->dangling_ref_check)
|
if (bd->dangling_ref_check)
|
||||||
|
@ -2636,6 +2642,8 @@ _e_border_cb_window_move_resize_request(void *data, int ev_type, void *ev)
|
||||||
bd->resize_mode = RESIZE_TL;
|
bd->resize_mode = RESIZE_TL;
|
||||||
|
|
||||||
bd->cur_mouse_action = e_action_find("window_resize");
|
bd->cur_mouse_action = e_action_find("window_resize");
|
||||||
|
if (bd->cur_mouse_action)
|
||||||
|
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
||||||
GRAV_SET(bd, ECORE_X_GRAVITY_SE);
|
GRAV_SET(bd, ECORE_X_GRAVITY_SE);
|
||||||
}
|
}
|
||||||
else if (e->direction == RESIZE_T)
|
else if (e->direction == RESIZE_T)
|
||||||
|
@ -2645,6 +2653,8 @@ _e_border_cb_window_move_resize_request(void *data, int ev_type, void *ev)
|
||||||
bd->resize_mode = RESIZE_T;
|
bd->resize_mode = RESIZE_T;
|
||||||
|
|
||||||
bd->cur_mouse_action = e_action_find("window_resize");
|
bd->cur_mouse_action = e_action_find("window_resize");
|
||||||
|
if (bd->cur_mouse_action)
|
||||||
|
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
||||||
GRAV_SET(bd, ECORE_X_GRAVITY_S);
|
GRAV_SET(bd, ECORE_X_GRAVITY_S);
|
||||||
}
|
}
|
||||||
else if (e->direction == RESIZE_TR)
|
else if (e->direction == RESIZE_TR)
|
||||||
|
@ -2654,6 +2664,8 @@ _e_border_cb_window_move_resize_request(void *data, int ev_type, void *ev)
|
||||||
bd->resize_mode = RESIZE_TR;
|
bd->resize_mode = RESIZE_TR;
|
||||||
|
|
||||||
bd->cur_mouse_action = e_action_find("window_resize");
|
bd->cur_mouse_action = e_action_find("window_resize");
|
||||||
|
if (bd->cur_mouse_action)
|
||||||
|
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
||||||
GRAV_SET(bd, ECORE_X_GRAVITY_SW);
|
GRAV_SET(bd, ECORE_X_GRAVITY_SW);
|
||||||
}
|
}
|
||||||
else if (e->direction == RESIZE_R)
|
else if (e->direction == RESIZE_R)
|
||||||
|
@ -2663,6 +2675,8 @@ _e_border_cb_window_move_resize_request(void *data, int ev_type, void *ev)
|
||||||
bd->resize_mode = RESIZE_R;
|
bd->resize_mode = RESIZE_R;
|
||||||
|
|
||||||
bd->cur_mouse_action = e_action_find("window_resize");
|
bd->cur_mouse_action = e_action_find("window_resize");
|
||||||
|
if (bd->cur_mouse_action)
|
||||||
|
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
||||||
GRAV_SET(bd, ECORE_X_GRAVITY_W);
|
GRAV_SET(bd, ECORE_X_GRAVITY_W);
|
||||||
}
|
}
|
||||||
else if (e->direction == RESIZE_BR)
|
else if (e->direction == RESIZE_BR)
|
||||||
|
@ -2672,6 +2686,8 @@ _e_border_cb_window_move_resize_request(void *data, int ev_type, void *ev)
|
||||||
bd->resize_mode = RESIZE_BR;
|
bd->resize_mode = RESIZE_BR;
|
||||||
|
|
||||||
bd->cur_mouse_action = e_action_find("window_resize");
|
bd->cur_mouse_action = e_action_find("window_resize");
|
||||||
|
if (bd->cur_mouse_action)
|
||||||
|
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
||||||
GRAV_SET(bd, ECORE_X_GRAVITY_NW);
|
GRAV_SET(bd, ECORE_X_GRAVITY_NW);
|
||||||
}
|
}
|
||||||
else if (e->direction == RESIZE_B)
|
else if (e->direction == RESIZE_B)
|
||||||
|
@ -2681,6 +2697,8 @@ _e_border_cb_window_move_resize_request(void *data, int ev_type, void *ev)
|
||||||
bd->resize_mode = RESIZE_B;
|
bd->resize_mode = RESIZE_B;
|
||||||
|
|
||||||
bd->cur_mouse_action = e_action_find("window_resize");
|
bd->cur_mouse_action = e_action_find("window_resize");
|
||||||
|
if (bd->cur_mouse_action)
|
||||||
|
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
||||||
GRAV_SET(bd, ECORE_X_GRAVITY_N);
|
GRAV_SET(bd, ECORE_X_GRAVITY_N);
|
||||||
}
|
}
|
||||||
else if (e->direction == RESIZE_BL)
|
else if (e->direction == RESIZE_BL)
|
||||||
|
@ -2690,6 +2708,8 @@ _e_border_cb_window_move_resize_request(void *data, int ev_type, void *ev)
|
||||||
bd->resize_mode = RESIZE_BL;
|
bd->resize_mode = RESIZE_BL;
|
||||||
|
|
||||||
bd->cur_mouse_action = e_action_find("window_resize");
|
bd->cur_mouse_action = e_action_find("window_resize");
|
||||||
|
if (bd->cur_mouse_action)
|
||||||
|
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
||||||
GRAV_SET(bd, ECORE_X_GRAVITY_NE);
|
GRAV_SET(bd, ECORE_X_GRAVITY_NE);
|
||||||
}
|
}
|
||||||
else if (e->direction == RESIZE_L)
|
else if (e->direction == RESIZE_L)
|
||||||
|
@ -2699,16 +2719,19 @@ _e_border_cb_window_move_resize_request(void *data, int ev_type, void *ev)
|
||||||
bd->resize_mode = RESIZE_L;
|
bd->resize_mode = RESIZE_L;
|
||||||
|
|
||||||
bd->cur_mouse_action = e_action_find("window_resize");
|
bd->cur_mouse_action = e_action_find("window_resize");
|
||||||
|
if (bd->cur_mouse_action)
|
||||||
|
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
||||||
GRAV_SET(bd, ECORE_X_GRAVITY_E);
|
GRAV_SET(bd, ECORE_X_GRAVITY_E);
|
||||||
}
|
}
|
||||||
else if (e->direction == MOVE)
|
else if (e->direction == MOVE)
|
||||||
{
|
{
|
||||||
if (!_e_border_move_begin(bd))
|
if (!_e_border_move_begin(bd))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
bd->moving = 1;
|
bd->moving = 1;
|
||||||
|
|
||||||
bd->cur_mouse_action = e_action_find("window_move");
|
bd->cur_mouse_action = e_action_find("window_move");
|
||||||
|
if (bd->cur_mouse_action)
|
||||||
|
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -3177,6 +3200,8 @@ _e_border_cb_mouse_down(void *data, int type, void *event)
|
||||||
bd->cur_mouse_action =
|
bd->cur_mouse_action =
|
||||||
e_bindings_mouse_down_event_handle(E_BINDING_CONTEXT_BORDER,
|
e_bindings_mouse_down_event_handle(E_BINDING_CONTEXT_BORDER,
|
||||||
E_OBJECT(bd), ev);
|
E_OBJECT(bd), ev);
|
||||||
|
if (bd->cur_mouse_action)
|
||||||
|
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
||||||
}
|
}
|
||||||
e_focus_event_mouse_down(bd);
|
e_focus_event_mouse_down(bd);
|
||||||
}
|
}
|
||||||
|
@ -3255,6 +3280,7 @@ _e_border_cb_mouse_up(void *data, int type, void *event)
|
||||||
bd->cur_mouse_action->func.end_mouse(E_OBJECT(bd), "", ev);
|
bd->cur_mouse_action->func.end_mouse(E_OBJECT(bd), "", ev);
|
||||||
else if (bd->cur_mouse_action->func.end)
|
else if (bd->cur_mouse_action->func.end)
|
||||||
bd->cur_mouse_action->func.end(E_OBJECT(bd), "");
|
bd->cur_mouse_action->func.end(E_OBJECT(bd), "");
|
||||||
|
e_object_unref(E_OBJECT(bd->cur_mouse_action));
|
||||||
bd->cur_mouse_action = NULL;
|
bd->cur_mouse_action = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -215,12 +215,12 @@ struct _E_Border
|
||||||
} strut;
|
} strut;
|
||||||
unsigned char ping : 1;
|
unsigned char ping : 1;
|
||||||
struct {
|
struct {
|
||||||
unsigned char request : 1;
|
unsigned char request : 1;
|
||||||
unsigned int wait;
|
unsigned int wait;
|
||||||
Ecore_X_Sync_Alarm alarm;
|
Ecore_X_Sync_Alarm alarm;
|
||||||
Ecore_X_Sync_Counter counter;
|
Ecore_X_Sync_Counter counter;
|
||||||
unsigned int serial;
|
unsigned int serial;
|
||||||
double time;
|
double time; // FIXME: change
|
||||||
} sync;
|
} sync;
|
||||||
|
|
||||||
/* NetWM Window state */
|
/* NetWM Window state */
|
||||||
|
|
|
@ -546,6 +546,12 @@ _e_zone_free(E_Zone *zone)
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
||||||
|
if (zone->cur_mouse_action)
|
||||||
|
{
|
||||||
|
e_object_unref(E_OBJECT(zone->cur_mouse_action));
|
||||||
|
zone->cur_mouse_action = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* remove handlers */
|
/* remove handlers */
|
||||||
for (l = zone->handlers; l; l = l->next)
|
for (l = zone->handlers; l; l = l->next)
|
||||||
{
|
{
|
||||||
|
@ -565,10 +571,11 @@ _e_zone_free(E_Zone *zone)
|
||||||
evas_object_del(zone->bg_object);
|
evas_object_del(zone->bg_object);
|
||||||
/* free desks */
|
/* free desks */
|
||||||
for (x = 0; x < zone->desk_x_count; x++)
|
for (x = 0; x < zone->desk_x_count; x++)
|
||||||
for(y = 0; y < zone->desk_y_count; y++)
|
{
|
||||||
e_object_del(E_OBJECT(zone->desks[x + (y * zone->desk_x_count)]));
|
for(y = 0; y < zone->desk_y_count; y++)
|
||||||
|
e_object_del(E_OBJECT(zone->desks[x + (y * zone->desk_x_count)]));
|
||||||
|
}
|
||||||
free(zone->desks);
|
free(zone->desks);
|
||||||
|
|
||||||
free(zone);
|
free(zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -592,6 +599,8 @@ _e_zone_cb_bg_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_i
|
||||||
zone->cur_mouse_action =
|
zone->cur_mouse_action =
|
||||||
e_bindings_mouse_down_event_handle(E_BINDING_CONTEXT_ZONE,
|
e_bindings_mouse_down_event_handle(E_BINDING_CONTEXT_ZONE,
|
||||||
E_OBJECT(zone), ev2);
|
E_OBJECT(zone), ev2);
|
||||||
|
if (zone->cur_mouse_action)
|
||||||
|
e_object_ref(E_OBJECT(zone->cur_mouse_action));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -616,6 +625,7 @@ _e_zone_cb_bg_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_inf
|
||||||
else if (zone->cur_mouse_action->func.end)
|
else if (zone->cur_mouse_action->func.end)
|
||||||
zone->cur_mouse_action->func.end(E_OBJECT(zone), "");
|
zone->cur_mouse_action->func.end(E_OBJECT(zone), "");
|
||||||
}
|
}
|
||||||
|
e_object_unref(E_OBJECT(zone->cur_mouse_action));
|
||||||
zone->cur_mouse_action = NULL;
|
zone->cur_mouse_action = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue