Eina_Bool fullscreen : 1;
Eina_Bool maximized : 1;
Eina_Bool skip_focus : 1;
+ Eina_Bool floating : 1;
};
static const char *widtype = NULL;
*pd = *p;
}
*pd = 0;
- v = atof(d);
+ v = _elm_atof(d);
free(d);
return v;
}
{
Elm_Win *wd = elm_widget_data_get(obj);
const Eina_List *items;
+ const Eina_List *list;
void *(*list_data_get) (const Eina_List *list);
if (!wd)
return EINA_FALSE;
+ list = elm_widget_sub_object_list_get(obj);
/* Focus chain */
- if (wd->subobjs)
+ if (list)
{
if (!(items = elm_widget_focus_custom_chain_get(obj)))
- {
- items = wd->subobjs;
- if (!items)
- return EINA_FALSE;
- }
+ items = list;
+
list_data_get = eina_list_data_get;
elm_widget_focus_list_next_get(obj, items, list_data_get, dir, next);
if (*next)
return EINA_TRUE;
}
-
*next = (Evas_Object *)obj;
return EINA_FALSE;
}
return EINA_TRUE;
}
else if ((!strcmp(ev->keyname, "Left")) ||
- (!strcmp(ev->keyname, "KP_Left")))
+ ((!strcmp(ev->keyname, "KP_Left")) && (!ev->string)))
{
//TODO : woohyun jung
}
else if ((!strcmp(ev->keyname, "Right")) ||
- (!strcmp(ev->keyname, "KP_Right")))
+ ((!strcmp(ev->keyname, "KP_Right")) && (!ev->string)))
{
//TODO : woohyun jung
}
else if ((!strcmp(ev->keyname, "Up")) ||
- (!strcmp(ev->keyname, "KP_Up")))
+ ((!strcmp(ev->keyname, "KP_Up")) && (!ev->string)))
{
//TODO : woohyun jung
}
else if ((!strcmp(ev->keyname, "Down")) ||
- (!strcmp(ev->keyname, "KP_Down")))
+ ((!strcmp(ev->keyname, "KP_Down")) && (!ev->string)))
{
//TODO : woohyun jung
}
_elm_win_obj_callback_del(void *data, Evas *e, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Win *win = data;
- Evas_Object *child;
+ Evas_Object *child, *child2 = NULL;
if (win->parent)
{
if (win->shot.timer) ecore_timer_del(win->shot.timer);
evas_object_event_callback_del_full(win->win_obj, EVAS_CALLBACK_DEL,
_elm_win_obj_callback_del, win);
- while (((child = evas_object_bottom_get(win->evas))) &&
- (child != obj))
+ child = evas_object_bottom_get(win->evas);
+ while (child)
{
- evas_object_del(child);
- }
- while (((child = evas_object_top_get(win->evas))) &&
- (child != obj))
- {
- evas_object_del(child);
+ /* if the object we see *IS* the window object (because we are
+ * faking a parent object inside the canvas), then skip it and
+ * go to the next one */
+ if (child == obj)
+ {
+ child = evas_object_above_get(child);
+ if (!child) break;
+ }
+ /* if we are using the next object above from the previous loop */
+ if (child == child2)
+ {
+ /* this object has refcounts from the previous loop */
+ child2 = evas_object_above_get(child);
+ if (child2) evas_object_ref(child2);
+ evas_object_del(child);
+ /* so unref from previous loop */
+ evas_object_unref(child);
+ child = child2;
+ }
+ else
+ {
+ /* just delete as normal (probably only first object */
+ child2 = evas_object_above_get(child);
+ if (child2) evas_object_ref(child2);
+ evas_object_del(child);
+ child = child2;
+ }
}
#ifdef HAVE_ELEMENTARY_X
if (win->client_message_handler)
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
win->screen.x = x;
win->screen.y = y;
+
+ /* FIXME: We should update ecore_wl_window_location here !! */
}
else if (win->img_obj)
{
if (!(win = data)) return;
/* FIXME: Change mouse pointer */
- /* NB: 0,0 are dummy values. Wayland handles the move by itself */
- ecore_evas_move(win->ee, 0, 0);
+ /* NB: Wayland handles moving surfaces by itself so we cannot
+ * specify a specific x/y we want. Instead, we will pass in the
+ * existing x/y values so they can be recorded as 'previous' position.
+ * The new position will get updated automatically when the move is
+ * finished */
+
+ ecore_evas_wayland_move(win->ee, win->screen.x, win->screen.y);
}
static void
eina_stringshare_replace(&(win->title), title);
ecore_evas_title_set(win->ee, win->title);
if (win->frame_obj)
- edje_object_part_text_set(win->frame_obj, "elm.text.title", win->title);
+ edje_object_part_text_escaped_set(win->frame_obj, "elm.text.title", win->title);
}
EAPI const char *
return EINA_FALSE;
}
+// WRAPPER: Temperary added.
+EAPI void
+elm_win_indicator_state_set(Evas_Object *obj, Elm_Win_Indicator_Mode mode)
+{
+ elm_win_indicator_mode_set(obj, mode);
+}
+
EAPI void
elm_win_indicator_mode_set(Evas_Object *obj, Elm_Win_Indicator_Mode mode)
{
#endif
}
+// WRAPPER: Temperary added.
+EAPI Elm_Win_Indicator_Mode
+elm_win_indicator_state_get(const Evas_Object *obj)
+{
+ return elm_win_indicator_mode_get(obj);
+}
+
EAPI Elm_Win_Indicator_Mode
elm_win_indicator_mode_get(const Evas_Object *obj)
{
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd || !item) return;
- edje_object_part_text_set(wd->frm, item, text);
+ edje_object_part_text_escaped_set(wd->frm, item, text);
_sizing_eval(obj);
}
if (!win) return EINA_FALSE;
if (!win->ee) return EINA_FALSE;
- if(!ecore_evas_extn_socket_listen(win->ee, svcname, svcnum, svcsys))
+ if (!ecore_evas_extn_socket_listen(win->ee, svcname, svcnum, svcsys))
return EINA_FALSE;
return EINA_TRUE;
#endif
return 0;
}
+
+EAPI void
+elm_win_floating_mode_set(Evas_Object *obj, Eina_Bool floating)
+{
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ win = elm_widget_data_get(obj);
+ if (!win) return;
+ if (floating == win->floating) return;
+#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
+#endif
+ win->floating = floating;
+#ifdef HAVE_ELEMENTARY_X
+ if (win->xwin)
+ {
+ if (win->floating)
+ ecore_x_e_illume_window_state_set
+ (win->xwin, ECORE_X_ILLUME_WINDOW_STATE_FLOATING);
+ else
+ ecore_x_e_illume_window_state_set
+ (win->xwin, ECORE_X_ILLUME_WINDOW_STATE_NORMAL);
+ }
+#endif
+}
+
+EAPI Eina_Bool
+elm_win_floating_mode_get(const Evas_Object *obj)
+{
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ win = elm_widget_data_get(obj);
+ if (!win) return EINA_FALSE;
+
+ return win->floating;
+}
+