evas_object_resize(win, 480, 800);
evas_object_show(win);
}
+
+void
+test_launcher2(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *win, *bg, *sc, *tb, *pad, *bt, *ic, *lb, *tb2, *mb, *ck, *bx, *rc, *ly;
+ int i, j, k, n, m;
+ char buf[PATH_MAX];
+ Eina_List *mbs = NULL;
+
+ win = elm_win_add(NULL, "launcher", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Launcher");
+ elm_win_autodel_set(win, 1);
+
+ bg = elm_bg_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", PACKAGE_DATA_DIR);
+ elm_bg_file_set(bg, buf, NULL);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ bx = elm_box_add(win);
+ elm_box_homogenous_set(bx, 1);
+ elm_box_horizontal_set(bx, 1);
+
+ for (k = 0 ; k < 8; k++)
+ {
+ ly = elm_layout_add(win);
+ snprintf(buf, sizeof(buf), "%s/objects/test.edj", PACKAGE_DATA_DIR);
+ elm_layout_file_set(ly, buf, "layout");
+ evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "Button 1");
+ elm_layout_content_set(ly, "element1", bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "Button 2");
+ elm_layout_content_set(ly, "element2", bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "Button 3");
+ elm_layout_content_set(ly, "element3", bt);
+ evas_object_show(bt);
+
+ mb = elm_mapbuf_add(win);
+ elm_mapbuf_content_set(mb, ly);
+ evas_object_show(ly);
+
+ elm_box_pack_end(bx, mb);
+ evas_object_show(mb);
+
+ mbs = eina_list_append(mbs, mb);
+ }
+
+ // fixme: free mbs
+ evas_object_data_set(win, "mbs", mbs);
+
+ sc = elm_scroller_add(win);
+ elm_scroller_bounce_set(sc, 1, 0);
+ elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, sc);
+
+ elm_scroller_content_set(sc, bx);
+ evas_object_show(bx);
+
+ elm_scroller_page_relative_set(sc, 1.0, 1.0);
+ evas_object_show(sc);
+
+ tb2 = elm_table_add(win);
+ evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, tb2);
+
+ ck = elm_check_add(win);
+ elm_check_label_set(ck, "Map");
+ elm_check_state_set(ck, 0);
+ evas_object_smart_callback_add(ck, "changed", mode_cb, win);
+ evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ck, 0.05, 0.99);
+ elm_table_pack(tb2, ck, 0, 0, 1, 1);
+ evas_object_show(ck);
+
+ ck = elm_check_add(win);
+ elm_check_label_set(ck, "A");
+ elm_check_state_set(ck, 1);
+ evas_object_smart_callback_add(ck, "changed", alpha_cb, win);
+ evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ck, 0.20, 0.99);
+ elm_table_pack(tb2, ck, 1, 0, 1, 1);
+ evas_object_show(ck);
+
+ ck = elm_check_add(win);
+ elm_check_label_set(ck, "Smo");
+ elm_check_state_set(ck, 1);
+ evas_object_smart_callback_add(ck, "changed", smooth_cb, win);
+ evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ck, 0.40, 0.99);
+ elm_table_pack(tb2, ck, 2, 0, 1, 1);
+ evas_object_show(ck);
+
+ ck = elm_check_add(win);
+ elm_check_label_set(ck, "FS");
+ elm_check_state_set(ck, 0);
+ evas_object_smart_callback_add(ck, "changed", full_cb, win);
+ evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ck, 0.5, 0.99);
+ elm_table_pack(tb2, ck, 3, 0, 1, 1);
+ evas_object_show(ck);
+
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "Close");
+ evas_object_smart_callback_add(bt, "clicked", close_cb, win);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bt, 0.95, 0.99);
+ elm_table_pack(tb2, bt, 4, 0, 1, 1);
+ evas_object_show(bt);
+
+ evas_object_show(tb2);
+
+ evas_object_resize(win, 480, 800);
+ evas_object_show(win);
+}
#endif
Evas *evas;
Evas_Object *parent, *win_obj;
Eina_List *subobjs;
+#ifdef HAVE_ELEMENTARY_X
Ecore_X_Window xwin;
+ Ecore_Event_Handler *client_message_handler;
+#endif
Ecore_Job *deferred_resize_job;
Ecore_Job *deferred_child_eval_job;
static void _elm_win_subobj_callback_del(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _elm_win_subobj_callback_changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
-static Eina_List *_elm_win_list = NULL;
+Eina_List *_elm_win_list = NULL;
static void
_elm_win_move(Ecore_Evas *ee)
{
evas_object_del(child);
}
+#ifdef HAVE_ELEMENTARY_X
+ if (win->client_message_handler)
+ ecore_event_handler_del(win->client_message_handler);
+#endif
// FIXME: Why are we flushing edje on every window destroy ??
// evas_image_cache_flush(win->evas);
// evas_font_cache_flush(win->evas);
}
}
+#ifdef HAVE_ELEMENTARY_X
static void
_elm_win_xwindow_get(Elm_Win *win)
{
break;
}
}
+#endif
+#ifdef HAVE_ELEMENTARY_X
static void
_elm_win_xwin_update(Elm_Win *win)
{
-#ifdef HAVE_ELEMENTARY_X
_elm_win_xwindow_get(win);
if (win->parent)
{
}
ecore_x_e_virtual_keyboard_state_set
(win->xwin, (Ecore_X_Virtual_Keyboard_State)win->kbdmode);
-#endif
}
+#endif
static void
_elm_win_eval_subobjs(Evas_Object *obj)
elm_widget_theme(obj);
}
+#ifdef HAVE_ELEMENTARY_X
+static int
+_elm_win_client_message(void *data, int type __UNUSED__, void *event)
+{
+ Elm_Win *win = data;
+ Ecore_X_Event_Client_Message *e = event;
+
+ if (e->format != 32) return 1;
+ if (e->message_type == ECORE_X_ATOM_E_COMP_FLUSH)
+ {
+ if (e->data.l[0] == win->xwin)
+ {
+ Evas *e = evas_object_evas_get(win->win_obj);
+ if (e)
+ {
+ edje_file_cache_flush();
+ edje_collection_cache_flush();
+ evas_image_cache_flush(e);
+ evas_font_cache_flush(e);
+ }
+ }
+ }
+ else if (e->message_type == ECORE_X_ATOM_E_COMP_DUMP)
+ {
+ if (e->data.l[0] == win->xwin)
+ {
+ Evas *e = evas_object_evas_get(win->win_obj);
+ if (e)
+ {
+ edje_file_cache_flush();
+ edje_collection_cache_flush();
+ evas_image_cache_flush(e);
+ evas_font_cache_flush(e);
+ evas_render_dump(e);
+ }
+ }
+ }
+ return 1;
+}
+#endif
+
/**
* Adds a window object. If this is the first window created, pass NULL as
* @p parent.
{
case ELM_SOFTWARE_X11:
win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1);
+#ifdef HAVE_ELEMENTARY_X
+ win->client_message_handler = ecore_event_handler_add
+ (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win);
+#endif
break;
case ELM_SOFTWARE_FB:
win->ee = ecore_evas_fb_new(NULL, 0, 1, 1);
CRITICAL("Software-16 engine create failed. Try software.");
win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1);
}
+#ifdef HAVE_ELEMENTARY_X
+ win->client_message_handler = ecore_event_handler_add
+ (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win);
+#endif
break;
case ELM_XRENDER_X11:
win->ee = ecore_evas_xrender_x11_new(NULL, 0, 0, 0, 1, 1);
CRITICAL("XRender engine create failed. Try software.");
win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1);
}
+#ifdef HAVE_ELEMENTARY_X
+ win->client_message_handler = ecore_event_handler_add
+ (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win);
+#endif
break;
case ELM_OPENGL_X11:
win->ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 1, 1);
CRITICAL("OpenGL engine create failed. Try software.");
win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1);
}
+#ifdef HAVE_ELEMENTARY_X
+ win->client_message_handler = ecore_event_handler_add
+ (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win);
+#endif
break;
case ELM_SOFTWARE_WIN32:
win->ee = ecore_evas_software_gdi_new(NULL, 0, 0, 1, 1);
free(win);
return NULL;
}
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwindow_get(win);
+#endif
if ((_elm_config->bgpixmap) && (!_elm_config->compositing))
ecore_evas_avoid_damage_set(win->ee, ECORE_EVAS_AVOID_DAMAGE_EXPOSE);
// bg pixmap done by x - has other issues like can be redrawn by x before it
else if (_elm_config->font_hinting == 2)
evas_font_hinting_set(win->evas, EVAS_FONT_HINTING_BYTECODE);
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
-
+#endif
+
_elm_win_list = eina_list_append(_elm_win_list, win->win_obj);
switch (_elm_config->engine)
default:
break;
}
+
return win->win_obj;
}
win = elm_widget_data_get(obj);
if (!win) return;
ecore_evas_borderless_set(win->ee, borderless);
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
+#endif
}
/**
win = elm_widget_data_get(obj);
if (!win) return;
ecore_evas_shaped_set(win->ee, shaped);
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
+#endif
}
/**
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
+#ifdef HAVE_ELEMENTARY_X
if (win->xwin)
{
if (alpha)
_elm_win_xwin_update(win);
}
else
+#endif
ecore_evas_alpha_set(win->ee, alpha);
}
win = elm_widget_data_get(obj);
if (!win) return;
+#ifdef HAVE_ELEMENTARY_X
if (win->xwin)
{
ecore_evas_transparent_set(win->ee, transparent);
_elm_win_xwin_update(win);
}
else
+#endif
ecore_evas_transparent_set(win->ee, transparent);
}
win = elm_widget_data_get(obj);
if (!win) return;
ecore_evas_override_set(win->ee, override);
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
+#endif
}
/**
break;
default:
ecore_evas_fullscreen_set(win->ee, fullscreen);
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
+#endif
break;
}
}
win = elm_widget_data_get(obj);
if (!win) return;
ecore_evas_maximized_set(win->ee, maximized);
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
+#endif
}
/**
win = elm_widget_data_get(obj);
if (!win) return;
ecore_evas_iconified_set(win->ee, iconified);
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
+#endif
}
/**
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
- ecore_evas_layer_set(win->ee, layer);
+ ecore_evas_layer_set(win->ee, layer);
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
+#endif
}
/**
evas_object_size_hint_min_set(obj, -1, -1);
evas_object_size_hint_max_set(obj, -1, -1);
_elm_win_eval_subobjs(obj);
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
+#endif
}
/**
evas_object_size_hint_min_set(obj, -1, -1);
evas_object_size_hint_max_set(obj, -1, -1);
_elm_win_eval_subobjs(obj);
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
+#endif
}
/**
win = elm_widget_data_get(obj);
if (!win) return;
ecore_evas_sticky_set(win->ee, sticky);
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
+#endif
}
/**
win = elm_widget_data_get(obj);
if (!win) return;
if (mode == win->kbdmode) return;
+#ifdef HAVE_ELEMENTARY_X
_elm_win_xwindow_get(win);
+#endif
win->kbdmode = mode;
#ifdef HAVE_ELEMENTARY_X
if (win->xwin)
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
- _elm_win_xwindow_get(win);
#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
if (win->xwin)
ecore_x_e_virtual_keyboard_set(win->xwin, is_keyboard);
#endif
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
- _elm_win_xwindow_get(win);
#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
if (win->xwin)
ecore_x_e_illume_conformant_set(win->xwin, conformant);
#endif
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
win = elm_widget_data_get(obj);
if (!win) return EINA_FALSE;
- _elm_win_xwindow_get(win);
#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
if (win->xwin)
return ecore_x_e_illume_conformant_get(win->xwin);
#endif
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
- _elm_win_xwindow_get(win);
#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
if (win->xwin)
{
ecore_x_e_illume_quickpanel_set(win->xwin, quickpanel);
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
win = elm_widget_data_get(obj);
if (!win) return EINA_FALSE;
- _elm_win_xwindow_get(win);
#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
if (win->xwin)
return ecore_x_e_illume_quickpanel_get(win->xwin);
#endif
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
- _elm_win_xwindow_get(win);
#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
if (win->xwin)
ecore_x_e_illume_quickpanel_priority_major_set(win->xwin, priority);
#endif
ELM_CHECK_WIDTYPE(obj, widtype) -1;
win = elm_widget_data_get(obj);
if (!win) return -1;
- _elm_win_xwindow_get(win);
#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
if (win->xwin)
return ecore_x_e_illume_quickpanel_priority_major_get(win->xwin);
#endif
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
- _elm_win_xwindow_get(win);
#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
if (win->xwin)
ecore_x_e_illume_quickpanel_priority_minor_set(win->xwin, priority);
#endif
ELM_CHECK_WIDTYPE(obj, widtype) -1;
win = elm_widget_data_get(obj);
if (!win) return -1;
- _elm_win_xwindow_get(win);
#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
if (win->xwin)
return ecore_x_e_illume_quickpanel_priority_minor_get(win->xwin);
#endif
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
- _elm_win_xwindow_get(win);
#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
if (win->xwin)
ecore_x_e_illume_quickpanel_zone_set(win->xwin, zone);
#endif
{
Ecore_X_Window xwin = 0;
Ecore_Evas *ee = NULL;
-
if (!obj) return 0;
+#ifdef HAVE_ELEMENTARY_X
ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj));
if (ee) xwin = (Ecore_X_Window)ecore_evas_window_get(ee);
return xwin;
+#else
+ return 0;
+#endif
}