fflush(stdout);
}
+static void
+_win_effect_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
+{
+ const char *type_name;
+ Efl_Ui_Win_Effect_Type type = (Efl_Ui_Win_Effect_Type)(event_info);
+
+ switch (type)
+ {
+ case EFL_UI_WIN_EFFECT_TYPE_SHOW:
+ type_name = eina_stringshare_add("SHOW");
+ break;
+ case EFL_UI_WIN_EFFECT_TYPE_HIDE:
+ type_name = eina_stringshare_add("HIDE");
+ break;
+ case EFL_UI_WIN_EFFECT_TYPE_RESTACK:
+ type_name = eina_stringshare_add("RESTACK");
+ break;
+ default:
+ type_name = eina_stringshare_add("UNKNOWN");
+ }
+
+ printf("EFFECT: %s %s\n", type_name, (char *)data);
+ eina_stringshare_del(type_name);
+}
+
void
test_win_state(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
evas_object_smart_callback_add(win, "focus,in", _win_state_focus_cb, "focus,in");
evas_object_smart_callback_add(win, "delete,request", _win_state_print_cb, "delete,request");
evas_object_smart_callback_add(win, "wm,rotation,changed", _win_state_print_cb, "wm,rotation,changed");
+ evas_object_smart_callback_add(win, "effect,started", _win_effect_cb, "effect,started");
+ evas_object_smart_callback_add(win, "effect,done", _win_effect_cb, "effect,done");
elm_win_autodel_set(win, EINA_TRUE);
bg = elm_bg_add(win);
Ecore_Wl2_Window *win;
Ecore_Event_Handler *configure_handler;
Eina_Bool opaque_dirty : 1;
+ //TIZEN_ONLY(20171110): added signal for effect start and done
+ Ecore_Event_Handler *effect_start_handler;
+ Ecore_Event_Handler *effect_end_handler;
+ //
} wl;
#endif
#ifdef HAVE_ELEMENTARY_COCOA
static const char SIG_ROTATION_CHANGED[] = "rotation,changed";
static const char SIG_PROFILE_CHANGED[] = "profile,changed";
static const char SIG_WM_ROTATION_CHANGED[] = "wm,rotation,changed";
+//TIZEN_ONLY(20171110): added signal for effect start and done
+static const char SIG_EFFECT_STARTED[] = "effect,started";
+static const char SIG_EFFECT_DONE[] = "effect,done";
+//
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{SIG_DELETE_REQUEST, ""},
{SIG_WM_ROTATION_CHANGED, ""},
{SIG_WIDGET_FOCUSED, ""}, /**< handled by elm_widget */
{SIG_WIDGET_UNFOCUSED, ""}, /**< handled by elm_widget */
+ {SIG_EFFECT_STARTED, ""},
+ {SIG_EFFECT_DONE, ""},
{NULL, NULL}
};
if (sd->pointer.obj) evas_object_del(sd->pointer.obj);
if (sd->pointer.ee) ecore_evas_free(sd->pointer.ee);
sd->pointer.surf = NULL;
+ //TIZEN_ONLY(20171110): added signal for effect start and done
+ ecore_event_handler_del(sd->wl.effect_start_handler);
+ ecore_event_handler_del(sd->wl.effect_end_handler);
+ //
#endif
#ifdef HAVE_ELEMENTARY_WIN32
ecore_event_handler_del(sd->win32.key_down_handler);
_elm_win_opaque_update(sd, EINA_FALSE);
sd->wl.opaque_dirty = 0;
}
+
+//TIZEN_ONLY(20171110): added signal for effect start and done
+static Eina_Bool
+_elm_win_wl_effect_start(void *data, int type EINA_UNUSED, void *event)
+{
+ ELM_WIN_DATA_GET(data, sd);
+ Ecore_Wl2_Event_Effect_Start *e = event;
+
+ if (!sd->wl.win) return ECORE_CALLBACK_PASS_ON;
+
+ if ((ecore_wl2_window_id_get(sd->wl.win) != e->win))
+ return ECORE_CALLBACK_PASS_ON;
+
+ evas_object_smart_callback_call(data, SIG_EFFECT_STARTED, (void*)e->type);
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+_elm_win_wl_effect_end(void *data, int type EINA_UNUSED, void *event)
+{
+ ELM_WIN_DATA_GET(data, sd);
+ Ecore_Wl2_Event_Effect_Start *e = event;
+ unsigned int eff_type;
+
+ if (!sd->wl.win) return ECORE_CALLBACK_PASS_ON;
+
+ if ((ecore_wl2_window_id_get(sd->wl.win) != e->win))
+ return ECORE_CALLBACK_PASS_ON;
+
+ evas_object_smart_callback_call(data, SIG_EFFECT_DONE, (void*)e->type);
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+//
#endif
static inline void
(ECORE_X_EVENT_WINDOW_PROPERTY, _elm_win_property_change, obj);
}
#endif
+#ifdef HAVE_ELEMENTARY_WL2
+ else if ((engine) &&
+ ((!strcmp(engine, ELM_WAYLAND_SHM)) ||
+ (!strcmp(engine, ELM_WAYLAND_EGL))))
+ {
+ //TIZEN_ONLY(20171110): added signal for effect start and done
+ sd->wl.effect_start_handler = ecore_event_handler_add
+ (ECORE_WL2_EVENT_EFFECT_START, _elm_win_wl_effect_start, obj);
+ sd->wl.effect_end_handler = ecore_event_handler_add
+ (ECORE_WL2_EVENT_EFFECT_END, _elm_win_wl_effect_end, obj);
+ //
+ }
+#endif
+
else if ((engine) && (!strncmp(engine, "shot:", 5)))
_shot_init(sd);
right = (1 << 4) [[Start resizing window to the right]]
}
+//TIZEN_ONLY(20171110): added signal for effect start and done
+enum Efl.Ui.Win.Effect.Type
+{
+ [[List of window effect.
+
+ These list indicates types of window effect. When the effect started or
+ done, the Elm_Win is notified with type information of window effect.
+ ]]
+
+ legacy: efl_ui_win_effect_type;
+
+ unknown = 0,
+ show,
+ hide,
+ restack
+}
+//
+
class Efl.Ui.Win (Elm.Widget, Efl.Canvas, Efl.Canvas.Pointer, Efl.Access.Window,
Efl.Access.Component, Efl.Access.Widget.Action,
Efl.Content, Efl.Input.State, Efl.Input.Interface, Efl.Screen,