void Widget::setEvasObject(Evas_Object *o) { // FIXME: study platformWidget() and use it // FIXME: right now platformWidget() requires implementing too much if (m_data->m_evasObject == o) return; m_data->m_evasObject = o; if (!o) { m_data->m_evas = 0; m_data->m_isUsingEcoreX = false; return; } m_data->m_evas = evas_object_evas_get(o); #ifdef HAVE_ECORE_X const char *engine = ecore_evas_engine_name_get(ecoreEvas()); m_data->m_isUsingEcoreX = (!strcmp(engine, "software_x11") || !strcmp(engine, "software_xcb") || !strcmp(engine, "software_16_x11") || !strncmp(engine, "xrender", sizeof("xrender") - 1)); #endif Widget::frameRectsChanged(); }
E_API int e_mouse_update(void) { #ifndef HAVE_WAYLAND_ONLY if (e_comp->comp_type == E_PIXMAP_TYPE_X) { unsigned char map[256] = { 0 }; int n; if (!ecore_x_pointer_control_set(e_config->mouse_accel_numerator, e_config->mouse_accel_denominator, e_config->mouse_accel_threshold)) return 0; if (!ecore_x_pointer_mapping_get(map, 256)) return 0; for (n = 0; n < 256; n++) { if (!map[n]) break; } if (n < 3) { map[0] = 1; map[1] = 2; map[2] = 3; n = 3; } if (e_config->mouse_hand == E_MOUSE_HAND_RIGHT) { map[0] = 1; map[2] = 3; } else if (e_config->mouse_hand == E_MOUSE_HAND_LEFT) { map[0] = 3; map[2] = 1; } if (!ecore_x_pointer_mapping_set(map, n)) return 0; } #endif #ifdef USE_MODULE_WL_DRM if (strstr(ecore_evas_engine_name_get(e_comp->ee), "drm")) { Ecore_Drm2_Device *dev; dev = ecore_evas_data_get(e_comp->ee, "device"); if (dev) { ecore_drm2_device_pointer_left_handed_set(dev, (Eina_Bool)!e_config->mouse_hand); ecore_drm2_device_pointer_accel_speed_set(dev, e_config->mouse_accel_numerator); ecore_drm2_device_touch_tap_to_click_enabled_set(dev, e_config->touch_tap_to_click); } } #endif return 1; }
static Evas_Object* _ewk_view_single_smart_backing_store_add(Ewk_View_Smart_Data* smartData) { Evas_Object* bs = evas_object_image_add(smartData->base.evas); EINA_SAFETY_ON_NULL_RETURN_VAL(bs, 0); const Ecore_Evas* ecoreEvas = ecore_evas_ecore_evas_get(smartData->base.evas); const char* engine = ecore_evas_engine_name_get(ecoreEvas); if (!strncmp(engine, "opengl_x11", strlen("opengl_x11"))) evas_object_image_content_hint_set(bs, EVAS_IMAGE_CONTENT_HINT_DYNAMIC); evas_object_image_alpha_set(bs, false); evas_object_image_smooth_scale_set(bs, smartData->zoom_weak_smooth_scale); return bs; }
int main(void) { Ecore_Evas *ee; Evas *canvas; Evas_Object *bg; Eina_List *engines, *l; char *data; if (ecore_evas_init() <= 0) return 1; engines = ecore_evas_engines_get(); printf("Available engines:\n"); EINA_LIST_FOREACH(engines, l, data) printf("%s\n", data); ecore_evas_engines_free(engines); ee = ecore_evas_new(NULL, 0, 0, 200, 200, NULL); ecore_evas_title_set(ee, "Ecore Evas basics Example"); ecore_evas_show(ee); data = malloc(sizeof(char) * 6); sprintf(data, "%s", "hello"); ecore_evas_data_set(ee, "key", data); ecore_evas_callback_delete_request_set(ee, _on_delete); printf("Using %s engine!\n", ecore_evas_engine_name_get(ee)); canvas = ecore_evas_get(ee); if (ecore_evas_ecore_evas_get(canvas) == ee) printf("Everything is sane!\n"); bg = evas_object_rectangle_add(canvas); evas_object_color_set(bg, 0, 0, 255, 255); evas_object_resize(bg, 200, 200); evas_object_show(bg); ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); ecore_main_fd_handler_add(STDIN_FILENO, ECORE_FD_READ, _stdin_cb, NULL, NULL, NULL); ecore_main_loop_begin(); ecore_evas_free(ee); ecore_evas_shutdown(); return 0; }
static Eina_Bool _e_elm_win_trap_hide(void *data, Evas_Object *o) { Elm_Win_Trap_Ctx *ctx = data; EINA_SAFETY_ON_NULL_RETURN_VAL(ctx, EINA_TRUE); if (!ctx->visible) return EINA_FALSE; if (strncmp(ecore_evas_engine_name_get(e_win_ee_get(o)), "wayland", 7)) E_FREE_FUNC(ctx->pointer, e_object_del); #ifdef HAVE_WAYLAND else if (ctx->client) e_pixmap_alias(NULL, E_PIXMAP_TYPE_WL, ecore_wl2_window_surface_id_get(elm_win_wl_window_get(o))); #endif if (!ctx->client) return EINA_TRUE; ctx->visible = 0; evas_object_hide(ctx->client->frame); return EINA_FALSE; }
static Eina_Bool _e_elm_win_trap_show(void *data, Evas_Object *o) { Elm_Win_Trap_Ctx *ctx = data; Evas *e = evas_object_evas_get(o); Ecore_Evas *ee = ecore_evas_ecore_evas_get(e); Eina_Bool borderless; EINA_SAFETY_ON_NULL_RETURN_VAL(ctx, EINA_TRUE); borderless = elm_win_borderless_get(o); if (!ctx->client) { E_Client *ec; Ecore_Window win; #ifdef HAVE_WAYLAND int64_t wl_win_id = -1; #endif E_Pixmap_Type type = E_PIXMAP_TYPE_X; win = elm_win_window_id_get(o); #ifdef HAVE_WAYLAND if (!strncmp(ecore_evas_engine_name_get(ee), "wayland", 7)) { Ecore_Wl2_Window *ewin = elm_win_wl_window_get(o); type = E_PIXMAP_TYPE_WL; ecore_evas_object_cursor_set(ee, NULL, 0, 0, 0); ctx->pointer = e_comp->pointer; elm_win_borderless_set(o, 1); wl_win_id = ecore_wl2_window_surface_id_get(ewin); } else #endif { type = E_PIXMAP_TYPE_X; ctx->pointer = e_pointer_window_new(win, EINA_TRUE); } if (type == E_PIXMAP_TYPE_WL) ec = e_pixmap_find_client(type, (int64_t)win); else ec = e_pixmap_find_client(type, win); if (ec) ctx->client = ec; else { E_Pixmap *cp; const char *title, *name, *clas; ecore_evas_name_class_get(ee, &name, &clas); if (!name) name = "E"; if (!clas) clas = "_e_internal_window"; ecore_evas_name_class_set(ee, name, clas); title = elm_win_title_get(o); if ((!title) || (!title[0])) title = "E"; ecore_evas_title_set(ee, title); if (type == E_PIXMAP_TYPE_WL) cp = e_pixmap_new(type, (int64_t)win); else cp = e_pixmap_new(type, win); EINA_SAFETY_ON_NULL_RETURN_VAL(cp, EINA_TRUE); #ifdef HAVE_WAYLAND if (wl_win_id >= 0) e_pixmap_alias(cp, type, wl_win_id); #endif current_win = ctx; ctx->client = e_client_new(cp, 0, 1); current_win = NULL; EINA_SAFETY_ON_NULL_RETURN_VAL(ctx->client, EINA_TRUE); eina_stringshare_replace(&ctx->client->icccm.name, name); eina_stringshare_replace(&ctx->client->icccm.class, clas); eina_stringshare_replace(&ctx->client->icccm.title, title); } ctx->client->placed = ctx->placed | ctx->centered; ctx->client->internal_no_remember = ctx->internal_no_remember; ctx->client->internal_no_reopen = ctx->internal_no_reopen; ctx->client->internal_elm_win = o; elm_win_autodel_set(o, 1); evas_object_data_set(o, "E_Client", ctx->client); ctx->client->dialog = elm_win_type_get(o) == ELM_WIN_DIALOG_BASIC; ctx->client->tooltip = elm_win_type_get(o) == ELM_WIN_TOOLTIP; evas_object_size_hint_min_get(o, &ctx->client->icccm.min_w, &ctx->client->icccm.min_h); ctx->client->icccm.min_w = MAX(ctx->client->icccm.min_w, 0); ctx->client->icccm.min_h = MAX(ctx->client->icccm.min_h, 0); evas_object_size_hint_max_get(o, &ctx->client->icccm.max_w, &ctx->client->icccm.max_h); ctx->client->icccm.max_w = MAX(ctx->client->icccm.max_w, 0); ctx->client->icccm.max_h = MAX(ctx->client->icccm.max_h, 0); }