From 809c84e26a75884edc15be34de493f1665c42bb6 Mon Sep 17 00:00:00 2001 From: "Mun, Gwan-gyeong" Date: Tue, 2 Dec 2014 19:28:23 +0900 Subject: [PATCH] Merge from TIZEN 2.3 Apply build option to tizen 3.0 Change-Id: I626b304e38ccacd457359fc8e954b747f21d6646 --- comp-tizen/src/e_mod_comp.c | 55 +++++- comp-tizen/src/e_mod_comp_canvas.c | 6 + comp-tizen/src/e_mod_comp_canvas.h | 2 + comp-tizen/src/e_mod_comp_effect.c | 6 + comp-tizen/src/e_mod_comp_effect_win_rotation.c | 2 + comp-tizen/src/e_mod_comp_effect_win_rotation.h | 2 + comp-tizen/src/e_mod_comp_shared_types.h | 2 + comp-tizen/src/e_mod_comp_util.c | 1 + comp-tizen/src/e_mod_config.c | 5 +- devicemgr/configure.ac | 2 +- devicemgr/src/e_mod_main.c | 55 ++++++ devicemgr/src/e_mod_main.h | 7 + devicemgr/src/scrnconf_devicemgr.h | 1 + devicemgr/src/sf_rotation_devicemgr.c | 3 + e17-extra-modules.manifest | 5 + e17-extra-modules.rule | 9 + extndialog/src/extndialog.c | 2 +- illume2-tizen/src/e_illume.c | 19 ++ illume2-tizen/src/e_illume.h | 1 + illume2-tizen/src/e_mod_policy.c | 6 + illume2-tizen/src/policies/illume/illume.c | 2 + illume2-tizen/src/policies/illume/policy.c | 252 ++++++++++++++++++------ illume2-tizen/src/policies/illume/policy.h | 3 + keyrouter/configure.ac | 2 +- move-tizen/src/e_mod_move.c | 71 ++++--- move-tizen/src/e_mod_move_atoms.c | 5 +- move-tizen/src/e_mod_move_atoms.h | 1 + move-tizen/src/e_mod_move_border_shape_input.c | 2 - move-tizen/src/e_mod_move_border_type.c | 12 ++ move-tizen/src/e_mod_move_border_type.h | 4 + move-tizen/src/e_mod_move_indicator_widget.c | 185 +++++++++++++---- move-tizen/src/e_mod_move_indicator_widget.h | 5 + move-tizen/src/e_mod_move_mini_apptray_widget.c | 2 + move-tizen/src/e_mod_move_quickpanel.c | 39 +++- move-tizen/src/e_mod_move_util.c | 29 +-- move-tizen/src/e_mod_move_util.h | 1 - packaging/e17-extra-modules.changes | 2 - packaging/e17-extra-modules.spec | 58 ++++-- 38 files changed, 672 insertions(+), 194 deletions(-) create mode 100644 e17-extra-modules.rule delete mode 100644 packaging/e17-extra-modules.changes diff --git a/comp-tizen/src/e_mod_comp.c b/comp-tizen/src/e_mod_comp.c index 604dd5c..12b4ea9 100644 --- a/comp-tizen/src/e_mod_comp.c +++ b/comp-tizen/src/e_mod_comp.c @@ -1520,6 +1520,35 @@ _e_mod_comp_win_del(E_Comp_Win *cw) } static void +_e_mod_comp_win_prop_check(E_Comp_Win *cw) +{ + Ecore_X_Window win; + Ecore_X_Sync_Counter counter; + + E_CHECK(cw); + win = e_mod_comp_util_client_xid_get(cw); + + // ECORE_X_ATOM_E_COMP_SYNC_COUNTER + counter = ecore_x_e_comp_sync_counter_get(win); + if (cw->counter != counter) + { + if (cw->counter) + { + ecore_x_e_comp_sync_cancel_send(win); + ecore_x_sync_counter_inc(cw->counter, 1); + cw->sync_info.val++; + } + cw->counter = counter; + if (cw->counter) + { + ecore_x_sync_counter_inc(cw->counter, 1); + ecore_x_e_comp_sync_begin_send(win); + cw->sync_info.val = 1; + } + } +} + +static void _e_mod_comp_win_show(E_Comp_Win *cw) { Ecore_X_Window win; @@ -1974,6 +2003,25 @@ _e_mod_comp_destroy(void *data __UNUSED__, return ECORE_CALLBACK_PASS_ON; } +/* Compositor must check the client window's property that want to be shown. + * TODO:Compositor will check the property of ECORE_X_ATOM_E_COMP_SYNC_COUNTER for now, + * but the other properties may also need to check later. + */ +static Eina_Bool +_e_mod_comp_show_request(void *data __UNUSED__, + int type __UNUSED__, + void *event) +{ + Ecore_X_Event_Window_Show_Request *ev = event; + E_Comp_Win *cw = _e_mod_comp_win_find(ev->win); + if (!cw) return ECORE_CALLBACK_PASS_ON; + ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw), + "%15.15s|w:0x%08x|bd:%d cw:%p", "X_SHOW_REQUEST", + ev->win, _e_mod_comp_win_is_border(cw), cw); + _e_mod_comp_win_prop_check(cw); + return ECORE_CALLBACK_PASS_ON; +} + static Eina_Bool _e_mod_comp_show(void *data __UNUSED__, int type __UNUSED__, @@ -2744,7 +2792,7 @@ _e_mod_comp_bd_resize(void *data __UNUSED__, if ((cw->w == ev->border->w) && (cw->h == ev->border->h)) return ECORE_CALLBACK_PASS_ON; _e_mod_comp_win_configure - (cw, cw->x, cw->y, + (cw, ev->border->x, ev->border->y, ev->border->w, ev->border->h, cw->border); return ECORE_CALLBACK_PASS_ON; } @@ -3848,6 +3896,7 @@ _e_mod_comp_zone_del(void *data __UNUSED__, return ECORE_CALLBACK_PASS_ON; } +#ifdef _F_ZONE_WINDOW_ROTATION_ static Eina_Bool _e_mod_comp_zone_rot_begin(void *data __UNUSED__, int type __UNUSED__, @@ -3943,6 +3992,7 @@ _e_mod_comp_zone_rot_end(void *data __UNUSED__, } return ECORE_CALLBACK_PASS_ON; } +#endif ////////////////////////////////////////////////////////////////////////// @@ -3960,6 +4010,7 @@ e_mod_comp_init(void) handlers = eina_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CREATE, _e_mod_comp_create, NULL)); handlers = eina_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DESTROY, _e_mod_comp_destroy, NULL)); + handlers = eina_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHOW_REQUEST, _e_mod_comp_show_request, NULL)); handlers = eina_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHOW, _e_mod_comp_show, NULL)); handlers = eina_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_HIDE, _e_mod_comp_hide, NULL)); handlers = eina_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_REPARENT, _e_mod_comp_reparent, NULL)); @@ -3986,9 +4037,11 @@ e_mod_comp_init(void) handlers = eina_list_append(handlers, ecore_event_handler_add(E_EVENT_ZONE_MOVE_RESIZE, _e_mod_comp_zone_move_resize, NULL)); handlers = eina_list_append(handlers, ecore_event_handler_add(E_EVENT_ZONE_ADD, _e_mod_comp_zone_add, NULL)); handlers = eina_list_append(handlers, ecore_event_handler_add(E_EVENT_ZONE_DEL, _e_mod_comp_zone_del, NULL)); +#ifdef _F_ZONE_WINDOW_ROTATION_ handlers = eina_list_append(handlers, ecore_event_handler_add(E_EVENT_ZONE_ROTATION_CHANGE_BEGIN, _e_mod_comp_zone_rot_begin, NULL)); handlers = eina_list_append(handlers, ecore_event_handler_add(E_EVENT_ZONE_ROTATION_CHANGE_CANCEL, _e_mod_comp_zone_rot_cancel, NULL)); handlers = eina_list_append(handlers, ecore_event_handler_add(E_EVENT_ZONE_ROTATION_CHANGE_END, _e_mod_comp_zone_rot_end, NULL)); +#endif res = e_mod_comp_atoms_init(); E_CHECK_RETURN(res, 0); diff --git a/comp-tizen/src/e_mod_comp_canvas.c b/comp-tizen/src/e_mod_comp_canvas.c index ae75fdb..6619cd4 100644 --- a/comp-tizen/src/e_mod_comp_canvas.c +++ b/comp-tizen/src/e_mod_comp_canvas.c @@ -335,16 +335,20 @@ e_mod_comp_canvas_add(E_Comp *c, } } +#ifdef _F_ZONE_WINDOW_ROTATION_ canvas->zr = e_mod_comp_effect_zone_rotation_new(canvas); E_CHECK_GOTO(canvas->zr, error_cleanup); +#endif c->canvases = eina_list_append(c->canvases, canvas); return canvas; error_cleanup: +#ifdef _F_ZONE_WINDOW_ROTATION_ if (canvas->zr) e_mod_comp_effect_zone_rotation_free(canvas->zr); +#endif EINA_LIST_FREE(canvas->layers, ly) { @@ -381,11 +385,13 @@ e_mod_comp_canvas_del(E_Comp_Canvas *canvas) evas_object_del(canvas->bg_img); canvas->bg_img = NULL; } +#ifdef _F_ZONE_WINDOW_ROTATION_ if (canvas->zr) { e_mod_comp_effect_zone_rotation_free(canvas->zr); canvas->zr = NULL; } +#endif if (canvas->ov) { e_mod_comp_hw_ov_win_free(canvas->ov); diff --git a/comp-tizen/src/e_mod_comp_canvas.h b/comp-tizen/src/e_mod_comp_canvas.h index 98dbcad..5de4554 100644 --- a/comp-tizen/src/e_mod_comp_canvas.h +++ b/comp-tizen/src/e_mod_comp_canvas.h @@ -65,7 +65,9 @@ struct _E_Comp_Canvas Evas_Object *bg_img; Eina_Bool use_bg_img : 1; E_Comp_HW_Ov_Win *ov; +#ifdef _F_ZONE_WINDOW_ROTATION_ E_Comp_Effect_Zone_Rotation *zr; +#endif }; EINTERN E_Comp_Canvas *e_mod_comp_canvas_add(E_Comp *c, E_Zone *zone); diff --git a/comp-tizen/src/e_mod_comp_effect.c b/comp-tizen/src/e_mod_comp_effect.c index 38dad4f..1d1557d 100644 --- a/comp-tizen/src/e_mod_comp_effect.c +++ b/comp-tizen/src/e_mod_comp_effect.c @@ -846,9 +846,11 @@ _effect_above_wins_set(E_Comp_Win *cw, { if (cw->c->keyboard_effect) { +#ifdef _F_ZONE_WINDOW_ROTATION_ if (e_mod_comp_effect_win_angle_get(_cw)) _MAKE_EMISSION("e,state,visible,off,angle,%d", _cw->angle); else +#endif _MAKE_EMISSION("e,state,visible,off,angle,0"); } else @@ -928,9 +930,11 @@ _effect_show(E_Comp_Win *cw) { _effect_below_wins_set(cw); +#ifdef _F_ZONE_WINDOW_ROTATION_ if (e_mod_comp_effect_win_angle_get(cw)) _MAKE_EMISSION("e,state,window,angle,%d", cw->angle); else +#endif _MAKE_EMISSION("e,state,window,angle,0"); _effect_win_set(cw, emission); @@ -1023,9 +1027,11 @@ _effect_hide(E_Comp_Win *cw) { _effect_below_wins_set(cw); +#ifdef _F_ZONE_WINDOW_ROTATION_ if (e_mod_comp_effect_win_angle_get(cw)) _MAKE_EMISSION("e,state,visible,off,angle,%d", cw->angle); else +#endif _MAKE_EMISSION("e,state,visible,off,angle,0"); _effect_win_set(cw, emission); diff --git a/comp-tizen/src/e_mod_comp_effect_win_rotation.c b/comp-tizen/src/e_mod_comp_effect_win_rotation.c index 43277bf..530d35a 100644 --- a/comp-tizen/src/e_mod_comp_effect_win_rotation.c +++ b/comp-tizen/src/e_mod_comp_effect_win_rotation.c @@ -5,6 +5,7 @@ #include "e_mod_comp_effect_win_rotation.h" #include +#ifdef _F_ZONE_WINDOW_ROTATION_ typedef struct _E_Comp_Zone_Rotation_Effect_Begin E_Comp_Zone_Rotation_Effect_Begin; typedef struct _E_Comp_Zone_Rotation_Effect_End E_Comp_Zone_Rotation_Effect_End; @@ -440,3 +441,4 @@ _effect_zone_rot_end_op(Elm_Transit_Effect *effect, evas_object_map_enable_set(ctx->o, EINA_TRUE); evas_map_free(m); } +#endif diff --git a/comp-tizen/src/e_mod_comp_effect_win_rotation.h b/comp-tizen/src/e_mod_comp_effect_win_rotation.h index 18e53a6..911d36b 100644 --- a/comp-tizen/src/e_mod_comp_effect_win_rotation.h +++ b/comp-tizen/src/e_mod_comp_effect_win_rotation.h @@ -3,6 +3,7 @@ #ifndef E_MOD_COMP_EFFECT_WIN_ROTATION_H #define E_MOD_COMP_EFFECT_WIN_ROTATION_H +#ifdef _F_ZONE_WINDOW_ROTATION_ /* window rotation effect and handler functions */ EINTERN Eina_Bool e_mod_comp_effect_win_angle_get(E_Comp_Win *cw); @@ -12,6 +13,7 @@ EINTERN Eina_Bool e_mod_comp_effect_zone_rotation_begin(E_Com EINTERN Eina_Bool e_mod_comp_effect_zone_rotation_end(E_Comp_Effect_Zone_Rotation *zr); EINTERN Eina_Bool e_mod_comp_effect_zone_rotation_cancel(E_Comp_Effect_Zone_Rotation *zr); EINTERN Eina_Bool e_mod_comp_effect_zone_rotation_do(E_Comp_Effect_Zone_Rotation *zr); +#endif #endif #endif diff --git a/comp-tizen/src/e_mod_comp_shared_types.h b/comp-tizen/src/e_mod_comp_shared_types.h index cd02655..293d5d7 100644 --- a/comp-tizen/src/e_mod_comp_shared_types.h +++ b/comp-tizen/src/e_mod_comp_shared_types.h @@ -6,7 +6,9 @@ typedef struct _E_Comp E_Comp; typedef struct _E_Comp_Win E_Comp_Win; typedef struct _E_Comp_Effect_Object E_Comp_Effect_Object; +#ifdef _F_ZONE_WINDOW_ROTATION_ typedef struct _E_Comp_Effect_Zone_Rotation E_Comp_Effect_Zone_Rotation; +#endif #include "e.h" #include "e_mod_main.h" diff --git a/comp-tizen/src/e_mod_comp_util.c b/comp-tizen/src/e_mod_comp_util.c index 3c28ca6..54cb38c 100644 --- a/comp-tizen/src/e_mod_comp_util.c +++ b/comp-tizen/src/e_mod_comp_util.c @@ -1,4 +1,5 @@ #include +#include #include "e_mod_comp_shared_types.h" #include "e_mod_comp_debug.h" diff --git a/comp-tizen/src/e_mod_config.c b/comp-tizen/src/e_mod_config.c index 3e74bfc..90d3e33 100644 --- a/comp-tizen/src/e_mod_config.c +++ b/comp-tizen/src/e_mod_config.c @@ -551,7 +551,10 @@ _match_label_get(Match_Config *m) } if (!eina_strbuf_length_get(buf)) - return _("Unknown"); + { + eina_strbuf_free(buf); + return _("Unknown"); + } label = strdup(eina_strbuf_string_get(buf)); eina_strbuf_free(buf); diff --git a/devicemgr/configure.ac b/devicemgr/configure.ac index c1a6036..526d7f2 100755 --- a/devicemgr/configure.ac +++ b/devicemgr/configure.ac @@ -62,7 +62,7 @@ dnl ======================================================================== # checks for pkg-config dnl ======================================================================== #PKG_CHECK_MODULES(ENLIGHTENMENT, [enlightenment, gestureproto, xgesture]) -PKG_CHECK_MODULES(ENLIGHTENMENT, [enlightenment, sensor, vconf, dlog]) +PKG_CHECK_MODULES(ENLIGHTENMENT, [enlightenment, vconf, dlog]) ENLIGHTENMENT_CFLAGS="${ENLIGHTENMENT_CFLAGS} " AC_SUBST(ENLIGHTENMENT_CFLAGS) AC_SUBST(ENLIGHTENMENT_LIBS) diff --git a/devicemgr/src/e_mod_main.c b/devicemgr/src/e_mod_main.c index 79a5c0d..e10fa87 100755 --- a/devicemgr/src/e_mod_main.c +++ b/devicemgr/src/e_mod_main.c @@ -48,10 +48,13 @@ e_modapi_init(E_Module* m) e_devicemgr.zone_add_handler = ecore_event_handler_add(E_EVENT_ZONE_ADD, (Ecore_Event_Handler_Cb)_e_devicemgr_cb_zone_add, NULL); e_devicemgr.zone_del_handler = ecore_event_handler_add(E_EVENT_ZONE_DEL, (Ecore_Event_Handler_Cb)_e_devicemgr_cb_zone_del, NULL); + e_devicemgr.e_msg_handler = e_msg_handler_add(_e_mod_move_e_msg_handler, NULL); + if (!e_devicemgr.window_property_handler) SLOG(LOG_DEBUG, "DEVICEMGR", "[e_devicemgr][%s] Failed to add ECORE_X_EVENT_WINDOW_PROPERTY handler\n", __FUNCTION__); if (!e_devicemgr.event_generic_handler) SLOG(LOG_DEBUG, "DEVICEMGR", "[e_devicemgr][%s] Failed to add ECORE_X_EVENT_GENERIC handler\n", __FUNCTION__); if (!e_devicemgr.zone_add_handler) SLOG(LOG_DEBUG, "DEVICEMGR", "[e_devicemgr][%s] Failed to add E_EVENT_ZONE_ADD handler\n", __FUNCTION__); if (!e_devicemgr.zone_del_handler) SLOG(LOG_DEBUG, "DEVICEMGR", "[e_devicemgr][%s] Failed to add E_EVENT_ZONE_DEL handler\n", __FUNCTION__); + if (!e_devicemgr.e_msg_handler) SLOG(LOG_DEBUG, "DEVICEMGR", "[e_devicemgr][%s] Failed to add E_MSG handler\n", __FUNCTION__); if (e_devicemgr.scrnconf_enable) { @@ -77,6 +80,7 @@ e_modapi_shutdown(E_Module* m) ecore_event_handler_del(e_devicemgr.event_generic_handler); ecore_event_handler_del(e_devicemgr.zone_add_handler); ecore_event_handler_del(e_devicemgr.zone_del_handler); + if (e_devicemgr.e_msg_handler) e_msg_handler_del(e_devicemgr.e_msg_handler); e_devicemgr.window_property_handler = NULL; e_devicemgr.event_generic_handler = NULL; e_devicemgr.zone_add_handler = NULL; @@ -102,6 +106,7 @@ _e_devicemgr_init(void) { unsigned int val = 1; int res, ret = 1; + int enable = 0; memset(&e_devicemgr, 0, sizeof(DeviceMgr)); @@ -143,8 +148,10 @@ _e_devicemgr_init(void) e_devicemgr.atomDevMgrCfg = ecore_x_atom_get(STR_ATOM_DEVICEMGR_CFG); e_devicemgr.atomFloat = ecore_x_atom_get(XATOM_FLOAT); e_devicemgr.atomInputTransform = ecore_x_atom_get(EVDEVMULTITOUCH_PROP_TRANSFORM); + e_devicemgr.atomExKeyboardEnabled = ecore_x_atom_get(E_PROP_EXTERNAL_KEYBOARD_ENABLED); ecore_x_window_prop_card32_set(e_devicemgr.rootWin, e_devicemgr.atomTouchInput, &val, 1); + ecore_x_window_prop_card32_set(e_devicemgr.rootWin, e_devicemgr.atomExKeyboardEnabled, &enable, 1); memset(&e_devicemgr.virtual_touchpad_area_info, -1, sizeof(e_devicemgr.virtual_touchpad_area_info)); memset(&e_devicemgr.virtual_multitouch_id, -1, sizeof(e_devicemgr.virtual_multitouch_id)); e_devicemgr.virtual_touchpad_pointed_window = 0; @@ -193,10 +200,12 @@ _e_devicemgr_init(void) } e_mod_scrnconf_container_bg_canvas_visible_set(EINA_FALSE); +#ifdef _F_DEVICE_ROTATION_ if(EINA_FALSE == e_mod_sf_rotation_init()) { SLOG(LOG_DEBUG, "DEVICEMGR", "[e_devicemgr] Failed to init rotation!\n"); } +#endif out: return ret; @@ -205,10 +214,12 @@ out: static void _e_devicemgr_fini(void) { +#ifdef _F_DEVICE_ROTATION_ if(EINA_FALSE == e_mod_sf_rotation_deinit()) { SLOG(LOG_DEBUG, "DEVICEMGR", "[e_devicemgr] Failed to deinit rotation!\n"); } +#endif e_mod_devicemgr_config_shutdown(); } @@ -658,6 +669,50 @@ _e_devicemgr_cb_client_message (void* data, int type, void* event) return 1; } +static void +_e_mod_move_e_msg_handler(void *data, const char *name, const char *info, int val, E_Object *obj, void *msgdata) +{ + Eina_List* l; + DeviceMgr_Device_Info *ldata; + unsigned int ret_val = 1; + + if (!strncmp(name, "e.move.quickpanel", sizeof("e.move.quickpanel"))) + { + if ((!strncmp(info, "start", sizeof("start")))) + { + // quickpanel state on + ret_val = 0; + ecore_x_window_prop_card32_set(e_devicemgr.rootWin, e_devicemgr.atomExKeyboardEnabled, &ret_val, 1); + EINA_LIST_FOREACH(e_devicemgr.device_list, l ,ldata) + { + if(ldata->type == E_DEVICEMGR_KEYBOARD) + { + if(_e_devicemgr_detach_slave(ldata->id) == EINA_FALSE) + { + SLOG(LOG_DEBUG, "DEVICEMGR", "[DeviceMgr] : fail to detach slave device(%d) \n", ldata->id); + } + } + } + } + else if ((!strncmp(info, "end", sizeof("end"))) && (val == 0)) + { + // quickpanel state off + ret_val = 1; + ecore_x_window_prop_card32_set(e_devicemgr.rootWin, e_devicemgr.atomExKeyboardEnabled, &ret_val, 1); + EINA_LIST_FOREACH(e_devicemgr.device_list, l ,ldata) + { + if(ldata->type == E_DEVICEMGR_KEYBOARD) + { + if(_e_devicemgr_reattach_slave(ldata->id, e_devicemgr.vck_id) == EINA_FALSE) + { + SLOG(LOG_DEBUG, "DEVICEMGR", "[DeviceMgr] : fail to reattach slave device(%d) to master device(%d) \n", ldata->id, e_devicemgr.vck_id); + } + } + } + } + } +} + static int _e_devicemgr_xinput_init(void) { diff --git a/devicemgr/src/e_mod_main.h b/devicemgr/src/e_mod_main.h index 91e724b..a14b9c4 100755 --- a/devicemgr/src/e_mod_main.h +++ b/devicemgr/src/e_mod_main.h @@ -60,6 +60,8 @@ #define E_VIRTUAL_TOUCHPAD_NAME "Virtual Touchpad" #define EVDEVMULTITOUCH_PROP_TRANSFORM "EvdevMultitouch Transform Matrix" #define XATOM_FLOAT "FLOAT" +#define E_PROP_EXTERNAL_KEYBOARD_ENABLED "External Keyboard Enabled" + #define DEVICEMGR_PREFIX "/usr/lib/enlightenment/modules/e17-extra-modules-devicemgr/" @@ -131,6 +133,7 @@ typedef struct _DeviceMgr_ Ecore_X_Atom atomFloat; Ecore_X_Atom atomVirtualTouchpadInt; Ecore_X_Atom atomDeviceMgrInputWindow; + Ecore_X_Atom atomExKeyboardEnabled; /* scrn conf atoms */ Ecore_X_Atom atomScrnConfDispModeSet; @@ -157,6 +160,7 @@ typedef struct _DeviceMgr_ Ecore_Event_Handler *client_message_handler; E_Border_Hook *border_move_end_hook; E_Border_Hook *border_resize_end_hook; + E_Msg_Handler *e_msg_handler; //variables to set XRROutputProperty RROutput output; @@ -208,6 +212,7 @@ static void _e_devicemgr_hook_border_move_end(void *data, void *border); static void _e_devicemgr_hook_border_resize_end(void *data, void *border); static Eina_Bool _e_devicemgr_get_zones(void); static E_Zone* _e_devicemgr_get_nth_zone(int index); +static void _e_mod_move_e_msg_handler(void *data, const char *name, const char *info, int val, E_Object *obj, void *msgdata); static void _e_devicemgr_update_input_transform_matrix(Eina_Bool reset); static void _e_devicemgr_init_transform_matrix(void); @@ -243,6 +248,8 @@ static void _e_devicemgr_virtual_multitouch_helper_init(int deviceid); static void _e_devicemgr_virtual_multitouch_helper_fini(void); static void _e_devicemgr_show_device_list(unsigned int val); +#ifdef _F_DEVICE_ROTATION_ Eina_Bool e_mod_sf_rotation_init(void); Eina_Bool e_mod_sf_rotation_deinit(void); +#endif #endif//__E_MOD_MAIN_H__ diff --git a/devicemgr/src/scrnconf_devicemgr.h b/devicemgr/src/scrnconf_devicemgr.h index bd83900..f625a90 100755 --- a/devicemgr/src/scrnconf_devicemgr.h +++ b/devicemgr/src/scrnconf_devicemgr.h @@ -3,6 +3,7 @@ #include #include +#include #define STR_ATOM_SCRNCONF_DISPMODE_SET "_SCRNCONF_DISPMODE_SET" #define STR_ATOM_SCRNCONF_INFO "_SCRNCONF_INFO" diff --git a/devicemgr/src/sf_rotation_devicemgr.c b/devicemgr/src/sf_rotation_devicemgr.c index c7ea3ff..bdd3c4e 100755 --- a/devicemgr/src/sf_rotation_devicemgr.c +++ b/devicemgr/src/sf_rotation_devicemgr.c @@ -17,6 +17,8 @@ * Please, see the COPYING file for the original copyright owner and * license. */ +#ifdef _F_DEVICE_ROTATION_ + #include #include #include @@ -390,3 +392,4 @@ _sensor_rotation_set(int ang) ATOM_DEVICE_ROTATION_ANGLE, &val, 1); } +#endif diff --git a/e17-extra-modules.manifest b/e17-extra-modules.manifest index 43b01f5..fa7ca04 100644 --- a/e17-extra-modules.manifest +++ b/e17-extra-modules.manifest @@ -2,4 +2,9 @@ + + + + + diff --git a/e17-extra-modules.rule b/e17-extra-modules.rule new file mode 100644 index 0000000..5e74dab --- /dev/null +++ b/e17-extra-modules.rule @@ -0,0 +1,9 @@ +e17 system::share rwx +e17 system::vconf_system rl +e17 system::vconf_multimedia rl +e17 system::vconf_network rl +e17 system::vconf_misc rwl +e17 system::vconf_inhouse r +e17 system::vconf_setting rl +e17 security-server::api-privilege-by-pid w +e17 e17::notification rw diff --git a/extndialog/src/extndialog.c b/extndialog/src/extndialog.c index 166bdb5..9f67e4b 100644 --- a/extndialog/src/extndialog.c +++ b/extndialog/src/extndialog.c @@ -36,7 +36,7 @@ elm_main(int argc, char **argv) elm_win_title_set(win, clas); evas_object_smart_callback_add(win, "delete,request", win_del, NULL); elm_win_alpha_set(win, EINA_TRUE); - elm_win_profiles_set(win, &profile, 1); + elm_win_profile_set(win, &profile); pop = elm_popup_add(win); elm_object_part_text_set(pop, "title,text", title); diff --git a/illume2-tizen/src/e_illume.c b/illume2-tizen/src/e_illume.c index 64fc746..39326fe 100644 --- a/illume2-tizen/src/e_illume.c +++ b/illume2-tizen/src/e_illume.c @@ -864,6 +864,25 @@ e_illume_border_is_app_selector(E_Border *bd) } EAPI Eina_Bool +e_illume_border_is_app_popup(E_Border *bd) +{ + const char *name = NULL; + const char *clas = NULL; + + if (!bd) return EINA_FALSE; + + name = bd->client.icccm.name; + clas = bd->client.icccm.class; + + if (clas == NULL) return EINA_FALSE; + if (strncmp(clas,"APP_POPUP", strlen("APP_POPUP"))!= 0) return EINA_FALSE; + if (name == NULL) return EINA_FALSE; + if (strncmp(name,"APP_POPUP", strlen("APP_POPUP"))!= 0) return EINA_FALSE; + + return EINA_TRUE; +} + +EAPI Eina_Bool e_illume_border_is_fixed(E_Border *bd) { int min_w = 0, min_h = 0; diff --git a/illume2-tizen/src/e_illume.h b/illume2-tizen/src/e_illume.h index 0586bf4..2389680 100644 --- a/illume2-tizen/src/e_illume.h +++ b/illume2-tizen/src/e_illume.h @@ -408,6 +408,7 @@ EAPI Eina_Bool e_illume_border_is_lock_screen(E_Border *bd); EAPI Eina_Bool e_illume_border_is_notification(E_Border *bd); EAPI Eina_Bool e_illume_border_is_utility(E_Border *bd); EAPI Eina_Bool e_illume_border_is_clipboard(E_Border *bd); +EAPI Eina_Bool e_illume_border_is_app_popup(E_Border *bd); EAPI void e_illume_border_min_get(E_Border *bd, int *w, int *h); EAPI void e_illume_border_max_get(E_Border *bd, int *w, int *h); diff --git a/illume2-tizen/src/e_mod_policy.c b/illume2-tizen/src/e_mod_policy.c index ffccc32..e32f6e4 100644 --- a/illume2-tizen/src/e_mod_policy.c +++ b/illume2-tizen/src/e_mod_policy.c @@ -32,7 +32,9 @@ static void _e_mod_policy_cb_hook_new_border(void *data __UNUSED__, void *data2) #ifdef _F_BORDER_HOOK_PATCH_ static void _e_mod_policy_cb_hook_del_border(void *data __UNUSED__, void *data2); #endif +#ifdef _F_ZONE_WINDOW_ROTATION_ static void _e_mod_policy_cb_hook_rotation_list_add(void *data __UNUSED__, void *data2); +#endif static Eina_Bool _e_mod_policy_cb_window_focus_in(void *data __UNUSED__, int type __UNUSED__, void *event); @@ -469,10 +471,12 @@ _e_mod_policy_hooks_add(void) e_border_hook_add(E_BORDER_HOOK_DEL_BORDER, _e_mod_policy_cb_hook_del_border, NULL)); #endif +#ifdef _F_ZONE_WINDOW_ROTATION_ _policy_hooks = eina_list_append(_policy_hooks, e_border_hook_add(E_BORDER_HOOK_ROTATION_LIST_ADD, _e_mod_policy_cb_hook_rotation_list_add, NULL)); +#endif } static void @@ -1127,6 +1131,7 @@ _e_mod_policy_cb_idle_enterer(void *data __UNUSED__) return ECORE_CALLBACK_RENEW; } +#ifdef _F_ZONE_WINDOW_ROTATION_ static void _e_mod_policy_cb_hook_rotation_list_add(void *data __UNUSED__, void *data2) { @@ -1136,3 +1141,4 @@ _e_mod_policy_cb_hook_rotation_list_add(void *data __UNUSED__, void *data2) if ((_policy) && (_policy->funcs.rotation_list_add)) _policy->funcs.rotation_list_add(bd); } +#endif diff --git a/illume2-tizen/src/policies/illume/illume.c b/illume2-tizen/src/policies/illume/illume.c index e518200..b1896cf 100644 --- a/illume2-tizen/src/policies/illume/illume.c +++ b/illume2-tizen/src/policies/illume/illume.c @@ -71,7 +71,9 @@ e_illume_policy_init(E_Illume_Policy *p) p->funcs.illume_win_state_change_request = _policy_illume_win_state_change_request; +#ifdef _F_ZONE_WINDOW_ROTATION_ p->funcs.rotation_list_add = _policy_border_hook_rotation_list_add; +#endif if (!_policy_init()) return 0; diff --git a/illume2-tizen/src/policies/illume/policy.c b/illume2-tizen/src/policies/illume/policy.c index c3f9f4d..a2728f4 100644 --- a/illume2-tizen/src/policies/illume/policy.c +++ b/illume2-tizen/src/policies/illume/policy.c @@ -170,8 +170,10 @@ static void _policy_border_uniconify_below_borders(E_Border *bd); static void _policy_border_uniconify_top_border(E_Border *bd); /* for supporting rotation */ +#ifdef _F_ZONE_WINDOW_ROTATION_ static void _policy_border_dependent_rotation(E_Border *bd, int rotation); static Eina_Bool _policy_dependent_rotation_check(E_Border *bd, int rotation); +#endif static int _prev_angle_get(Ecore_X_Window win); @@ -864,7 +866,17 @@ _policy_border_del(E_Border *bd) e_illume_border_is_app_tray(bd) || e_illume_border_is_miniapp_tray(bd))) { - _policy_border_uniconify_below_borders_by_illume(xwin_info); + if (E_CONTAINS(bd->x, bd->y, bd->w, bd->h, bd->zone->x, bd->zone->y, bd->zone->w, bd->zone->h)) + { + _policy_border_uniconify_below_borders_by_illume(xwin_info); + } + } + else + { + if (E_CONTAINS(bd->x, bd->y, bd->w, bd->h, bd->zone->x, bd->zone->y, bd->zone->w, bd->zone->h)) + { + _policy_border_uniconify_below_borders_by_illume(xwin_info); + } } } @@ -946,7 +958,8 @@ _policy_border_del(E_Border *bd) e_illume_border_is_miniapp_tray(bd) || (bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) || e_illume_border_is_syspopup(bd) || - e_illume_border_is_app_selector(bd)) + e_illume_border_is_app_selector(bd) || + e_illume_border_is_app_popup(bd)) dep_rot.list = eina_list_remove(dep_rot.list, bd); if (dep_rot.refer.active_bd == bd) @@ -1047,21 +1060,22 @@ _policy_border_post_fetch(E_Border *bd) } #endif +#ifdef _F_ZONE_WINDOW_ROTATION_ // for supporting rotation such as quickpanel if (e_illume_border_is_quickpanel(bd) || e_illume_border_is_miniapp_tray(bd) || (bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) || e_illume_border_is_syspopup(bd) || - e_illume_border_is_app_selector(bd)) + e_illume_border_is_app_selector(bd) || + e_illume_border_is_app_popup(bd)) { - bd->client.e.state.rot.type = E_BORDER_ROTATION_TYPE_DEPENDENT; + int ang = -1; + int next_ang = 0; // TODO: what to do if rotation fetch is changed? if (!eina_list_data_find(dep_rot.list, bd)) { - int ang = -1; - int next_ang = 0; - + bd->client.e.state.rot.type = E_BORDER_ROTATION_TYPE_DEPENDENT; if (bd->new_client) { ang = _prev_angle_get(bd->client.win); @@ -1069,20 +1083,22 @@ _policy_border_post_fetch(E_Border *bd) bd->client.e.state.rot.curr = ang; } dep_rot.list = eina_list_append(dep_rot.list, bd); + } - if (dep_rot.refer.active_bd) next_ang = dep_rot.refer.active_bd->client.e.state.rot.curr; - else next_ang = dep_rot.ang; + // WORKAROUND: event if any property changes, E will check rotation state. + if (dep_rot.refer.active_bd) next_ang = dep_rot.refer.active_bd->client.e.state.rot.curr; + else next_ang = dep_rot.ang; - if (next_ang != bd->client.e.state.rot.curr) - { - // if this border's new_client flag is set, - // this border's show time should be posted until done of rotation. - // will call "e_border_rotation_set" in main eval of e17 - if (_policy_dependent_rotation_check(bd, next_ang)) - bd->client.e.state.rot.changes = next_ang; - } + if (next_ang != bd->client.e.state.rot.curr) + { + // if this border's new_client flag is set, + // this border's show time should be posted until done of rotation. + // will call "e_border_rotation_set" in main eval of e17 + if (_policy_dependent_rotation_check(bd, next_ang)) + bd->client.e.state.rot.changes = next_ang; } } +#endif /* tell E the border has changed */ bd->client.border.changed = 1; @@ -1168,6 +1184,19 @@ _policy_border_pre_fetch(E_Border *bd) xwin_info = _policy_xwin_info_find(bd->win); transient_for_win = ecore_x_icccm_transient_for_get(bd->client.win); + if (transient_for_win) + { + bd_parent = e_border_find_by_client_window(transient_for_win); + } + + transient_each_other = _check_parent_in_transient_for_tree(bd, bd_parent); + if (transient_each_other) + { + ELBF(ELBT_ILLUME, 0, bd->client.win, "TRANSEINT_FOR each other.. transient_for:0x%07x. IGNORE...", transient_for_win); + bd->client.icccm.transient_for = transient_for_win; + goto transient_fetch_done; + } + if (bd->client.icccm.transient_for == transient_for_win) { if (!bd->parent) @@ -1177,10 +1206,6 @@ _policy_border_pre_fetch(E_Border *bd) } bd->client.icccm.transient_for = transient_for_win; - if (bd->client.icccm.transient_for) - { - bd_parent = e_border_find_by_client_window(bd->client.icccm.transient_for); - } /* If we already have a parent, remove it */ if (bd->parent) @@ -1188,46 +1213,45 @@ _policy_border_pre_fetch(E_Border *bd) #ifdef _F_DEICONIFY_APPROVE_ if (bd_parent == bd->parent) change_parent = EINA_FALSE; #endif - bd->parent->transients = eina_list_remove(bd->parent->transients, bd); - if (bd->parent->modal == bd) bd->parent->modal = NULL; + if (!e_object_is_del(E_OBJECT(bd->parent))) + { + bd->parent->transients = eina_list_remove(bd->parent->transients, bd); + if (bd->parent->modal == bd) bd->parent->modal = NULL; + } bd->parent = NULL; } L(LT_TRANSIENT_FOR, "[ILLUME2][TRANSIENT_FOR] %s(%d)... win:0x%07x, parent:0x%07x\n", __func__, __LINE__, bd->client.win, bd->client.icccm.transient_for); if (bd_parent) { - transient_each_other = _check_parent_in_transient_for_tree(bd, bd_parent); - if (!transient_each_other) + L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d).. win:0x%07x(iconic:%d, by_wm:%d), parent:0x%07x(iconic:%d)\n", __func__, __LINE__, bd->client.win, bd->iconic, xwin_info ? xwin_info->iconify_by_wm : -100, bd_parent->client.win, bd_parent->iconic); + if (_e_illume_cfg->use_force_iconify) { - L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d).. win:0x%07x(iconic:%d, by_wm:%d), parent:0x%07x(iconic:%d)\n", __func__, __LINE__, bd->client.win, bd->iconic, xwin_info ? xwin_info->iconify_by_wm : -100, bd_parent->client.win, bd_parent->iconic); - if (_e_illume_cfg->use_force_iconify) + if (!bd_parent->iconic) { - if (!bd_parent->iconic) + if (xwin_info && xwin_info->iconify_by_wm) { - if (xwin_info && xwin_info->iconify_by_wm) + if (bd->iconic) { - if (bd->iconic) - { - L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d).. FORCE UNICONIFY... win:0x%07x\n", __func__, __LINE__, bd->client.win); - _policy_border_force_uniconify(bd); - } + L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d).. FORCE UNICONIFY... win:0x%07x\n", __func__, __LINE__, bd->client.win); + _policy_border_force_uniconify(bd); } } } + } - if (bd_parent != bd) - { - bd->parent = bd_parent; - _policy_border_transient_for_layer_set(bd, bd->parent, bd->parent->layer); - bd_parent->transients = eina_list_append(bd_parent->transients, bd); + if (bd_parent != bd) + { + bd->parent = bd_parent; + _policy_border_transient_for_layer_set(bd, bd->parent, bd->parent->layer); + bd_parent->transients = eina_list_append(bd_parent->transients, bd); - if ((e_config->modal_windows) && (bd->client.netwm.state.modal)) - bd->parent->modal = bd; + if ((e_config->modal_windows) && (bd->client.netwm.state.modal)) + bd->parent->modal = bd; - if (e_config->focus_setting == E_FOCUS_NEW_DIALOG || - (bd->parent->focused && (e_config->focus_setting == E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED))) - bd->take_focus = 1; - } + if (e_config->focus_setting == E_FOCUS_NEW_DIALOG || + (bd->parent->focused && (e_config->focus_setting == E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED))) + bd->take_focus = 1; } } @@ -1344,7 +1368,7 @@ _policy_border_show(E_Border *bd) if (!bd) return; /* make sure we have a name so that we don't handle windows like E's root */ - if (!bd->client.icccm.name) return; +// if (!bd->client.icccm.name) return; // printf("Border Show: %s\n", bd->client.icccm.class); @@ -1377,6 +1401,7 @@ _policy_border_show(E_Border *bd) return; } +#ifdef _F_ZONE_WINDOW_ROTATION_ if (eina_list_data_find(dep_rot.list, bd) == bd) { int next_ang = 0; @@ -1387,6 +1412,7 @@ _policy_border_show(E_Border *bd) if (bd->client.e.state.rot.curr != next_ang) e_border_rotation_set(bd, next_ang); } +#endif } void @@ -1973,7 +1999,7 @@ static void _policy_property_window_state_change (Ecore_X_Event_Window_Property * but do not have a name/class associated with them. Not entirely sure * which ones they are, but I would guess Managers, Containers, or Zones. * At any rate, we're not interested in those types of borders */ - if ((!bd->client.icccm.name) || (!bd->client.icccm.class)) return; +// if ((!bd->client.icccm.name) || (!bd->client.icccm.class)) return; /* NB: If we have reached this point, then it should be a fullscreen * border that has toggled fullscreen on/off */ @@ -2557,6 +2583,7 @@ _policy_border_illume_window_state_change(E_Border *bd, unsigned int state) _policy_border_indicator_control(indi_bd); } +#ifdef _F_ZONE_WINDOW_ROTATION_ // will be check below condition as new_client in post_fetch time, // so skip here. if ((!bd->new_client) && @@ -2573,6 +2600,7 @@ _policy_border_illume_window_state_change(E_Border *bd, unsigned int state) if (next_ang != bd->client.e.state.rot.curr) e_border_rotation_set(bd, next_ang); } +#endif break; case ECORE_X_ILLUME_WINDOW_STATE_NORMAL: @@ -2597,11 +2625,13 @@ _policy_border_illume_window_state_change(E_Border *bd, unsigned int state) _policy_border_indicator_control(indi_bd); } +#ifdef _F_ZONE_WINDOW_ROTATION_ if (eina_list_data_find(dep_rot.list, bd) == bd) { bd->client.e.state.rot.type = E_BORDER_ROTATION_TYPE_NORMAL; dep_rot.list = eina_list_remove(dep_rot.list, bd); } +#endif break; } bd->changes.size = 1; @@ -4634,12 +4664,13 @@ _policy_send_visibility_notify (Ecore_X_Window win, int visibility) } static Eina_Bool -_policy_check_transient_child_visible(E_Border *bd) +_policy_check_transient_child_visible(E_Border *ancestor_bd, E_Border *bd) { Eina_Bool ret = EINA_FALSE; E_Illume_XWin_Info *child_xwin_info = NULL; Eina_List *l; E_Border *child = NULL; + if (!ancestor_bd) return EINA_FALSE; EINA_LIST_FOREACH(bd->transients, l, child) { @@ -4649,7 +4680,25 @@ _policy_check_transient_child_visible(E_Border *bd) child_xwin_info = _policy_xwin_info_find(child->win); if (child_xwin_info) { - if (child_xwin_info->skip_iconify != EINA_TRUE) + if (child_xwin_info->skip_iconify == EINA_TRUE) + { + // special window especially keyboard, keyboard sub + if (child_xwin_info->visibility == E_ILLUME_VISIBILITY_UNOBSCURED) + { + return EINA_TRUE; + } + else + { + if (!child->iconic) + { + if (E_CONTAINS(child->x, child->y, child->w, child->h, ancestor_bd->x, ancestor_bd->y, ancestor_bd->w, ancestor_bd->h)) + { + return EINA_TRUE; + } + } + } + } + else { if ((child_xwin_info->visibility == E_ILLUME_VISIBILITY_UNOBSCURED) || (!child->iconic)) @@ -4663,7 +4712,7 @@ _policy_check_transient_child_visible(E_Border *bd) if (!child->iconic) return EINA_TRUE; } - ret = _policy_check_transient_child_visible(child); + ret = _policy_check_transient_child_visible(ancestor_bd, child); } return ret; @@ -4693,6 +4742,7 @@ _policy_calculate_visibility(void) int set_root_angle = 0; int control_indi = 0; E_Illume_XWin_Info *above_xwin_info = NULL; + Ecore_X_Window above_xwin = 0; if (!_g_visibility_changed) return; _g_visibility_changed = EINA_FALSE; @@ -4726,8 +4776,6 @@ _policy_calculate_visibility(void) if ((xwin_info->viewable == 0) && (xwin_info->iconify_by_wm == 0)) continue; - if (xwin_info->iconic) continue; - if (!xwin_info->is_drawed) continue; // initializing variable @@ -4740,6 +4788,16 @@ _policy_calculate_visibility(void) bd_info = xwin_info->bd_info; if (bd_info) bd = bd_info->border; + // the illume's policy of iconify should be applied to window belonging mobile side. + // so, there is no need to calculate visibility. + if ((bd) && (!E_ILLUME_BORDER_IS_IN_MOBILE(bd))) continue; + + if (xwin_info->iconic && (!xwin_info->iconify_by_wm)) + { + if (bd) goto check_above; + else continue; + } + // 1. calculates window's region and decide it's visibility. if (is_fully_obscured == EINA_FALSE) { @@ -4773,6 +4831,11 @@ _policy_calculate_visibility(void) is_opaque_win = EINA_FALSE; } } + else if (e_illume_border_is_app_tray(bd) || + e_illume_border_is_miniapp_tray(bd)) + { + alpha_opaque = EINA_TRUE; + } if (bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) @@ -4786,6 +4849,14 @@ _policy_calculate_visibility(void) is_opaque_win = EINA_FALSE; } + if (win_rect.x != visible_rect.x || + win_rect.y != visible_rect.y || + win_rect.width != visible_rect.width || + win_rect.height != visible_rect.height) + { + is_opaque_win = EINA_FALSE; + } + if (is_opaque_win) { win_region = ecore_x_xregion_new(); @@ -4822,7 +4893,6 @@ _policy_calculate_visibility(void) } if (!bd) continue; - if (!E_ILLUME_BORDER_IS_IN_MOBILE(bd)) continue; // decide if it's the border that DO NOT iconify. if (obscured_by_alpha_opaque) @@ -4836,7 +4906,7 @@ _policy_calculate_visibility(void) // DO NOT iconify this border. else if (bd->transients) { - do_not_iconify = _policy_check_transient_child_visible(bd); + do_not_iconify = _policy_check_transient_child_visible(bd, bd); L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d).. win:0x%07x. Do_not_iconify:%d\n", __func__, __LINE__, xwin_info->bd_info->border->client.win, do_not_iconify); } @@ -4914,6 +4984,15 @@ _policy_calculate_visibility(void) } } } + /* check old above win */ + else if (xwin_info->above_xwin != above_xwin) + { + if (!bd->iconic && !do_not_iconify && !xwin_info->skip_iconify) + { + L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d).. Iconify by illume.. win:0x%07x\n", __func__, __LINE__, xwin_info->bd_info->border->client.win); + _policy_border_iconify_by_illume(xwin_info); + } + } } } } @@ -4933,7 +5012,11 @@ _policy_calculate_visibility(void) } } +check_above: + xwin_info->above_xwin = above_xwin; + above_xwin_info = xwin_info; + above_xwin = bd->client.win; } if (control_indi) @@ -5088,7 +5171,7 @@ void _policy_window_destroy (Ecore_X_Event_Window_Destroy *event) // for supporting dependent rotation if (dep_rot.refer.cmd_win == event->win) - dep_rot.refer.cmd_win = NULL; + dep_rot.refer.cmd_win = 0; } @@ -5471,9 +5554,10 @@ _policy_change_root_angle_by_border_angle (E_Border* bd) // make rotation request for the dependent windows such as quickpanel int ang = _policy_window_rotation_angle_get(bd->client.win); if (ang == -1) ang = 0; - +#ifdef _F_ZONE_WINDOW_ROTATION_ if (dep_rot.ang != ang) _policy_border_dependent_rotation(bd, ang); +#endif } } @@ -6062,7 +6146,10 @@ void _policy_border_iconify_cb(E_Border *bd) E_Illume_XWin_Info* xwin_info = _policy_xwin_info_find(bd->win); if (xwin_info == NULL) return; - _policy_border_uniconify_below_borders_by_illume(xwin_info); + if (E_CONTAINS(bd->x, bd->y, bd->w, bd->h, bd->zone->x, bd->zone->y, bd->zone->w, bd->zone->h)) + { + _policy_border_uniconify_below_borders_by_illume(xwin_info); + } if (xwin_info->visibility != E_ILLUME_VISIBILITY_FULLY_OBSCURED) { @@ -6192,6 +6279,8 @@ _policy_border_iconify_by_illume(E_Illume_XWin_Info *xwin_info) if (!E_ILLUME_BORDER_IS_IN_MOBILE(bd)) return; if (e_object_is_del(E_OBJECT(bd))) return; + if (!bd->visible) return; + if ((xwin_info->visibility != E_ILLUME_VISIBILITY_FULLY_OBSCURED) && (bd->parent && (!bd->parent->iconic))) return; @@ -6236,6 +6325,13 @@ static void _policy_border_force_uniconify(E_Border *bd) E_OBJECT_CHECK(bd); E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE); + if (bd->client.e.state.deiconify_approve.wait_timer || + bd->client.e.state.deiconify_approve.pending_job) + { + ELB(ELBT_BD, "DEICONIFY_APPROVE is already running", bd->client.win); + return; + } + xwin_info = _policy_xwin_info_find(bd->win); if (!(xwin_info && xwin_info->iconify_by_wm)) return; @@ -6302,7 +6398,11 @@ _policy_border_uniconify_below_borders_by_illume(E_Illume_XWin_Info *xwin_info) if (xwin_info->iconify_by_wm) return; // 2. check if current bd's visibility is fully-obscured or not - if (xwin_info->visibility == E_ILLUME_VISIBILITY_FULLY_OBSCURED) return; + if (xwin_info->visibility == E_ILLUME_VISIBILITY_FULLY_OBSCURED && + bd->iconic) + { + return; + } // 3-1. find bd's below window and un-iconify it L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d)... UNICONIFY Below Windows of win:0x%07x\n", __func__, __LINE__, bd->client.win); @@ -6377,6 +6477,8 @@ static E_Border* _policy_border_find_below(E_Border *bd) if (e_illume_border_is_app_tray(b)) continue; if (e_illume_border_is_miniapp_tray(b)) continue; + if (!ecore_x_window_visible_get(b->client.win)) continue; + return b; } } @@ -6448,10 +6550,36 @@ static void _policy_border_uniconify_top_border(E_Border *bd) if (e_illume_border_is_app_tray(b)) continue; if (e_illume_border_is_miniapp_tray(b)) continue; + if (!ecore_x_window_visible_get(b->client.win)) continue; + if (b->iconic) { - L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d).. FORCE UNICONIFY... win:0x%07x\n", __func__, __LINE__, b->client.win); - _policy_border_force_uniconify(b); + E_Border *parent_bd; + E_Border *target_bd; + E_Illume_XWin_Info *parent_xwin_info; + + target_bd = b; + parent_bd = b->parent; + + while (parent_bd) + { + if (e_object_is_del(E_OBJECT(parent_bd))) break; + + if (parent_bd->iconic) + { + parent_xwin_info = _policy_xwin_info_find(parent_bd->win); + if (!(parent_xwin_info && parent_xwin_info->iconify_by_wm)) + { + break; + } + + target_bd = parent_bd; + } + parent_bd = parent_bd->parent; + } + + L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d).. FORCE UNICONIFY... target win:0x%07x (win:0x%07x)\n", __func__, __LINE__, target_bd->client.win, b->client.win); + _policy_border_force_uniconify(target_bd); } if ((b->x == b->zone->x) && @@ -6613,6 +6741,7 @@ fin: return; } +#ifdef _F_ZONE_WINDOW_ROTATION_ /* for supporting rotation */ void _policy_border_hook_rotation_list_add(E_Border *bd) @@ -6692,6 +6821,7 @@ end: "[DEPENDENT] Couldn't or don't need to rotate it as given angle:%d", rotation); return ret; } +#endif static void _policy_property_indicator_cmd_win_change(Ecore_X_Event_Window_Property *event) @@ -6770,9 +6900,11 @@ _policy_property_active_indicator_win_change(Ecore_X_Event_Window_Property *even ELBF(ELBT_ROT, 0, active_win, "INDICATOR ACTIVE WIN CHANGED:0x%08x", active_win); dep_rot.refer.active_bd = bd; +#ifdef _F_ZONE_WINDOW_ROTATION_ rotation = bd->client.e.state.rot.curr; _policy_border_dependent_rotation(bd, rotation); +#endif } } } diff --git a/illume2-tizen/src/policies/illume/policy.h b/illume2-tizen/src/policies/illume/policy.h index d1f95ff..5d62fa5 100644 --- a/illume2-tizen/src/policies/illume/policy.h +++ b/illume2-tizen/src/policies/illume/policy.h @@ -100,6 +100,7 @@ struct _E_Illume_XWin_Info Eina_Bool is_drawed; Eina_Bool viewable : 1; // map state E_Illume_Border_Info* bd_info; + Ecore_X_Window above_xwin; }; void _policy_border_add(E_Border *bd); @@ -164,5 +165,7 @@ void _policy_idle_enterer(void); void _policy_illume_win_state_change_request(Ecore_X_Event_Client_Message *event); +#ifdef _F_ZONE_WINDOW_ROTATION_ void _policy_border_hook_rotation_list_add(E_Border *bd); #endif +#endif diff --git a/keyrouter/configure.ac b/keyrouter/configure.ac index 9019cc0..97924c9 100644 --- a/keyrouter/configure.ac +++ b/keyrouter/configure.ac @@ -58,7 +58,7 @@ PKG_PROG_PKG_CONFIG dnl ======================================================================== # checks for pkg-config dnl ======================================================================== -PKG_CHECK_MODULES(ENLIGHTENMENT, enlightenment) +PKG_CHECK_MODULES(ENLIGHTENMENT, [enlightenment,dlog]) ENLIGHTENMENT_CFLAGS="${ENLIGHTENMENT_CFLAGS} -D_GNU_SOURCE " AC_SUBST(ENLIGHTENMENT_CFLAGS) AC_SUBST(ENLIGHTENMENT_LIBS) diff --git a/move-tizen/src/e_mod_move.c b/move-tizen/src/e_mod_move.c index 6b0f8e2..a6be841 100644 --- a/move-tizen/src/e_mod_move.c +++ b/move-tizen/src/e_mod_move.c @@ -923,7 +923,14 @@ _e_mod_move_bd_del_intern(E_Move_Border *mb) static void _e_mod_move_bd_show_intern(E_Move_Border *mb) { + E_Border *bd = NULL; + E_Zone *zone = NULL; + E_CHECK(mb); + bd = mb->bd; + E_CHECK(bd); + zone = bd->zone; + E_CHECK(zone); if (mb->visible) return; mb->visible = 1; @@ -942,7 +949,10 @@ _e_mod_move_bd_show_intern(E_Move_Border *mb) e_mod_move_indicator_e_border_move(mb, -10000, -10000); // If Quickpanel is shown, then move out of screen. if (TYPE_QUICKPANEL_CHECK(mb)) - e_mod_move_quickpanel_e_border_move(mb, -10000, -10000); + { + e_mod_move_quickpanel_e_border_move(mb, -10000, -10000); + ecore_x_e_illume_quickpanel_state_set(zone->black_win, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF); + } } static void @@ -2371,7 +2381,6 @@ _e_mod_move_msg_qp_state_internal_quickpanel_check(E_Move_Border *mb) E_Move *m = e_mod_move_util_get(); E_CHECK_RETURN(m, EINA_FALSE); E_CHECK_RETURN(mb, EINA_FALSE); - E_CHECK_RETURN(TYPE_APPTRAY_CHECK(mb), EINA_FALSE); if ((!m->elm_indicator_mode) && e_mod_move_indicator_click_get()) // if indicator process event, do event clear e_mod_move_indicator_event_clear(); if ((m->elm_indicator_mode) @@ -2401,6 +2410,7 @@ _e_mod_move_msg_qp_state(Ecore_X_Event_Client_Message *ev) Eina_Bool state; Eina_Bool comp_obj_visible = EINA_FALSE; E_Zone *zone; + Eina_Bool scrolling_state = EINA_FALSE; int cx, cy, cw, ch; int open, angles[2]; int ax = 0; // animation x @@ -2435,37 +2445,19 @@ _e_mod_move_msg_qp_state(Ecore_X_Event_Client_Message *ev) comp_obj_visible = e_mod_move_util_compositor_object_visible_get(qp_mb); - zone = qp_mb->bd->zone; - if (REGION_INSIDE_ZONE(qp_mb, zone)) state = EINA_TRUE; - else state = EINA_FALSE; - - if ((!m->elm_indicator_mode) - && e_mod_move_indicator_click_get()) + if (((!m->elm_indicator_mode) && e_mod_move_indicator_click_get()) + || ((m->elm_indicator_mode) + && e_mod_move_indicator_widget_click_get(e_mod_move_indicator_widget_get())) + || (e_mod_move_quickpanel_click_get())) { - L(LT_EVENT_X, - "[MOVE] ev:%15.15s [MOVE_MODULE] _E_ILLUME_QUICKPANEL_STATE error. w:0x%07x(state:%d) request:%d, Indicator Is Scrolling\n", - "X_CLIENT_MESSAGE", win, state, open); - return EINA_FALSE; + scrolling_state = EINA_TRUE; } - if ((m->elm_indicator_mode) - && e_mod_move_indicator_widget_click_get(e_mod_move_indicator_widget_get())) - { - L(LT_EVENT_X, - "[MOVE] ev:%15.15s [MOVE_MODULE] _E_ILLUME_QUICKPANEL_STATE error. w:0x%07x(state:%d) request:%d, Indicator Widget Is Scrolling\n", - "X_CLIENT_MESSAGE", win, state, open); - return EINA_FALSE; - } - - if (e_mod_move_quickpanel_click_get()) - { - L(LT_EVENT_X, - "[MOVE] ev:%15.15s [MOVE_MODULE] _E_ILLUME_QUICKPANEL_STATE error. w:0x%07x(state:%d) request:%d, Quickpanel Is Scrolling\n", - "X_CLIENT_MESSAGE", win, state, open); - return EINA_FALSE; - } + zone = qp_mb->bd->zone; + if (REGION_INSIDE_ZONE(qp_mb, zone)) state = EINA_TRUE; + else state = EINA_FALSE; - if ((open) && (!state) && (comp_obj_visible)) // Quickpanel Open + if ((open) && ((!state) || scrolling_state) && (comp_obj_visible)) // Quickpanel Open { switch (angles[0]) { @@ -2531,15 +2523,16 @@ _e_mod_move_msg_qp_state(Ecore_X_Event_Client_Message *ev) e_mod_move_quickpanel_objs_add(qp_mb); // send quickpanel to "move start message". - e_mod_move_quickpanel_anim_state_send(qp_mb, EINA_TRUE); + if (!scrolling_state) e_mod_move_quickpanel_anim_state_send(qp_mb, EINA_TRUE); e_mod_move_quickpanel_e_border_move(qp_mb, mx, my); - e_mod_move_quickpanel_objs_animation_start_position_set(qp_mb, - angles[0], - EINA_FALSE); + if (!scrolling_state) + e_mod_move_quickpanel_objs_animation_start_position_set(qp_mb, + angles[0], + EINA_FALSE); e_mod_move_quickpanel_objs_animation_move(qp_mb, ax, ay); } - else if ((!open) && (state))// Quickpanel Close + else if ((!open) && (state || scrolling_state))// Quickpanel Close { switch (angles[0]) { @@ -2647,12 +2640,14 @@ _e_mod_move_msg_qp_state(Ecore_X_Event_Client_Message *ev) e_mod_move_quickpanel_objs_add(qp_mb); // send quickpanel to "move start message". - e_mod_move_quickpanel_anim_state_send(qp_mb, EINA_TRUE); + if (!scrolling_state) e_mod_move_quickpanel_anim_state_send(qp_mb, EINA_TRUE); e_mod_move_quickpanel_e_border_move(qp_mb, mx, my); - e_mod_move_quickpanel_objs_animation_start_position_set(qp_mb, - angles[0], - EINA_TRUE); + + if (!scrolling_state) + e_mod_move_quickpanel_objs_animation_start_position_set(qp_mb, + angles[0], + EINA_TRUE); e_mod_move_quickpanel_objs_animation_move(qp_mb, ax, ay); } else diff --git a/move-tizen/src/e_mod_move_atoms.c b/move-tizen/src/e_mod_move_atoms.c index 5822424..7150988 100644 --- a/move-tizen/src/e_mod_move_atoms.c +++ b/move-tizen/src/e_mod_move_atoms.c @@ -20,6 +20,7 @@ EINTERN Ecore_X_Atom ATOM_MV_PANEL_SCROLLABLE_STATE = 0; EINTERN Ecore_X_Atom ATOM_MV_INDICATOR_GEOMETRY = 0; EINTERN Ecore_X_Atom ATOM_INDICATOR_CMD_WIN = 0; EINTERN Ecore_X_Atom ATOM_ACTIVE_INDICATOR_WIN = 0; +EINTERN Ecore_X_Atom ATOM_INDICATOR_FLICK_DONE = 0; /* local subsystem globals */ static Eina_Hash *atoms_hash = NULL; @@ -41,7 +42,8 @@ static const char *atom_names[] = { "_E_MOVE_PANEL_SCROLLABLE_STATE", "_E_MOVE_INDICATOR_GEOMETRY", "_E_INDICATOR_CMD_WIN", - "_E_ACTIVE_INDICATOR_WIN" + "_E_ACTIVE_INDICATOR_WIN", + "_E_INDICATOR_FLICK_DONE" }; static const char *external_atom_names[] = { @@ -88,6 +90,7 @@ e_mod_move_atoms_init(void) ATOM_MV_INDICATOR_GEOMETRY = atoms[i++]; ATOM_INDICATOR_CMD_WIN = atoms[i++]; ATOM_ACTIVE_INDICATOR_WIN = atoms[i++]; + ATOM_INDICATOR_FLICK_DONE = atoms[i++]; for (i = 0; i < n; i++) { diff --git a/move-tizen/src/e_mod_move_atoms.h b/move-tizen/src/e_mod_move_atoms.h index 848c056..641be04 100644 --- a/move-tizen/src/e_mod_move_atoms.h +++ b/move-tizen/src/e_mod_move_atoms.h @@ -20,6 +20,7 @@ extern EINTERN Ecore_X_Atom ATOM_MV_PANEL_SCROLLABLE_STATE; extern EINTERN Ecore_X_Atom ATOM_MV_INDICATOR_GEOMETRY; extern EINTERN Ecore_X_Atom ATOM_INDICATOR_CMD_WIN; extern EINTERN Ecore_X_Atom ATOM_ACTIVE_INDICATOR_WIN; +extern EINTERN Ecore_X_Atom ATOM_INDICATOR_FLICK_DONE; EINTERN int e_mod_move_atoms_init(void); EINTERN int e_mod_move_atoms_shutdown(void); diff --git a/move-tizen/src/e_mod_move_border_shape_input.c b/move-tizen/src/e_mod_move_border_shape_input.c index e146909..5c936f0 100644 --- a/move-tizen/src/e_mod_move_border_shape_input.c +++ b/move-tizen/src/e_mod_move_border_shape_input.c @@ -1,7 +1,5 @@ #include "e_mod_move_shared_types.h" #include "e_mod_move_debug.h" -#include - /* local subsystem functions */ diff --git a/move-tizen/src/e_mod_move_border_type.c b/move-tizen/src/e_mod_move_border_type.c index c14e3ea..9bca9a3 100644 --- a/move-tizen/src/e_mod_move_border_type.c +++ b/move-tizen/src/e_mod_move_border_type.c @@ -17,6 +17,7 @@ typedef enum _E_Move_Border_Class_Type E_MOVE_BORDER_CLASS_TYPE_MINI_APPTRAY, E_MOVE_BORDER_CLASS_TYPE_SETUP_WIZARD, E_MOVE_BORDER_CLASS_TYPE_APP_SELECTOR, + E_MOVE_BORDER_CLASS_TYPE_APP_POPUP, E_MOVE_BORDER_CLASS_TYPE_PWLOCK, E_MOVE_BORDER_CLASS_TYPE_BACKGROUND, E_MOVE_BORDER_CLASS_TYPE_ISF, @@ -37,6 +38,7 @@ typedef enum _E_Move_Border_Name_Type E_MOVE_BORDER_NAME_TYPE_MINI_APPTRAY, E_MOVE_BORDER_NAME_TYPE_SETUP_WIZARD, E_MOVE_BORDER_NAME_TYPE_APP_SELECTOR, + E_MOVE_BORDER_NAME_TYPE_APP_POPUP, E_MOVE_BORDER_NAME_TYPE_PWLOCK, E_MOVE_BORDER_NAME_TYPE_BACKGROUND, E_MOVE_BORDER_NAME_TYPE_ISF_KEYBOARD, @@ -61,6 +63,7 @@ static const char *border_class[] = "MINIAPP_TRAY", "SETUP_WIZARD", "APP_SELECTOR", + "APP_POPUP", //"PW_LOCK", "pwlock", "BACKGROUND", @@ -81,6 +84,7 @@ static const char *border_name[] = "MINIAPP_TRAY", "SETUP_WIZARD", "APP_SELECTOR", + "APP_POPUP", //"PW_LOCK", "pwlock", "BACKGROUND", @@ -120,6 +124,8 @@ static const char *type_names[] = "E_MOVE_BORDER_TYPE_APPTRAY", "E_MOVE_BORDER_TYPE_MINI_APPTRAY", "E_MOVE_BORDER_TYPE_SETUP_WIZARD", + "E_MOVE_BORDER_TYPE_APP_SELECTOR", + "E_MOVE_BORDER_TYPE_APP_POPUP", "E_MOVE_BORDER_TYPE_PWLOCK", "E_MOVE_BORDER_TYPE_BACKGROUND", "E_MOVE_BORDER_TYPE_ISF_KEYBOARD", @@ -140,6 +146,7 @@ static E_Move_Border_Class_Type border_class_vals[] = E_MOVE_BORDER_CLASS_TYPE_MINI_APPTRAY, E_MOVE_BORDER_CLASS_TYPE_SETUP_WIZARD, E_MOVE_BORDER_CLASS_TYPE_APP_SELECTOR, + E_MOVE_BORDER_CLASS_TYPE_APP_POPUP, E_MOVE_BORDER_CLASS_TYPE_PWLOCK, E_MOVE_BORDER_CLASS_TYPE_BACKGROUND, E_MOVE_BORDER_CLASS_TYPE_ISF @@ -159,6 +166,7 @@ static E_Move_Border_Class_Type border_name_vals[] = E_MOVE_BORDER_NAME_TYPE_MINI_APPTRAY, E_MOVE_BORDER_NAME_TYPE_SETUP_WIZARD, E_MOVE_BORDER_NAME_TYPE_APP_SELECTOR, + E_MOVE_BORDER_NAME_TYPE_APP_POPUP, E_MOVE_BORDER_NAME_TYPE_PWLOCK, E_MOVE_BORDER_NAME_TYPE_BACKGROUND, E_MOVE_BORDER_NAME_TYPE_ISF_KEYBOARD, @@ -351,6 +359,10 @@ e_mod_move_border_type_setup(E_Move_Border *mb) if (ntype == E_MOVE_BORDER_NAME_TYPE_APP_SELECTOR) res = E_MOVE_BORDER_TYPE_APP_SELECTOR; break; + case E_MOVE_BORDER_CLASS_TYPE_APP_POPUP: + if (ntype == E_MOVE_BORDER_NAME_TYPE_APP_POPUP) + res = E_MOVE_BORDER_TYPE_APP_POPUP; + break; case E_MOVE_BORDER_CLASS_TYPE_PWLOCK: if (ntype == E_MOVE_BORDER_NAME_TYPE_PWLOCK) res = E_MOVE_BORDER_TYPE_PWLOCK; diff --git a/move-tizen/src/e_mod_move_border_type.h b/move-tizen/src/e_mod_move_border_type.h index 17d66ba..aa009f5 100644 --- a/move-tizen/src/e_mod_move_border_type.h +++ b/move-tizen/src/e_mod_move_border_type.h @@ -40,6 +40,9 @@ #define TYPE_APP_SELECTOR_CHECK(a) \ ((a)->type == E_MOVE_BORDER_TYPE_APP_SELECTOR) +#define TYPE_APP_POPUP_CHECK(a) \ + ((a)->type == E_MOVE_BORDER_TYPE_APP_POPUP) + typedef enum _E_Move_Border_Type { E_MOVE_BORDER_TYPE_UNKNOWN = 0, @@ -69,6 +72,7 @@ typedef enum _E_Move_Border_Type E_MOVE_BORDER_TYPE_MINI_APPTRAY, E_MOVE_BORDER_TYPE_SETUP_WIZARD, E_MOVE_BORDER_TYPE_APP_SELECTOR, + E_MOVE_BORDER_TYPE_APP_POPUP, E_MOVE_BORDER_TYPE_PWLOCK, E_MOVE_BORDER_TYPE_BACKGROUND, E_MOVE_BORDER_TYPE_ISF_KEYBOARD, diff --git a/move-tizen/src/e_mod_move_indicator_widget.c b/move-tizen/src/e_mod_move_indicator_widget.c index 28344b9..f9d7be6 100644 --- a/move-tizen/src/e_mod_move_indicator_widget.c +++ b/move-tizen/src/e_mod_move_indicator_widget.c @@ -1,6 +1,7 @@ #include "e_mod_move_shared_types.h" #include "e_mod_move_debug.h" #include "e_mod_move.h" +#include "e_mod_move_atoms.h" /* local subsystem functions */ static Eina_Bool _e_mod_move_indicator_widget_apptray_move_set(E_Move_Indicator_Widget *indi_widget, Eina_Bool state); @@ -19,7 +20,8 @@ static Eina_Bool _e_mod_move_indicator_widget_cb_motion_move(void *data, vo static Eina_Bool _e_mod_move_indicator_widget_cb_motion_end(void *data, void *event_info); static void _e_mod_move_indicator_widget_obj_event_setup(E_Move_Indicator_Widget *indicator_widget, E_Move_Widget_Object *mwo); static Eina_Bool _e_mod_move_indicator_widget_scrollable_object_movable_check(E_Move_Indicator_Widget *indi_widget, E_Move_Border *mb, Evas_Point pos); -static Eina_Bool _e_mod_move_indicator_widget_target_window_find_by_pointer(Ecore_X_Window *win, int x, int y); +static Eina_Bool _e_mod_move_indicator_widget_target_window_find_by_pointer(Ecore_X_Window *win, Ecore_X_Window *pointed_win, int x, int y); +static Eina_Bool _e_mod_move_indicator_widget_focus_target_window_find_by_pointer(Ecore_X_Window *win, int x, int y); static Ecore_X_Window _e_mod_move_indicator_widget_event_win_find(void *event_info); static Eina_Bool _e_mod_move_indicator_widget_target_window_policy_check(E_Move_Border *mb); static Eina_Bool _e_mod_move_indicator_widget_event_send_policy_check(E_Move_Indicator_Widget *indi_widget, Evas_Point pos); @@ -133,8 +135,10 @@ _e_mod_move_indicator_widget_cb_motion_start_internal_quickpanel_check(E_Move_Bo // It's posible that WM doesn't send rotation change request yet. // In this case the value of wait_for_done is zero, // it means quickpanel isn't rotating for now, but going to be rotated. +#ifdef _F_ZONE_WINDOW_ROTATION_ if (qp_mb->bd) if (qp_mb->bd->client.e.state.rot.wait_for_done) return EINA_FALSE; +#endif if (e_mod_move_quickpanel_objs_animation_state_get(qp_mb)) return EINA_FALSE; @@ -365,6 +369,7 @@ _e_mod_move_indicator_widget_cb_motion_start(void *data, E_Move_Border *mb = NULL; E_Move_Border *ev_mb = NULL; + E_Move_Border *focus_mb = NULL; E_Move_Border *qp_mb = NULL; E_Move_Border *at_mb = NULL; E_Move_Event_Motion_Info *info; @@ -374,30 +379,36 @@ _e_mod_move_indicator_widget_cb_motion_start(void *data, Eina_List *l; E_Move_Scroll_Region_Indicator scroll_region = E_MOVE_SCROLL_REGION_NONE; Ecore_X_Window ev_win = 0; + Ecore_X_Window focus_win = 0; info = (E_Move_Event_Motion_Info *)event_info; m = e_mod_move_util_get(); E_CHECK_RETURN(indi_widget, EINA_FALSE); + E_CHECK_RETURN(info, EINA_FALSE); + E_CHECK_RETURN(m, EINA_FALSE); + mb = e_mod_move_border_client_find(indi_widget->win); + E_CHECK_RETURN(mb, EINA_FALSE); // clicked window indicator policy check EINA_LIST_FOREACH(indi_widget->objs, l, mwo) { if (!mwo) continue; ev_win = e_mod_move_event_win_get(mwo->event); + if (!ev_win) + { + _e_mod_move_indicator_widget_target_window_find_by_pointer(&ev_win, NULL, + info->coord.x, + info->coord.y); + } } ev_mb = e_mod_move_border_client_find(ev_win); - if (ev_mb && ev_mb->bd && ev_mb->bd->layer) - if (ev_mb->bd->layer == e_mod_move_util_layer_policy_get(E_MOVE_STATE_ABOVE_LAYER)) - e_focus_event_mouse_down(ev_mb->bd); - - E_CHECK_RETURN(_e_mod_move_indicator_widget_target_window_policy_check(ev_mb), - EINA_FALSE); - - mb = e_mod_move_border_client_find(indi_widget->win); - - if (!m || !mb || !indi_widget || !info) return EINA_FALSE; + _e_mod_move_indicator_widget_focus_target_window_find_by_pointer(&focus_win, info->coord.x, info->coord.y); + focus_mb = e_mod_move_border_client_find(focus_win); + if (focus_mb && focus_mb->bd) + if ((focus_mb->bd->client.icccm.accepts_focus) || (focus_mb->bd->client.icccm.take_focus)) + e_focus_event_mouse_down(focus_mb->bd); mouse_down_event = info->event_info; E_CHECK_RETURN(mouse_down_event, EINA_FALSE); @@ -412,6 +423,23 @@ _e_mod_move_indicator_widget_cb_motion_start(void *data, if (clicked) return EINA_FALSE; + EINA_LIST_FOREACH(indi_widget->objs, l, mwo) + { + if (!mwo) continue; + e_mod_move_event_click_set(mwo->event, EINA_TRUE); + } + + if (!_e_mod_move_indicator_widget_target_window_policy_check(ev_mb)) + { + E_CHECK_GOTO(e_mod_move_flick_data_new(mb), error_cleanup); + e_mod_move_flick_data_init(mb, info->coord.x, info->coord.y); + + indi_widget->send_flick_done = EINA_TRUE; + indi_widget->flicked = 0; + indi_widget->target = ev_win; + return EINA_FALSE; + } + SL(LT_EVENT_OBJ, "[MOVE] ev:%15.15s w:0x%08x INDI_WIDGET_MOTION_START (%4d,%4d)\n", "EVAS_OBJ", mb->bd->win, @@ -443,14 +471,8 @@ _e_mod_move_indicator_widget_cb_motion_start(void *data, return EINA_FALSE; } - EINA_LIST_FOREACH(indi_widget->objs, l, mwo) - { - if (!mwo) continue; - e_mod_move_event_click_set(mwo->event, EINA_TRUE); - } - - E_CHECK_GOTO(e_mod_move_flick_data_new(mb), error_cleanup); - e_mod_move_flick_data_init(mb, info->coord.x, info->coord.y); + E_CHECK_GOTO(e_mod_move_flick_data_new(mb), error_cleanup); + e_mod_move_flick_data_init(mb, info->coord.x, info->coord.y); scroll_region = e_mod_move_indicator_region_scroll_check(mb->angle, info->coord); @@ -687,6 +709,21 @@ _e_mod_move_indicator_widget_cb_motion_move(void *data, if (need_move) e_mod_move_apptray_objs_move(at_mb, x, y); } + else if (indi_widget->send_flick_done) + { + if (!indi_widget->flicked) + { + e_mod_move_flick_data_update(mb, info->coord.x, info->coord.y); + if (e_mod_move_flick_state_get(mb, EINA_TRUE)) + { + indi_widget->flicked = 1; + ecore_x_client_message32_send + (indi_widget->target, ATOM_INDICATOR_FLICK_DONE, + ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, + 1, 0, 0, 0, 0); + } + } + } indi_widget->pos = info->coord; // save mouse move position @@ -745,6 +782,13 @@ _e_mod_move_indicator_widget_cb_motion_end(void *data, } E_CHECK_GOTO(click, error_cleanup); + if(indi_widget->send_flick_done) + { + indi_widget->send_flick_done = EINA_FALSE; + indi_widget->flicked = 0; + indi_widget->target = 0; + } + qp_mv_state = _e_mod_move_indicator_widget_quickpanel_move_get(indi_widget); at_mv_state = _e_mod_move_indicator_widget_apptray_move_get(indi_widget); if (!qp_mv_state && !at_mv_state) goto finish; @@ -1084,6 +1128,7 @@ _e_mod_move_indicator_widget_scrollable_object_movable_check(E_Move_Indicator_Wi static Eina_Bool _e_mod_move_indicator_widget_target_window_find_by_pointer(Ecore_X_Window *win, + Ecore_X_Window *pointed_win, int x, int y) { @@ -1098,6 +1143,8 @@ _e_mod_move_indicator_widget_target_window_find_by_pointer(Ecore_X_Window *win, m = e_mod_move_util_get(); E_CHECK_RETURN(m, EINA_FALSE); + if (pointed_win) *pointed_win = 0; + EINA_INLIST_REVERSE_FOREACH(m->borders, find_mb) { if (!find_mb->bd) continue; @@ -1108,12 +1155,21 @@ _e_mod_move_indicator_widget_target_window_find_by_pointer(Ecore_X_Window *win, // finding pointed border if (!E_INSIDE(x, y, find_mb->bd->x, find_mb->bd->y, find_mb->bd->w, find_mb->bd->h)) - continue; + { + continue; + } + else + { + if (pointed_win && *pointed_win == 0) + *pointed_win = find_mb->bd->client.win; + } // if notification , alpha, and indicator_state_none then search again below. - if ((TYPE_NOTIFICATION_CHECK(find_mb) || TYPE_APP_SELECTOR_CHECK(find_mb)) - && (find_mb->argb) - && (find_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE)) + if (((TYPE_NOTIFICATION_CHECK(find_mb)) || + (TYPE_APP_SELECTOR_CHECK(find_mb)) || + (TYPE_APP_POPUP_CHECK(find_mb))) && + (find_mb->argb) && + (find_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE)) { if (!noti_win_saved) { @@ -1155,25 +1211,70 @@ _e_mod_move_indicator_widget_target_window_find_by_pointer(Ecore_X_Window *win, return ret; } +static Eina_Bool +_e_mod_move_indicator_widget_focus_target_window_find_by_pointer(Ecore_X_Window *win, + int x, + int y) +{ + E_Move *m = NULL; + E_Move_Border *find_mb = NULL; + Eina_Bool found = EINA_FALSE; + Eina_Bool ret = EINA_FALSE; + + E_CHECK_RETURN(win, EINA_FALSE); + m = e_mod_move_util_get(); + E_CHECK_RETURN(m, EINA_FALSE); + + EINA_INLIST_REVERSE_FOREACH(m->borders, find_mb) + { + if (!find_mb->bd) continue; + + // finding visible border + if (!find_mb->visible) continue; + + // finding pointed border + if (!E_INSIDE(x, y, find_mb->bd->x, find_mb->bd->y, + find_mb->bd->w, find_mb->bd->h)) + { + continue; + } + else + { + found = EINA_TRUE; + break; + } + } + + if (found) + { + *win = find_mb->bd->client.win; + ret = EINA_TRUE; + } + + return ret; +} + static Ecore_X_Window _e_mod_move_indicator_widget_event_win_find(void *event_info) { E_Move_Event_Motion_Info *info = NULL; - Ecore_X_Window win = 0, res_win = 0; + Ecore_X_Window win = 0, res_win = 0, pointed_win = 0; info = (E_Move_Event_Motion_Info *)event_info; E_CHECK_RETURN(info, 0); if (_e_mod_move_indicator_widget_target_window_find_by_pointer(&win, + &pointed_win, info->coord.x, info->coord.y)) { - res_win = win; + if (pointed_win == win) + res_win = win; } SL(LT_EVENT_OBJ, - "[MOVE] ev:%15.15s INDICATOR_WIDGET_EVENT_WIN_FIND w:0x%08x (%4d,%4d)\n", - "EVAS_OBJ", res_win, info->coord.x, info->coord.y); + "[MOVE] ev:%15.15s INDICATOR_WIDGET_EVENT_WIN_FIND res_w:0x%08x w:0x%08x pointed_w:0x%08x (%4d,%4d)\n", + "EVAS_OBJ", res_win, win, pointed_win, info->coord.x, info->coord.y); return res_win; } @@ -1243,9 +1344,11 @@ _e_mod_move_indicator_widget_active_indicator_win_find_and_set(void) { target_mb = e_mod_move_border_client_find(target_win); E_CHECK(target_mb); - if ((TYPE_NOTIFICATION_CHECK(target_mb) || TYPE_APP_SELECTOR_CHECK(target_mb)) - && (target_mb->argb) - && (target_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE)) + if ((TYPE_NOTIFICATION_CHECK(target_mb) || + TYPE_APP_SELECTOR_CHECK(target_mb) || + TYPE_APP_POPUP_CHECK(target_mb)) && + (target_mb->argb) && + (target_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE)) { EINA_INLIST_REVERSE_FOREACH(m->borders, find_mb) { @@ -1261,17 +1364,19 @@ _e_mod_move_indicator_widget_active_indicator_win_find_and_set(void) if (TYPE_QUICKPANEL_CHECK(find_mb)) continue; // find system popup's below border - if ((TYPE_NOTIFICATION_CHECK(find_mb) || TYPE_APP_SELECTOR_CHECK(find_mb)) - && (find_mb->argb) - && (find_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE)) + if ((TYPE_NOTIFICATION_CHECK(find_mb) || + TYPE_APP_SELECTOR_CHECK(find_mb) || + TYPE_APP_POPUP_CHECK(find_mb)) && + (find_mb->argb) && + (find_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE)) { continue; } // OnScreen & FullScreen Window - if (find_mb->visible - && REGION_EQUAL_TO_ZONE(find_mb, zone) // check fullscreen - && (zone->id == 0))// change zone->id comparing to bd's profile property (mobile) + if ((find_mb->visible) && + (zone->id == 0) && // change zone->id comparing to bd's profile property (mobile) + (REGION_EQUAL_TO_ZONE(find_mb, zone))) // check fullscreen { active_indi_win_found = EINA_TRUE; break; @@ -1393,7 +1498,9 @@ e_mod_move_indicator_widget_apply(void) e_mod_move_indicator_widget_del(indi_widget); e_mod_move_indicator_widget_set(e_mod_move_indicator_widget_add(target_win)); if ((target_mb) && - (TYPE_NOTIFICATION_CHECK(target_mb) || TYPE_APP_SELECTOR_CHECK(target_mb)) && + (TYPE_NOTIFICATION_CHECK(target_mb) || + TYPE_APP_SELECTOR_CHECK(target_mb) || + TYPE_APP_POPUP_CHECK(target_mb)) && (target_mb->argb) && (target_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE)) { @@ -1410,7 +1517,9 @@ e_mod_move_indicator_widget_apply(void) e_mod_move_indicator_widget_set(e_mod_move_indicator_widget_add(target_win)); if ((target_mb) && - (TYPE_NOTIFICATION_CHECK(target_mb) || TYPE_APP_SELECTOR_CHECK(target_mb)) && + (TYPE_NOTIFICATION_CHECK(target_mb) || + TYPE_APP_SELECTOR_CHECK(target_mb) || + TYPE_APP_POPUP_CHECK(target_mb)) && (target_mb->argb) && (target_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE)) { diff --git a/move-tizen/src/e_mod_move_indicator_widget.h b/move-tizen/src/e_mod_move_indicator_widget.h index 1aac634..b6d7145 100644 --- a/move-tizen/src/e_mod_move_indicator_widget.h +++ b/move-tizen/src/e_mod_move_indicator_widget.h @@ -9,9 +9,14 @@ struct _E_Move_Indicator_Widget Ecore_X_Window win; Eina_Bool quickpanel_move; Eina_Bool apptray_move; + Eina_Bool send_flick_done; Eina_Bool move_started; + Evas_Point pos; // mouse position int input_region_id; + + Ecore_X_Window target; //releate send_flick_done + Eina_Bool flicked; //releate send_flick_done }; typedef struct _E_Move_Indicator_Widget E_Move_Indicator_Widget; diff --git a/move-tizen/src/e_mod_move_mini_apptray_widget.c b/move-tizen/src/e_mod_move_mini_apptray_widget.c index 851bfcc..d201d08 100644 --- a/move-tizen/src/e_mod_move_mini_apptray_widget.c +++ b/move-tizen/src/e_mod_move_mini_apptray_widget.c @@ -56,8 +56,10 @@ _e_mod_move_mini_apptray_widget_cb_motion_start_internal_mini_apptray_check(E_Mo // It's posible that WM doesn't send rotation change request yet. // In this case the value of wait_for_done is zero, // it means quickpanel isn't rotating for now, but going to be rotated. +#ifdef _F_ZONE_WINDOW_ROTATION_ if (mini_apptray_mb->bd) if (mini_apptray_mb->bd->client.e.state.rot.wait_for_done) return EINA_FALSE; +#endif // check if notification window is on-screen. EINA_INLIST_REVERSE_FOREACH(m->borders, find_mb) diff --git a/move-tizen/src/e_mod_move_quickpanel.c b/move-tizen/src/e_mod_move_quickpanel.c index f7f4a3c..ea59b25 100644 --- a/move-tizen/src/e_mod_move_quickpanel.c +++ b/move-tizen/src/e_mod_move_quickpanel.c @@ -1048,7 +1048,6 @@ _e_mod_move_quickpanel_below_window_objs_move(int x, } } - // if qp_scroll_with_clipping case, make cw / ch data for e_mod_move_util_fb_move() if (m->qp_scroll_with_clipping) { switch (angle) @@ -1064,8 +1063,6 @@ _e_mod_move_quickpanel_below_window_objs_move(int x, } } - e_mod_move_util_fb_move(angle, cw, ch, x, y); - return EINA_TRUE; } @@ -1500,8 +1497,6 @@ _e_mod_move_quickpanel_fb_move_change_with_angle(E_Move_Border *mb) } } - e_mod_move_util_fb_move(curr_angle, cw, ch, ax, ay); - return EINA_TRUE; } @@ -1562,7 +1557,6 @@ _e_mod_move_quickpanel_comp_layer_obj_move(int x, _e_mod_move_quickpanel_comp_layer_obj_move_intern(mx, my); - // if qp_scroll_with_clipping case, make cw / ch data for e_mod_move_util_fb_move() if (m->qp_scroll_with_clipping) { switch (angle) @@ -1578,8 +1572,6 @@ _e_mod_move_quickpanel_comp_layer_obj_move(int x, } } - e_mod_move_util_fb_move(angle, cw, ch, x, y); - return EINA_TRUE; } @@ -2418,13 +2410,25 @@ e_mod_move_quickpanel_stage_deinit(E_Move_Border *mb) EINTERN Eina_Bool e_mod_move_quickpanel_angle_change_post_job(E_Move_Border *mb) { + E_Zone *zone = NULL; + E_Border *bd = NULL; + E_CHECK_RETURN(mb, EINA_FALSE); E_CHECK_RETURN(TYPE_QUICKPANEL_CHECK(mb), EINA_FALSE); + bd = mb->bd; + E_CHECK_RETURN(bd, EINA_FALSE); + zone = bd->zone; + E_CHECK_RETURN(zone, EINA_FALSE); + + if (!e_mod_move_quickpanel_objs_animation_state_get(mb) + && REGION_INTERSECTS_WITH_ZONE(mb, zone)) + e_mod_move_quickpanel_objs_animation_start_position_set(mb, mb->angle, EINA_TRUE); if (e_mod_move_quickpanel_objs_animation_state_get(mb)) return _e_mod_move_quickpanel_animation_change_with_angle(mb); else return _e_mod_move_quickpanel_fb_move_change_with_angle(mb); + } static Eina_Bool @@ -2530,15 +2534,34 @@ e_mod_move_quickpanel_anim_state_send(E_Move_Border *mb, { long d[5] = {0L, 0L, 0L, 0L, 0L}; Ecore_X_Window win; + E_Move *m; + E_Zone *zone = NULL; + E_Border *bd = NULL; + int on_screen_state = 0; + E_CHECK_RETURN(mb, EINA_FALSE); E_CHECK_RETURN(TYPE_QUICKPANEL_CHECK(mb), EINA_FALSE); + m = mb->m; + E_CHECK_RETURN(m, EINA_FALSE); win = e_mod_move_util_client_xid_get(mb); E_CHECK_RETURN(win, 0); + bd = mb->bd; + E_CHECK_RETURN(bd, EINA_FALSE); + zone = bd->zone; + E_CHECK_RETURN(zone, EINA_FALSE); + if (state) d[0] = 1L; else d[0] = 0L; + if (REGION_INTERSECTS_WITH_ZONE(mb, zone)) on_screen_state = 1; + + if (state) + e_msg_send("e.move.quickpanel", "start", on_screen_state, E_OBJECT(m->man), NULL, NULL, NULL); + else + e_msg_send("e.move.quickpanel", "end", on_screen_state, E_OBJECT(m->man), NULL, NULL, NULL); + ecore_x_client_message32_send (win, ATOM_MV_QUICKPANEL_STATE, ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, diff --git a/move-tizen/src/e_mod_move_util.c b/move-tizen/src/e_mod_move_util.c index da21e2a..f48e487 100644 --- a/move-tizen/src/e_mod_move_util.c +++ b/move-tizen/src/e_mod_move_util.c @@ -118,8 +118,9 @@ e_mod_move_util_rotation_lock(E_Move *m) zone = e_util_zone_current_get(man); E_CHECK(zone); - +#ifdef _F_ZONE_WINDOW_ROTATION_ e_zone_rotation_block_set(zone, "move-tizen", EINA_TRUE); +#endif ecore_x_window_prop_card32_set(m->man->root, ATOM_ROTATION_LOCK, &val, 1); } @@ -138,7 +139,9 @@ e_mod_move_util_rotation_unlock(E_Move *m) zone = e_util_zone_current_get(man); E_CHECK(zone); +#ifdef _F_ZONE_WINDOW_ROTATION_ e_zone_rotation_block_set(zone, "move-tizen", EINA_FALSE); +#endif ecore_x_window_prop_card32_set(m->man->root, ATOM_ROTATION_LOCK, &val, 1); } @@ -215,30 +218,6 @@ e_mod_move_util_compositor_composite_mode_set(E_Move *m, e_manager_comp_composite_mode_set(man, zone, set); } -EINTERN void -e_mod_move_util_fb_move(int angle, - int cw, - int ch, - int x, - int y) -{ - Ecore_X_Display *d = ecore_x_display_get(); - int fb_x = 0, fb_y = 0; - E_CHECK(d); - - switch (angle) - { - case 0: fb_x = 0; fb_y = y + ch; break; - case 90: fb_x = x + cw; fb_y = 0; break; - case 180: fb_x = 0; fb_y = y - ch; break; - case 270: fb_x = x - cw; fb_y = 0; break; - default : - break; - } - - utilx_set_video_offset(d, fb_x, fb_y); -} - EINTERN int e_mod_move_util_layer_policy_get(E_Move_Layer_Policy layer) { diff --git a/move-tizen/src/e_mod_move_util.h b/move-tizen/src/e_mod_move_util.h index 5ecb530..7728324 100644 --- a/move-tizen/src/e_mod_move_util.h +++ b/move-tizen/src/e_mod_move_util.h @@ -98,7 +98,6 @@ EINTERN void e_mod_move_util_rotation_unlock(E_Move *m EINTERN Eina_Bool e_mod_move_util_compositor_object_visible_get(E_Move_Border *mb); EINTERN E_Move_Border *e_mod_move_util_visible_fullscreen_window_find(void); EINTERN void e_mod_move_util_compositor_composite_mode_set(E_Move *m, Eina_Bool set); -EINTERN void e_mod_move_util_fb_move(int angle, int cw, int ch, int x, int y); EINTERN int e_mod_move_util_layer_policy_get(E_Move_Layer_Policy layer); EINTERN E_Border *e_mod_move_util_border_find_by_pointer(int x, int y); EINTERN int e_mod_move_util_root_angle_get(void); diff --git a/packaging/e17-extra-modules.changes b/packaging/e17-extra-modules.changes deleted file mode 100644 index b1151f2..0000000 --- a/packaging/e17-extra-modules.changes +++ /dev/null @@ -1,2 +0,0 @@ -* Wed Nov 28 2012 Anas Nashif accepted/trunk/20121113.042536@ff62a74 -- Use libX11 instead of libx11 diff --git a/packaging/e17-extra-modules.spec b/packaging/e17-extra-modules.spec index 575603e..6c1c28a 100755 --- a/packaging/e17-extra-modules.spec +++ b/packaging/e17-extra-modules.spec @@ -1,11 +1,12 @@ +%bcond_with x Name: e17-extra-modules -Summary: The E17 Extra Modules The E17 extra modules consists of modules made by SAMSUNG -Version: 0.14.11 +Summary: The E17 Extra Modules for Tizen +Version: 0.10.116 Release: 1 Group: System/GUI/Other -License: BSD +License: BSD-2-Clause Source0: %{name}-%{version}.tar.gz -BuildRequires: pkgconfig(enlightenment) +BuildRequires: e17-devel BuildRequires: pkgconfig(utilX) BuildRequires: pkgconfig(elementary) BuildRequires: pkgconfig(dlog) @@ -14,16 +15,20 @@ BuildRequires: pkgconfig(xextproto) BuildRequires: pkgconfig(xfixes) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(edje) +BuildRequires: pkgconfig(eina) +BuildRequires: pkgconfig(ecore) +BuildRequires: pkgconfig(ecore-x) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(evas) BuildRequires: pkgconfig(xi) BuildRequires: pkgconfig(xtst) BuildRequires: pkgconfig(pixman-1) -BuildRequires: pkgconfig(sensor) BuildRequires: pkgconfig(vconf) +BuildRequires: cmake +BuildRequires: gettext BuildRequires: edje-tools + Requires: libX11 -Requires: sensor Requires: vconf %description @@ -32,15 +37,16 @@ The E17 Extra Modules The E17 extra modules consists of modules made by SAMSUNG %prep %setup -q - %build +%define DEF_SUBDIRS illume2-tizen comp-tizen keyrouter wmready accessibility move-tizen devicemgr extndialog screen-reader -%define DEF_SUBDIRS comp-tizen illume2-tizen keyrouter wmready accessibility move-tizen devicemgr extndialog screen-reader devmode-tizen - -export CFLAGS+=" -Wall -g -fPIC -rdynamic" +export GC_SECTIONS_FLAGS="-fdata-sections -ffunction-sections -Wl,--gc-sections" +export CFLAGS+=" -Wall -g -fPIC -rdynamic ${GC_SECTIONS_FLAGS} -D_F_REMAP_MOUSE_BUTTON_TO_HWKEY_ " export LDFLAGS+=" -Wl,--hash-style=both -Wl,--as-needed -Wl,--rpath=/usr/lib" -# use dlog -export CFLAGS+=" -DUSE_DLOG" + +export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE" + +export CFLAGS+=" -D_ENV_MOBILE_" %ifarch %{arm} export CFLAGS+=" -D_ENV_ARM" @@ -49,16 +55,37 @@ export CFLAGS+=" -D_ENV_ARM" for FILE in %{DEF_SUBDIRS} do + if test "x${FILE}" = "xcomp-tizen" ; then + cd $FILE + export CFLAGS+=" -D_F_USE_GRAB_KEY_SET_" + %autogen + %configure --enable-hwc \ + --prefix=/usr + make %{?jobs:-j%jobs} + cd - + elif test "x${FILE}" = "xscreen-reader" ; then cd $FILE +# export CFLAGS+=" -DENABLE_RAPID_KEY_INPUT" %autogen %configure --prefix=/usr - make + make %{?jobs:-j%jobs} cd - + else + cd $FILE + %autogen + %configure --prefix=/usr + make %{?jobs:-j%jobs} + cd - + fi done %install rm -rf %{buildroot} +# for smack rule +mkdir -p %{buildroot}/etc/smack/accesses2.d +cp %{_builddir}/%{buildsubdir}/e17-extra-modules.rule %{buildroot}/etc/smack/accesses2.d + # for license notification mkdir -p %{buildroot}/usr/share/license cp -a %{_builddir}/%{buildsubdir}/COPYING %{buildroot}/usr/share/license/%{name} @@ -78,6 +105,7 @@ find %{buildroot}/usr/lib/enlightenment/modules -name *.a | xargs rm %files %manifest e17-extra-modules.manifest %defattr(-,root,root,-) + %{_libdir}/enlightenment/modules/comp-tizen %{_libdir}/enlightenment/modules/e17-extra-module-accessibility %{_libdir}/enlightenment/modules/illume2-tizen @@ -86,8 +114,10 @@ find %{buildroot}/usr/lib/enlightenment/modules -name *.a | xargs rm %{_libdir}/enlightenment/modules/move-tizen %{_libdir}/enlightenment/modules/e17-extra-module-devicemgr %{_libdir}/enlightenment/modules/screen-reader -%{_libdir}/enlightenment/modules/devmode-tizen %{_datadir}/enlightenment/data/* %{_bindir}/extndialog %{_bindir}/* /usr/share/license/%{name} +/etc/smack/accesses2.d/e17-extra-modules.rule + +%define _unpackaged_files_terminate_build 0 -- 2.7.4