struct {
int x, y;
} screen;
-
+ struct
+ {
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *obj, *hot_obj;
+ int hot_x, hot_y;
+ } pointer;
struct {
Evas_Object *top;
static void _elm_win_frame_cb_maximize(void *data, Evas_Object *obj __UNUSED__, const char *sig __UNUSED__, const char *source __UNUSED__);
static void _elm_win_frame_cb_close(void *data, Evas_Object *obj __UNUSED__, const char *sig __UNUSED__, const char *source __UNUSED__);
+static void _elm_win_pointer_add(Elm_Win *win, const char *style);
+
static const char SIG_DELETE_REQUEST[] = "delete,request";
static const char SIG_FOCUS_OUT[] = "focus,out";
static const char SIG_FOCUS_IN[] = "focus,in";
win = elm_widget_data_get(obj);
if (!win) return;
_elm_widget_top_win_focused_set(win->win_obj, EINA_TRUE);
- if (win->show_count == 1)
+ if (!elm_widget_focus_order_get(obj))
{
elm_widget_focus_steal(win->win_obj);
win->show_count++;
{
evas_object_hide(win->img_obj);
}
+ if (win->pointer.obj)
+ {
+ evas_object_hide(win->pointer.obj);
+ ecore_evas_hide(win->pointer.ee);
+ }
}
static void
{
evas_object_show(win->img_obj);
}
+ if (win->pointer.obj)
+ {
+ ecore_evas_show(win->pointer.ee);
+ evas_object_show(win->pointer.obj);
+ ecore_evas_wayland_pointer_set(win->pointer.ee, 10, 10);
+ }
evas_object_show(obj);
}
else
win->resize_location = 0;
- /* FIXME: Change to more generic wayland resize function */
if (win->resize_location > 0)
ecore_evas_wayland_resize(win->ee, win->resize_location);
}
evas_object_del(win->win_obj);
}
+static void
+_elm_win_pointer_add(Elm_Win *win, const char *style)
+{
+ int mw, mh;
+
+ win->pointer.ee = ecore_evas_wayland_shm_new(NULL, 0, 0, 32, 32, 0);
+ ecore_evas_resize(win->pointer.ee, 32, 32);
+
+ win->pointer.evas = ecore_evas_get(win->ee);
+
+ win->pointer.obj = edje_object_add(win->pointer.evas);
+ _elm_theme_set(NULL, win->pointer.obj, "pointer", "base", style);
+ edje_object_size_min_calc(win->pointer.obj, &mw, &mh);
+ printf("ELM Win Pointer Size: %d %d\n", mw, mh);
+ evas_object_move(win->pointer.obj, 0, 0);
+ evas_object_resize(win->pointer.obj, 32, 32);
+ evas_object_show(win->pointer.obj);
+}
+
#ifdef ELM_DEBUG
static void
_debug_key_down(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
if (win->ee) \
elm_engine_set(ecore_evas_engine_name_get(win->ee)); \
} while (0)
-#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
+#define ENGINE_COMPARE(name) (_elm_config->engine && !strcmp(_elm_config->engine, name))
switch (type)
{
else if (ENGINE_COMPARE(ELM_WAYLAND_SHM))
{
win->ee = ecore_evas_wayland_shm_new(NULL, 0, 0, 1, 1, 0);
- win->evas = ecore_evas_get(win->ee);
+ win->evas = ecore_evas_get(win->ee);
_elm_win_frame_add(win, "default");
+ _elm_win_pointer_add(win, "default");
}
else if (ENGINE_COMPARE(ELM_WAYLAND_EGL))
{
win->ee = ecore_evas_wayland_egl_new(NULL, 0, 0, 1, 1, 0);
- win->evas = ecore_evas_get(win->ee);
+ win->evas = ecore_evas_get(win->ee);
_elm_win_frame_add(win, "default");
+ _elm_win_pointer_add(win, "default");
}
else if (!strncmp(_elm_config->engine, "shot:", 5))
{
Elm_Win *win;
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
- if (!win) return;
+ if (!win || !title) return;
ecore_evas_title_set(win->ee, title);
if (win->frame_obj)
edje_object_part_text_set(win->frame_obj, "elm.text.title", title);
}
static void
+_elm_inwin_text_set_hook(Evas_Object *obj, const char *item, const char *text)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd || !item) return;
+ edje_object_part_text_set(wd->frm, item, text);
+ _sizing_eval(obj);
+}
+
+static const char *
+_elm_inwin_text_get_hook(const Evas_Object *obj, const char *item)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!item || !wd || !wd->frm) return NULL;
+ return edje_object_part_text_get(wd->frm, item);
+}
+
+static void
_sizing_eval(Evas_Object *obj)
{
Widget_Data *wd = elm_widget_data_get(obj);
elm_widget_del_hook_set(obj2, _del_hook);
elm_widget_theme_hook_set(obj2, _theme_hook);
elm_widget_focus_next_hook_set(obj2, _elm_inwin_focus_next_hook);
+ elm_widget_text_set_hook_set(obj2, _elm_inwin_text_set_hook);
+ elm_widget_text_get_hook_set(obj2, _elm_inwin_text_get_hook);
elm_widget_can_focus_set(obj2, EINA_TRUE);
elm_widget_highlight_ignore_set(obj2, EINA_TRUE);
{
Elm_Win *win;
- Ecore_Evas *ee = NULL;
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
win = elm_widget_data_get(obj);