diff options
author | Mike Blumenkrantz <m.blumenkran@samsung.com> | 2013-07-12 16:44:18 +0100 |
---|---|---|
committer | Mike Blumenkrantz <m.blumenkran@samsung.com> | 2013-07-12 16:44:18 +0100 |
commit | 70e60f98065165bcdb33e35ef297cb607150a3d4 (patch) | |
tree | a0fe97b4f7d3c038fe6e340ceaf2f3968dd073f4 | |
parent | 2b1be376f102dc0f10429c51fc32c5fe48f186c1 (diff) | |
download | enlightenment-70e60f98065165bcdb33e35ef297cb607150a3d4.tar.gz |
semi-working clients
-rw-r--r-- | src/bin/e_client.c | 13 | ||||
-rw-r--r-- | src/bin/e_client.h | 3 | ||||
-rw-r--r-- | src/bin/e_comp.c | 13 | ||||
-rw-r--r-- | src/bin/e_comp_canvas.c | 2 | ||||
-rw-r--r-- | src/bin/e_comp_object.c | 190 | ||||
-rw-r--r-- | src/bin/e_comp_x.c | 101 | ||||
-rw-r--r-- | src/bin/e_moveresize.c | 9 | ||||
-rw-r--r-- | src/bin/e_pixmap.c | 8 | ||||
-rw-r--r-- | src/bin/e_theme.c | 8 | ||||
-rw-r--r-- | src/bin/e_theme.h | 4 | ||||
-rw-r--r-- | src/modules/conf_comp/e_mod_main.c | 4 | ||||
-rw-r--r-- | src/modules/conf_theme/e_int_config_scale.c | 2 | ||||
-rw-r--r-- | src/modules/conf_theme/e_int_config_theme.c | 6 | ||||
-rw-r--r-- | src/modules/wizard/page_050.c | 2 |
14 files changed, 205 insertions, 160 deletions
diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 8c852977f6..6e9c110979 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -1692,6 +1692,7 @@ _e_client_eval(E_Client *ec) ec->placed = 1; } } + if (!ec->placed) { Eina_List *skiplist = NULL; @@ -1744,17 +1745,19 @@ _e_client_eval(E_Client *ec) ec->changes.pos = 1; ec->placed = 1; if (!pnd->with_frame) - e_comp_object_frame_xy_unadjust(ec->frame, pnd->x, pnd->y, &ec->x, &ec->y); + e_comp_object_frame_xy_adjust(ec->frame, pnd->x, pnd->y, &ec->x, &ec->y); } if ((!ec->lock_client_size) && (pnd->resize)) { - e_comp_object_frame_wh_adjust(ec->frame, pnd->w, pnd->h, &ec->w, &ec->h); + ec->w = pnd->w; + ec->h = pnd->h; + if (!pnd->with_frame) + e_comp_object_frame_wh_adjust(ec->frame, pnd->w, pnd->h, &ec->w, &ec->h); ec->changes.size = 1; } free(pnd); } - /* Recreate state */ e_hints_window_init(ec); if ((ec->e.state.centered) && @@ -2309,6 +2312,8 @@ e_client_new(E_Comp *c, E_Pixmap *cp, int first_map, int internal) ec->pixmap = cp; e_pixmap_client_set(cp, ec); ec->zone = e_zone_current_get(c); + ec->desk = e_desk_current_get(ec->zone); + ec->resize_mode = E_POINTER_RESIZE_NONE; /* printf("##- ON MAP CLIENT 0x%x SIZE %ix%i %i:%i\n", * ec->win, ec->w, ec->h, att->x, att->y); */ @@ -3255,7 +3260,7 @@ e_client_move_resize(E_Client *ec, int x, int y, int w, int h) if (ec->fullscreen) return; - _e_client_move_resize_internal(ec, x, y, w, h, 0, 1, 1); + _e_client_move_resize_internal(ec, x, y, w, h, 1, 1, 1); } diff --git a/src/bin/e_client.h b/src/bin/e_client.h index 6f66241522..9a577c9eea 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -280,7 +280,6 @@ struct E_Client unsigned char shaped : 1; unsigned char argb : 1; - Ecore_X_Damage damage; /* ICCCM */ struct { @@ -691,7 +690,7 @@ struct E_Client }; /* macro for finding misuse of changed flag */ -#if 1 +#if 0 # define EC_CHANGED(EC) \ do { \ if (e_object_is_del(E_OBJECT(EC))) \ diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 30a471e1c8..ea5270b4ab 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -110,7 +110,10 @@ _e_comp_client_update(E_Client *ec) e_comp_object_render_update_del(ec->frame); //clear update } else if (!e_pixmap_size_get(ec->pixmap, NULL, NULL)) - e_comp_object_redirected_set(ec->frame, 0); + { + e_comp_object_redirected_set(ec->frame, 0); + e_comp_object_render_update_add(ec->frame); + } } if (!e_pixmap_size_get(ec->pixmap, &pw, &ph)) return; @@ -530,7 +533,7 @@ _e_comp_shapes_update_comp_client_shape_comp_helper(E_Client *ec, Eina_Tiler *tb return; } #ifdef SHAPE_DEBUG - INF("COMP EC: %u", ec); + INF("COMP EC: %p", ec); #endif if (ec->shape_input_rects || ec->shape_rects) @@ -678,7 +681,7 @@ _e_comp_shapes_update_job(E_Comp *c) Eina_List *l; _e_comp_shape_debug_rect(c, &exr[i - 1], &color); - INF("%d,%d @ %dx%d", exr[i - 1].x, exr[i - 1].y, exr[i - 1].width, exr[i - 1].height); + INF("%d,%d @ %dx%d", exr[i - 1].x, exr[i - 1].y, exr[i - 1].w, exr[i - 1].h); EINA_LIST_FOREACH(rl, l, r) { if (E_INTERSECTS(r->x, r->y, r->w, r->h, tr->x, tr->y, tr->w, tr->h)) @@ -1018,7 +1021,7 @@ _e_comp_config_style_thumb_cb(E_Configure_Option_Info *oi, Evas *evas) evas_object_show(oly); oo = edje_object_add(e_livethumb_evas_get(ob)); - snprintf(buf, sizeof(buf), "e/comp/border/%s", oi->name); + snprintf(buf, sizeof(buf), "e/comp/frame/%s", oi->name); e_theme_edje_object_set(oo, "base/theme/borders", buf); e_layout_pack(oly, oo); e_layout_child_move(oo, 39, 39); @@ -1061,7 +1064,7 @@ _e_comp_config_style_info_cb(E_Configure_Option *co) Eina_Stringshare *style; E_Configure_Option_Info *oi; - styles = e_theme_comp_border_list(); + styles = e_theme_comp_frame_list(); EINA_LIST_FREE(styles, style) { oi = e_configure_option_info_new(co, style, style); diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c index 3e7b2bccb3..b665d6efdb 100644 --- a/src/bin/e_comp_canvas.c +++ b/src/bin/e_comp_canvas.c @@ -79,7 +79,7 @@ e_comp_canvas_init(E_Comp *c) c->ee_win = ecore_evas_window_get(c->ee); e_drop_xdnd_register_set(c->ee_win, 1); - c->pointer = e_pointer_window_new(c->ee_win, 0); + c->pointer = e_pointer_window_new(c->ee_win, 1); for (layer = 0; layer <= e_comp_canvas_layer_map(E_LAYER_MAX); layer++) { diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index d516f04e23..7e2090f383 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -476,14 +476,14 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw) snprintf(buf, sizeof(buf), "e/comp/frame/%s/fast", m->shadow_style); reshadow = ok = !e_util_strcmp(reshadow_group, buf); if (!ok) - ok = e_theme_edje_object_set(cw->shobj, "base/theme/frames", buf); + ok = e_theme_edje_object_set(cw->shobj, "base/theme/comp", buf); } if (!ok) { snprintf(buf, sizeof(buf), "e/comp/frame/%s", m->shadow_style); reshadow = ok = !e_util_strcmp(reshadow_group, buf); if (!ok) - ok = e_theme_edje_object_set(cw->shobj, "base/theme/frames", buf); + ok = e_theme_edje_object_set(cw->shobj, "base/theme/comp", buf); } if (ok) break; } @@ -495,7 +495,7 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw) { reshadow = ok = !e_util_strcmp(reshadow_group, "e/comp/frame/none"); if (!ok) - ok = e_theme_edje_object_set(cw->shobj, "base/theme/frames", "e/comp/frame/none"); + ok = e_theme_edje_object_set(cw->shobj, "base/theme/comp", "e/comp/frame/none"); } if (ok) break; if (conf->shadow_style) @@ -505,14 +505,14 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw) snprintf(buf, sizeof(buf), "e/comp/frame/%s/fast", conf->shadow_style); reshadow = ok = !e_util_strcmp(reshadow_group, buf); if (!ok) - ok = e_theme_edje_object_set(cw->shobj, "base/theme/frames", buf); + ok = e_theme_edje_object_set(cw->shobj, "base/theme/comp", buf); } if (!ok) { snprintf(buf, sizeof(buf), "e/comp/frame/%s", conf->shadow_style); reshadow = ok = !e_util_strcmp(reshadow_group, buf); if (!ok) - ok = e_theme_edje_object_set(cw->shobj, "base/theme/frames", buf); + ok = e_theme_edje_object_set(cw->shobj, "base/theme/comp", buf); } } if (!ok) @@ -521,13 +521,13 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw) { reshadow = ok = !e_util_strcmp(reshadow_group, "e/comp/frame/default/fast"); if (!ok) - ok = e_theme_edje_object_set(cw->shobj, "base/theme/frames", "e/comp/frame/default/fast"); + ok = e_theme_edje_object_set(cw->shobj, "base/theme/comp", "e/comp/frame/default/fast"); } if (!ok) { reshadow = ok = !e_util_strcmp(reshadow_group, "e/comp/frame/default"); if (!ok) - ok = e_theme_edje_object_set(cw->shobj, "base/theme/frames", "e/comp/frame/default"); + ok = e_theme_edje_object_set(cw->shobj, "base/theme/comp", "e/comp/frame/default"); } } break; @@ -632,10 +632,11 @@ _e_comp_object_setup(E_Comp_Object *cw) cw->clip = evas_object_rectangle_add(cw->comp->evas); evas_object_smart_member_add(cw->clip, cw->smart_obj); cw->effect_obj = edje_object_add(cw->comp->evas); + evas_object_clip_set(cw->effect_obj, cw->clip); evas_object_smart_member_add(cw->effect_obj, cw->smart_obj); e_theme_edje_object_set(cw->effect_obj, "base/theme/comp", "e/comp/effects/none"); cw->shobj = edje_object_add(cw->comp->evas); - evas_object_clip_set(cw->shobj, cw->clip); + edje_object_part_swallow(cw->effect_obj, "e.swallow.content", cw->shobj); evas_object_smart_member_add(cw->shobj, cw->smart_obj); edje_object_signal_callback_add(cw->shobj, "e,action,*,done", "e", _e_comp_object_done_defer, cw); @@ -643,11 +644,14 @@ _e_comp_object_setup(E_Comp_Object *cw) { if (cw->shobj) evas_object_name_set(cw->shobj, "cw->shobj::WINDOW"); evas_object_name_set(cw->effect_obj, "cw->effect_obj::WINDOW"); + evas_object_name_set(cw->clip, "cw->clip::WINDOW"); } else if (!cw->ec->input_only) { + cw->real_hid = 1; evas_object_name_set(cw->shobj, "cw->shobj::CLIENT"); evas_object_name_set(cw->effect_obj, "cw->effect_obj::CLIENT"); + evas_object_name_set(cw->clip, "cw->clip::CLIENT"); } if (!cw->ec->input_only) { @@ -667,24 +671,20 @@ _e_comp_object_cb_show_ready_timeout(void *data) { E_Comp_Object *cw = data; cw->show_ready = 1; - if (cw->visible) - { - e_comp_object_render_update_add(cw->smart_obj); - e_comp_render_queue(cw->comp); - } cw->ready_timeout = NULL; + if (cw->ec->visible) + evas_object_show(cw->smart_obj); return ECORE_CALLBACK_CANCEL; } static void _e_comp_object_ready_timeout_setup(E_Comp_Object *cw) { - E_FREE_FUNC(cw->ready_timeout, ecore_timer_del); - if (cw->show_ready) return; + if (cw->show_ready || cw->ready_timeout) return; // FIXME: make show_ready option if (!e_comp_config_get()->first_draw_delay) cw->show_ready = 1; - else + else if (!cw->ready_timeout) cw->ready_timeout = ecore_timer_add(e_comp_config_get()->first_draw_delay, _e_comp_object_cb_show_ready_timeout, cw); } @@ -694,14 +694,13 @@ static void _e_comp_intercept_move(void *data, Evas_Object *obj, int x, int y) { E_Comp_Object *cw = data; - if (cw->ec) + + if ((cw->x == x) && (cw->y == y)) return; + cw->ec->x = x, cw->ec->y = y; + if (cw->client_inset.calc) { - cw->ec->x = x, cw->ec->y = y; - if (cw->client_inset.calc) - { - cw->ec->client.x = x + cw->client_inset.l; - cw->ec->client.y = y + cw->client_inset.t; - } + cw->ec->client.x = x + cw->client_inset.l; + cw->ec->client.y = y + cw->client_inset.t; } cw->x = x, cw->y = y; evas_object_move(obj, x, y); @@ -711,16 +710,16 @@ static void _e_comp_intercept_resize(void *data, Evas_Object *obj, int w, int h) { E_Comp_Object *cw = data; - if (cw->ec) + + if ((cw->w == w) && (cw->h == h)) return; + cw->ec->w = w, cw->ec->h = h; + if (cw->client_inset.calc && (!cw->ec->shading) && (!cw->ec->shaded)) { - cw->ec->w = w, cw->ec->h = h; - if (cw->client_inset.calc) - { - cw->ec->client.w = w - cw->client_inset.l - cw->client_inset.r; - cw->ec->client.h = h - cw->client_inset.t - cw->client_inset.b; - } + cw->ec->client.w = w - cw->client_inset.l - cw->client_inset.r; + cw->ec->client.h = h - cw->client_inset.t - cw->client_inset.b; } cw->w = w, cw->h = h; + e_pixmap_dirty(cw->ec->pixmap); evas_object_resize(obj, w, h); } @@ -837,7 +836,6 @@ _e_comp_intercept_hide(void *data, Evas_Object *obj) E_Comp_Object *cw = data; if ((!cw->visible) && (!cw->defer_hide)) return; - cw->visible = 0; if (cw->ec->iconic) { e_comp_object_signal_emit(cw->smart_obj, "e,action,iconify", "e"); @@ -871,7 +869,6 @@ _e_comp_intercept_show_helper(E_Comp_Object *cw) { int w = 0, h = 0, pw, ph; - cw->visible = 1; if (cw->ec->input_only) { cw->real_hid = 0; @@ -911,7 +908,8 @@ _e_comp_intercept_show(void *data, Evas_Object *obj EINA_UNUSED) E_Comp_Object *cw = data; E_Client *ec = cw->ec; - if (ec->ignored) return; + if (cw->visible || ec->ignored || cw->ready_timeout) return; + ec->visible = 1; if (cw->effect_obj) { if (ec) @@ -935,6 +933,7 @@ _e_comp_intercept_show(void *data, Evas_Object *obj EINA_UNUSED) { _e_comp_object_setup(cw); cw->obj = evas_object_image_filled_add(cw->comp->evas); + e_util_size_debug_set(cw->obj, 1); evas_object_image_smooth_scale_set(cw->obj, e_comp_config_get()->smooth_windows); evas_object_name_set(cw->obj, "cw->obj"); evas_object_image_colorspace_set(cw->obj, EVAS_COLORSPACE_ARGB8888); @@ -945,11 +944,14 @@ _e_comp_intercept_show(void *data, Evas_Object *obj EINA_UNUSED) #else cw->zoomap_disabled = 1; #endif - _e_comp_object_shadow_setup(cw); - cw->redirected = ec->override; + e_comp_object_frame_theme_set(cw->smart_obj, E_COMP_OBJECT_FRAME_RESHADOW); - cw->updates = eina_tiler_new(32, 32); - eina_tiler_tile_size_set(cw->updates, 32, 32); + cw->redirected = 1; + /* interceptors are broken because while intercepting an event, all interceptors are blocked + * this causes needed callbacks not to be called, so we call them here. + */ + _e_comp_intercept_move(cw, cw->smart_obj, cw->ec->x, cw->ec->y); + _e_comp_intercept_resize(cw, cw->smart_obj, cw->ec->w, cw->ec->h); evas_object_color_set(cw->clip, ec->netwm.opacity, ec->netwm.opacity, ec->netwm.opacity, ec->netwm.opacity); } @@ -992,20 +994,20 @@ static void _e_comp_smart_cb_frame_recalc(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) { E_Comp_Object *cw = data; - int w, h; + int w, h, pw, ph; if (!cw->ec) return; //NYI - w = cw->w, h = cw->h; - e_comp_object_frame_wh_unadjust(obj, w, h, &cw->w, &cw->h); + pw = w = cw->ec->w, ph = h = cw->ec->h; + e_comp_object_frame_wh_unadjust(obj, w, h, &pw, &ph); _e_comp_object_frame_recalc(cw); - e_comp_object_frame_wh_adjust(obj, cw->w, cw->h, &cw->w, &cw->h); + e_comp_object_frame_wh_adjust(obj, pw, ph, &w, &h); evas_object_smart_callback_call(cw->smart_obj, "frame_recalc_done", &cw->client_inset); if (cw->ec->changes.shading || cw->ec->changes.shaded) return; - if ((w != cw->w) || (h != cw->h)) - evas_object_resize(cw->smart_obj, w, h); + if ((w != pw) || (h != ph)) + e_client_resize(cw->ec, w, h); } static Eina_Bool @@ -1092,6 +1094,7 @@ _e_comp_object_shade_animator(void *data) else if (cw->shade.val > .999) cw->shade.val = 1.0; + x = cw->x, y = cw->y, w = cw->w, h = cw->h; if (cw->shade.dir == E_DIRECTION_UP) h = cw->client_inset.t + cw->ec->client.h * cw->shade.val; else if (cw->shade.dir == E_DIRECTION_DOWN) @@ -1117,13 +1120,13 @@ _e_comp_object_shade_animator(void *data) { cw->shade.anim = NULL; + evas_object_smart_callback_call(cw->smart_obj, "shade_done", NULL); if (cw->ec->shaded) e_comp_object_signal_emit(cw->smart_obj, "e,state,shaded", "e"); else e_comp_object_signal_emit(cw->smart_obj, "e,state,unshaded", "e"); edje_object_message_signal_process(cw->frame_object); _e_comp_smart_cb_frame_recalc(cw, cw->smart_obj, NULL); - evas_object_smart_callback_call(cw->smart_obj, "shade_done", NULL); } return cw->ec->shading; } @@ -1274,7 +1277,7 @@ _e_comp_smart_cb_unsticky(void *data EINA_UNUSED, Evas_Object *obj, void *event_ static void _e_comp_smart_cb_focus_in(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) { - e_comp_object_signal_emit(obj, ",state,focused", "e"); + e_comp_object_signal_emit(obj, "e,state,focused", "e"); } static void @@ -1302,6 +1305,7 @@ _e_comp_smart_add(Evas_Object *obj) cw = E_NEW(E_Comp_Object, 1); cw->smart_obj = obj; + cw->x = cw->y = cw->w = cw->h = -1; evas_object_smart_data_set(obj, cw); cw->opacity = 255.0; evas_object_data_set(obj, "comp_obj", cw); @@ -1362,6 +1366,7 @@ static void _e_comp_smart_hide(Evas_Object *obj) { INTERNAL_ENTRY; + cw->visible = 0; evas_object_hide(cw->clip); evas_object_hide(cw->effect_obj); e_comp_shape_queue(cw->comp); @@ -1375,6 +1380,7 @@ _e_comp_smart_show(Evas_Object *obj) INTERNAL_ENTRY; cw->defer_hide = 0; + cw->visible = 1; EINA_LIST_FOREACH(cw->ec->e.state.video_child, l, tmp) evas_object_show(tmp->frame); @@ -1438,7 +1444,7 @@ _e_comp_smart_resize(Evas_Object *obj, int w, int h) evas_object_resize(cw->clip, w, h); evas_object_resize(cw->effect_obj, w, h); - if (cw->zoomobj) e_zoomap_child_resize(cw->zoomobj, w, h); + if (cw->zoomobj) e_zoomap_child_resize(cw->zoomobj, cw->ec->client.w, cw->ec->client.h); e_comp_shape_queue(cw->comp); } @@ -1614,12 +1620,12 @@ e_comp_object_util_add(Evas_Object *obj, E_Comp_Object_Type type) if (fast) { snprintf(buf, sizeof(buf), "e/comp/frame/%s/fast", m->shadow_style); - ok = e_theme_edje_object_set(o, "base/theme/frames", buf); + ok = e_theme_edje_object_set(o, "base/theme/comp", buf); } if (!ok) { snprintf(buf, sizeof(buf), "e/comp/frame/%s", m->shadow_style); - ok = e_theme_edje_object_set(o, "base/theme/frames", buf); + ok = e_theme_edje_object_set(o, "base/theme/comp", buf); } if (ok) { @@ -1631,26 +1637,26 @@ e_comp_object_util_add(Evas_Object *obj, E_Comp_Object_Type type) while (!ok) { if (skip) - ok = e_theme_edje_object_set(o, "base/theme/frames", "e/comp/frame/none"); + ok = e_theme_edje_object_set(o, "base/theme/comp", "e/comp/frame/none"); if (ok) break; if (conf->shadow_style) { if (fast) { snprintf(buf, sizeof(buf), "e/comp/frame/%s/fast", conf->shadow_style); - ok = e_theme_edje_object_set(o, "base/theme/frames", buf); + ok = e_theme_edje_object_set(o, "base/theme/comp", buf); } if (!ok) { snprintf(buf, sizeof(buf), "e/comp/frame/%s", conf->shadow_style); - ok = e_theme_edje_object_set(o, "base/theme/frames", buf); + ok = e_theme_edje_object_set(o, "base/theme/comp", buf); } if (ok) break; } if (fast) - ok = e_theme_edje_object_set(o, "base/theme/frames", "e/comp/frame/default/fast"); + ok = e_theme_edje_object_set(o, "base/theme/comp", "e/comp/frame/default/fast"); if (!ok) - ok = e_theme_edje_object_set(o, "base/theme/frames", "e/comp/frame/default"); + ok = e_theme_edje_object_set(o, "base/theme/comp", "e/comp/frame/default"); break; } if (shadow) @@ -1709,9 +1715,13 @@ e_comp_object_client_add(E_Client *ec) cw->ec = ec; ec->frame = o; - evas_object_move(cw->smart_obj, ec->x, ec->y); - evas_object_resize(cw->smart_obj, ec->w, ec->h); - e_util_size_debug_set(o, 1); + if ((!ec->input_only) && (!ec->ignored)) + { + cw->updates = eina_tiler_new(32, 32); + eina_tiler_tile_size_set(cw->updates, 32, 32); + e_util_size_debug_set(o, 1); + } + return o; } @@ -1725,8 +1735,8 @@ e_comp_object_frame_xy_adjust(Evas_Object *obj, int x, int y, int *ax, int *ay) if (ay) *ay = y; return; } - if (ax) *ax = x + cw->client_inset.l; - if (ay) *ay = y + cw->client_inset.t; + if (ax) *ax = x - cw->client_inset.l; + if (ay) *ay = y - cw->client_inset.t; } EAPI void @@ -1739,8 +1749,8 @@ e_comp_object_frame_xy_unadjust(Evas_Object *obj, int x, int y, int *ax, int *ay if (ay) *ay = y; return; } - if (ax) *ax = x - cw->client_inset.l; - if (ay) *ay = y - cw->client_inset.t; + if (ax) *ax = x + cw->client_inset.l; + if (ay) *ay = y + cw->client_inset.t; } EAPI void @@ -1917,7 +1927,8 @@ e_comp_object_frame_theme_set(Evas_Object *obj, const char *name) API_ENTRY EINA_FALSE; - if (!e_util_strcmp(cw->frame_theme, name)) return EINA_TRUE; + if (!e_util_strcmp(cw->frame_theme, name)) + return edje_object_part_swallow(cw->shobj, "e.swallow.content", cw->frame_object); if (!e_util_strcmp(name, "COMP_RESHADOW")) return _e_comp_object_shadow_setup(cw); pbg = cw->frame_object; @@ -1964,6 +1975,8 @@ e_comp_object_frame_theme_set(Evas_Object *obj, const char *name) if (ok) { cw->frame_object = o; + eina_stringshare_del(cw->frame_theme); + cw->frame_theme = theme; evas_object_smart_member_add(o, cw->smart_obj); evas_object_name_set(o, "cw->frame_object"); @@ -1990,7 +2003,8 @@ e_comp_object_frame_theme_set(Evas_Object *obj, const char *name) E_FREE_FUNC(cw->frame_icon, evas_object_del); } reshadow: - _e_comp_object_shadow_setup(cw); + if (cw->shobj) + _e_comp_object_shadow_setup(cw); { // previously calculated Eina_Bool calc = cw->client_inset.calc; @@ -2000,11 +2014,9 @@ reshadow: _e_comp_smart_cb_frame_recalc(cw, cw->smart_obj, NULL); inset = !!(cw->client_inset.l + cw->client_inset.r + cw->client_inset.t + cw->client_inset.b); if (calc && (inset != pinset) && (pbg || (!cw->frame_object))) - e_client_move_without_frame(cw->ec, cw->x, cw->y); + e_client_move_without_frame(cw->ec, cw->ec->x, cw->ec->y); } - e_client_resize_without_frame(cw->ec, cw->w, cw->h); - if (cw->ec && cw->ec->maximized) { cw->ec->need_maximize = 1; @@ -2193,6 +2205,8 @@ e_comp_object_redirected_set(Evas_Object *obj, Eina_Bool set) API_ENTRY; if (!cw->ec) return; + set = !!set; + if (cw->redirected == set) return; if (set) _e_comp_object_shadow_setup(cw); else @@ -2269,6 +2283,7 @@ e_comp_object_render(Evas_Object *obj) int stride, pw, ph; Eina_Bool reset = EINA_FALSE; unsigned int *pix, *srcpix; + Eina_Bool ret; API_ENTRY EINA_FALSE; @@ -2278,14 +2293,14 @@ e_comp_object_render(Evas_Object *obj) { if (!cw->updates_exist) { - DBG("RENDER [%p]: NO RECTS!", cw->ec); + INF("RENDER [%p]: NO RECTS!", cw->ec); return EINA_FALSE; } it = eina_tiler_iterator_new(cw->updates); EINA_ITERATOR_FOREACH(it, r) { - DBG("UPDATE [%p]: %d %d %dx%d", cw->ec, r->x, r->y, r->w, r->h); + INF("UPDATE [%p]: %d %d %dx%d", cw->ec, r->x, r->y, r->w, r->h); evas_object_image_data_update_add(cw->obj, r->x, r->y, r->w, r->h); EINA_LIST_FOREACH(cw->obj_mirror, l, o) evas_object_image_data_update_add(o, r->x, r->y, r->w, r->h); @@ -2318,7 +2333,7 @@ e_comp_object_render(Evas_Object *obj) } else if (!cw->updates_exist) { - DBG("RENDER [%p]: NO RECTS!", cw->ec); + INF("RENDER [%p]: NO RECTS!", cw->ec); return EINA_FALSE; } @@ -2327,31 +2342,28 @@ e_comp_object_render(Evas_Object *obj) { pix = e_pixmap_image_data_get(cw->ec->pixmap); evas_object_image_size_set(cw->obj, pw, ph); + evas_object_image_data_set(cw->obj, pix); EINA_ITERATOR_FOREACH(it, r) { - if (!e_pixmap_image_draw(cw->ec->pixmap, r)) + ret = e_pixmap_image_draw(cw->ec->pixmap, r); + if (!ret) { WRN("UPDATE [%p]: %i %i %ix%i FAIL!!!!!!!!!!!!!!!!!", cw->ec, r->x, r->y, r->w, r->h); - evas_object_image_data_set(cw->obj, pix); e_comp_object_render_update_add(obj); - eina_tiler_clear(cw->updates); - eina_iterator_free(it); - cw->updates_exist = 0; - return EINA_FALSE; + break; } - DBG("UPDATE [%p] %i %i %ix%i -- pix = %p", cw->ec, r->x, r->y, r->w, r->h, pix); - evas_object_image_data_set(cw->obj, pix); + INF("UPDATE [%p] %i %i %ix%i", cw->ec, r->x, r->y, r->w, r->h); evas_object_image_data_update_add(cw->obj, r->x, r->y, r->w, r->h); EINA_LIST_FOREACH(cw->obj_mirror, l, o) { - evas_object_image_data_set(o, pix); evas_object_image_data_update_add(o, r->x, r->y, r->w, r->h); + evas_object_image_data_set(o, pix); } } eina_tiler_clear(cw->updates); eina_iterator_free(it); cw->updates_exist = 0; - return EINA_TRUE; + return ret; } evas_object_image_size_set(cw->obj, pw, ph); @@ -2365,24 +2377,18 @@ e_comp_object_render(Evas_Object *obj) } EINA_ITERATOR_FOREACH(it, r) { - if (!e_pixmap_image_draw(cw->ec->pixmap, r)) + ret = e_pixmap_image_draw(cw->ec->pixmap, r); + if (!ret) { WRN("UPDATE [%p]: %i %i %ix%i FAIL!!!!!!!!!!!!!!!!!", cw->ec, r->x, r->y, r->w, r->h); e_comp_object_render_update_add(obj); - evas_object_image_data_set(cw->obj, pix); - eina_tiler_clear(cw->updates); - eina_iterator_free(it); - cw->updates_exist = 0; - return EINA_FALSE; - } - else - { - e_pixmap_image_data_argb_convert(cw->ec->pixmap, pix, srcpix, r, stride); - DBG("UPDATE [%p]: %d %d %dx%d -- pix = %p", cw->ec, r->x, r->y, r->w, r->h, pix); - evas_object_image_data_update_add(cw->obj, r->x, r->y, r->w, r->h); - EINA_LIST_FOREACH(cw->obj_mirror, l, o) - evas_object_image_data_update_add(o, r->x, r->y, r->w, r->h); + break; } + e_pixmap_image_data_argb_convert(cw->ec->pixmap, pix, srcpix, r, stride); + INF("UPDATE [%p]: %d %d %dx%d -- pix = %p", cw->ec, r->x, r->y, r->w, r->h, pix); + evas_object_image_data_update_add(cw->obj, r->x, r->y, r->w, r->h); + EINA_LIST_FOREACH(cw->obj_mirror, l, o) + evas_object_image_data_update_add(o, r->x, r->y, r->w, r->h); } evas_object_image_data_set(cw->obj, pix); diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index fd545aa577..196508c9aa 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -46,6 +46,17 @@ static Eina_Hash *frame_extents = NULL; static Ecore_Idle_Enterer *_e_comp_x_post_client_idler = NULL; static Eina_List *post_clients = NULL; +static void +_e_comp_x_print_win(Ecore_X_Window win) +{ + int x, y, w, h; + Eina_Bool vis; + + ecore_x_window_geometry_get(win, &x, &y, &w, &h); + vis = ecore_x_window_visible_get(win); + fprintf(stderr, "%s 0x%x: %d,%d @ %dx%d\n", vis ? "VIS" : "HID", win, x, y, w, h); +} + static E_Client * _e_comp_x_client_new(E_Comp *c, Ecore_X_Window win) { @@ -212,6 +223,9 @@ _e_comp_x_post_client_idler_cb(void *d EINA_UNUSED) ec->client.y, ec->client.w, ec->client.h); + ecore_x_window_resize(e_client_util_win_get(ec), + ec->client.w, + ec->client.h); } else if (ec->post_move) { @@ -221,6 +235,8 @@ _e_comp_x_post_client_idler_cb(void *d EINA_UNUSED) { ecore_x_window_resize(e_client_util_pwin_get(ec), ec->client.w, ec->client.h); + ecore_x_window_resize(e_client_util_win_get(ec), + ec->client.w, ec->client.h); } if ((!ec->shading) && (!ec->shaded)) { @@ -425,6 +441,8 @@ _e_comp_x_evas_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_ { E_Client *ec = data; + if (ec->shading || ec->shaded) return; + ecore_x_window_shadow_tree_flush(); if (ec->e.state.video) @@ -532,8 +550,6 @@ NOT CURRENTLY ACTIVATABLE } #endif - ecore_x_window_show(e_client_util_pwin_get(ec)); - EINA_LIST_FOREACH(ec->e.state.video_child, l, tmp) { evas_object_show(tmp->frame); @@ -563,7 +579,7 @@ _e_comp_x_evas_stack_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_U if (!win) { ec2 = e_client_below_get(ec); - if (ec2->layer == ec->layer) + if (ec2 && (ec2->layer == ec->layer)) { win = e_client_util_pwin_get(ec2); mode = ECORE_X_WINDOW_STACK_ABOVE; @@ -573,7 +589,7 @@ _e_comp_x_evas_stack_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_U /* just layer stack */ if (!win) { - win = ec->comp->layers[ec->layer].win; + win = ec->comp->layers[e_comp_canvas_layer_map(ec->layer)].win; mode = ECORE_X_WINDOW_STACK_BELOW; } ecore_x_window_configure(e_client_util_pwin_get(ec), @@ -752,6 +768,7 @@ static Eina_Bool _e_comp_x_configure(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_Window_Configure *ev) { E_Client *ec = _e_comp_x_client_find_by_window(ev->win); + Eina_Bool child; if (!ec) { E_Comp *c = e_comp_find_by_window(ev->win); @@ -760,7 +777,8 @@ _e_comp_x_configure(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_ return ECORE_CALLBACK_PASS_ON; } - INF("configure %u: %p", e_client_util_win_get(ec), ec); + //INF("configure %u: %p", ev->win, ec); + child = (ev->win == e_client_util_win_get(ec)); if (ev->abovewin == 0) { if (e_client_below_get(ec)) @@ -774,15 +792,16 @@ _e_comp_x_configure(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_ } if (ec->input_only) return ECORE_CALLBACK_RENEW; - if ((ec->border_size != ev->border) || (e_pixmap_size_changed(ec->pixmap, ev->w, ev->h))) + if (!ec->override) return ECORE_CALLBACK_RENEW; + if ((ec->client.w != ev->w) || (ec->client.h != ev->h)) + e_client_resize_without_frame(ec, ev->w, ev->h); + if (ec->border_size != ev->border) { ec->border_size = ev->border; e_pixmap_dirty(ec->pixmap); e_comp_object_render_update_add(ec->frame); } - if ((ec->client.w != ev->w) || (ec->client.h != ev->h)) - e_client_resize_without_frame(ec, ev->w, ev->h); - if ((ec->client.x != ev->x) || (ec->client.y != ev->y)) + if ((!child) && ((ec->client.x != ev->x) || (ec->client.y != ev->y))) e_client_move_without_frame(ec, ev->x, ev->y); return ECORE_CALLBACK_RENEW; } @@ -859,9 +878,9 @@ _e_comp_x_configure_request(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore { /* z{x,y,w,h} are only set here; FIXME! */ // move window horizontal if resize to not useful geometry - x = E_CLAMP(x, zx, zx + zw - ec->w); + x = E_CLAMP(x, 0, zw - w); // move window vertical if resize to not useful geometry - y = E_CLAMP(y, zy, zy + zh - ec->h); + y = E_CLAMP(y, 0, zh - h); } } @@ -1824,7 +1843,6 @@ _e_comp_x_shape(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_Wind } else if (ev->type == ECORE_X_SHAPE_INPUT) { - ec->need_shape_merge = 1; ec->changes.shape_input = 1; EC_CHANGED(ec); } @@ -2029,6 +2047,22 @@ _e_comp_x_hook_client_pre_frame_assign(void *d EINA_UNUSED, E_Client *ec) if (ec->new_client) { ecore_x_window_show(win); + ecore_x_window_show(pwin); + if ((!ec->ignored) && (!ec->input_only)) + { + evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESTACK, _e_comp_x_evas_stack_cb, ec); + evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW, _e_comp_x_evas_show_cb, ec); + evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE, _e_comp_x_evas_hide_cb, ec); + evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_MOVE, _e_comp_x_evas_move_cb, ec); + evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESIZE, _e_comp_x_evas_resize_cb, ec); + evas_object_smart_callback_add(ec->frame, "frame_recalc_done", _e_comp_x_evas_frame_recalc_cb, ec); + evas_object_smart_callback_add(ec->frame, "shade_done", _e_comp_x_evas_shade_cb, ec); + evas_object_smart_callback_add(ec->frame, "comp_hidden", _e_comp_x_evas_comp_hidden_cb, ec); + evas_object_smart_callback_add(ec->frame, "delete_request", _e_comp_x_evas_delete_request_cb, ec); + evas_object_smart_callback_add(ec->frame, "kill_request", _e_comp_x_evas_kill_cb, ec); + evas_object_smart_callback_add(ec->frame, "ping", _e_comp_x_evas_ping_cb, ec); + evas_object_smart_callback_add(ec->frame, "color_set", _e_comp_x_evas_color_set_cb, ec); + } if (ec->visible) evas_object_show(ec->frame); } ec->need_reparent = 0; @@ -2155,7 +2189,6 @@ _e_comp_x_hook_client_fetch(void *d EINA_UNUSED, E_Client *ec) layer = strtol(ec->icccm.name, NULL, 10); if ((!errno) && (!ec->comp->layers[e_comp_canvas_layer_map(layer)].obj)) { - INF("FOUND LAYER WIN %p: %d", ec, e_comp_canvas_layer_map(layer)); ec->lock_client_stacking = 1; ec->comp->layers[e_comp_canvas_layer_map(layer)].obj = ec->frame; e_client_layer_set(ec, layer); @@ -2735,6 +2768,7 @@ _e_comp_x_hook_client_fetch(void *d EINA_UNUSED, E_Client *ec) if (ec->changes.shape_input) { Ecore_X_Rectangle *rects; + Eina_Bool pshaped = ec->shaped_input, changed = EINA_FALSE; int num; ec->changes.shape_input = 0; @@ -2773,6 +2807,7 @@ _e_comp_x_hook_client_fetch(void *d EINA_UNUSED, E_Client *ec) ec->border.changed = 1; } ecore_x_window_shape_input_rectangles_set(pwin, rects, num); + changed = EINA_TRUE; E_FREE(ec->shape_input_rects); ec->shape_input_rects = (Eina_Rectangle*)rects; ec->shape_input_rects_num = num; @@ -2784,7 +2819,8 @@ _e_comp_x_hook_client_fetch(void *d EINA_UNUSED, E_Client *ec) if (!ec->bordername) ec->border.changed = 1; } - ec->need_shape_merge = 1; + if (changed || (pshaped != ec->shaped_input)) + ec->need_shape_merge = 1; } if (ec->changes.prop || ec->mwm.fetch.hints) { @@ -3276,6 +3312,7 @@ _e_comp_x_hook_client_new(void *d EINA_UNUSED, E_Client *ec) managed = 1; ecore_x_window_prop_card32_set(win, E_ATOM_MANAGED, &managed, 1); e_pixmap_parent_window_set(ec->pixmap, parent); + ecore_x_window_resize(parent, ec->client.w, ec->client.h); ec->border.changed = 1; if (!ec->ignored) ec->ignored = e_comp_ignore_win_find(parent); @@ -3298,7 +3335,7 @@ _e_comp_x_hook_client_new(void *d EINA_UNUSED, E_Client *ec) if (!ec->comp_data->initial_attributes.input_only) { ec->comp_data->damage = ecore_x_damage_new(parent, ECORE_X_DAMAGE_REPORT_DELTA_RECTANGLES); - eina_hash_add(damages_hash, &ec->damage, ec); + eina_hash_add(damages_hash, &ec->comp_data->damage, ec); } if (parent) @@ -3428,19 +3465,6 @@ _e_comp_x_hook_client_new(void *d EINA_UNUSED, E_Client *ec) } } - if (!ec->frame) return; - evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESTACK, _e_comp_x_evas_stack_cb, ec); - evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW, _e_comp_x_evas_show_cb, ec); - evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE, _e_comp_x_evas_hide_cb, ec); - evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_MOVE, _e_comp_x_evas_move_cb, ec); - evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESIZE, _e_comp_x_evas_resize_cb, ec); - evas_object_smart_callback_add(ec->frame, "frame_recalc_done", _e_comp_x_evas_frame_recalc_cb, ec); - evas_object_smart_callback_add(ec->frame, "shade_done", _e_comp_x_evas_shade_cb, ec); - evas_object_smart_callback_add(ec->frame, "comp_hidden", _e_comp_x_evas_comp_hidden_cb, ec); - evas_object_smart_callback_add(ec->frame, "delete_request", _e_comp_x_evas_delete_request_cb, ec); - evas_object_smart_callback_add(ec->frame, "kill_request", _e_comp_x_evas_kill_cb, ec); - evas_object_smart_callback_add(ec->frame, "ping", _e_comp_x_evas_ping_cb, ec); - evas_object_smart_callback_add(ec->frame, "color_set", _e_comp_x_evas_color_set_cb, ec); } static void @@ -4098,18 +4122,14 @@ _e_comp_x_setup(E_Comp *c, Ecore_X_Window root, int w, int h) ECORE_EVENT_MODIFIER_CTRL | ECORE_EVENT_MODIFIER_ALT, 0); - ecore_x_window_configure(c->ee_win, - ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING | ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE, - 0, 0, 0, 0, 0, c->layers[0].win, ECORE_X_WINDOW_STACK_BELOW); - - e_grabinput_focus(c->ee_win, E_FOCUS_METHOD_PASSIVE); - ecore_evas_callback_resize_set(c->ee, _e_comp_x_ee_resize); ecore_evas_data_set(c->ee, "comp", c); c->grab_cb = (Ecore_Cb)_e_comp_x_grab_cb; if (!e_comp_canvas_init(c)) return EINA_FALSE; - _e_comp_x_manage_windows(c); + + e_grabinput_focus(c->ee_win, E_FOCUS_METHOD_PASSIVE); + /* init layers */ for (i = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); i <= e_comp_canvas_layer_map(E_LAYER_CLIENT_PRIO); i++) { @@ -4128,9 +4148,13 @@ _e_comp_x_setup(E_Comp *c, Ecore_X_Window root, int w, int h) c->layers[i - 1].win, ECORE_X_WINDOW_STACK_ABOVE); else ecore_x_window_lower(c->layers[i].win); - INF("e_layer_win:%d: %u", i, c->layers[i].win); } + ecore_x_window_configure(c->ee_win, + ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING | ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE, + 0, 0, 0, 0, 0, c->layers[e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP)].win, ECORE_X_WINDOW_STACK_BELOW); + _e_comp_x_manage_windows(c); + return !!c->bg_blank_object; } @@ -4199,7 +4223,6 @@ e_comp_x_init(void) if (ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_X11)) e_comp_gl_set(EINA_TRUE); } - if (!_e_comp_x_screens_setup()) return EINA_FALSE; ecore_x_screensaver_event_listen_set(1); E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_WINDOW_CREATE, _e_comp_x_create, NULL); @@ -4265,10 +4288,10 @@ e_comp_x_init(void) e_client_hook_add(E_CLIENT_HOOK_EVAL_PRE_FRAME_ASSIGN, _e_comp_x_hook_client_pre_frame_assign, NULL); e_client_hook_add(E_CLIENT_HOOK_UNREDIRECT, _e_comp_x_hook_client_unredirect, NULL); e_client_hook_add(E_CLIENT_HOOK_REDIRECT, _e_comp_x_hook_client_redirect, NULL); - e_client_hook_add(E_CLIENT_HOOK_EVAL_PRE_NEW_CLIENT, _e_comp_x_hook_client_post_new_client, NULL); + e_client_hook_add(E_CLIENT_HOOK_EVAL_POST_NEW_CLIENT, _e_comp_x_hook_client_post_new_client, NULL); e_client_hook_add(E_CLIENT_HOOK_FOCUS_SET, _e_comp_x_hook_client_focus, NULL); - + if (!_e_comp_x_screens_setup()) return EINA_FALSE; if (!e_xsettings_init()) e_error_message_show(_("Enlightenment cannot initialize the XSettings system.\n")); diff --git a/src/bin/e_moveresize.c b/src/bin/e_moveresize.c index 1fd969f807..51acbd1158 100644 --- a/src/bin/e_moveresize.c +++ b/src/bin/e_moveresize.c @@ -92,7 +92,8 @@ _e_resize_end(void *data __UNUSED__, E_Client *ec __UNUSED__) { if (_disp_obj) { - e_object_del(E_OBJECT(_disp_obj)); + evas_object_hide(_disp_obj); + evas_object_del(_disp_obj); _disp_obj = NULL; _disp_content = NULL; } @@ -158,7 +159,11 @@ _e_move_begin(void *data __UNUSED__, E_Client *ec) Evas_Coord ew, eh; char buf[40]; - if (_disp_obj) e_object_del(E_OBJECT(_disp_obj)); + if (_disp_obj) + { + evas_object_hide(_disp_obj); + evas_object_del(_disp_obj); + } _disp_obj = NULL; if (!e_config->move_info_visible) diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c index 3fca274b96..92fd152015 100644 --- a/src/bin/e_pixmap.c +++ b/src/bin/e_pixmap.c @@ -26,7 +26,7 @@ struct _E_Pixmap static void _e_pixmap_clear(E_Pixmap *cp) { - cp->w = cp->h = -1; + cp->w = cp->h = 0; cp->image_argb = EINA_FALSE; switch (cp->type) { @@ -62,7 +62,7 @@ _e_pixmap_new(E_Pixmap_Type type) cp = E_NEW(E_Pixmap, 1); cp->type = type; - cp->w = cp->h = -1; + cp->w = cp->h = 0; cp->refcount = 1; cp->dirty = 1; return cp; @@ -229,6 +229,7 @@ e_pixmap_refresh(E_Pixmap *cp) { ecore_x_pixmap_free(cp->pixmap); cp->pixmap = pixmap; + cp->w = pw, cp->h = ph; ecore_x_e_comp_pixmap_set(cp->parent ?: cp->region.xwin, cp->pixmap); } else @@ -242,6 +243,7 @@ e_pixmap_refresh(E_Pixmap *cp) break; default: break; } + cp->dirty = 0; return success; } @@ -358,10 +360,12 @@ e_pixmap_image_refresh(E_Pixmap *cp) { EINA_SAFETY_ON_NULL_RETURN_VAL(cp, EINA_FALSE); + if (cp->dirty) return EINA_FALSE; if (cp->image) return EINA_TRUE; switch (cp->type) { case E_PIXMAP_TYPE_X: + if ((!cp->visual) || (!cp->client->depth)) return EINA_FALSE; cp->image = ecore_x_image_new(cp->w, cp->h, cp->visual, cp->client->depth); if (cp->image) cp->image_argb = ecore_x_image_is_argb32_get(cp->image); diff --git a/src/bin/e_theme.c b/src/bin/e_theme.c index 02d7bdb2c0..2ad68c87c3 100644 --- a/src/bin/e_theme.c +++ b/src/bin/e_theme.c @@ -559,13 +559,13 @@ e_theme_shelf_list(void) } EAPI int -e_theme_comp_border_find(const char *comp) +e_theme_comp_frame_find(const char *comp) { Eina_List *comps = NULL; int found = 0; const char *str; - comps = e_theme_collection_items_find("base/theme/borders", "e/comp/border"); + comps = e_theme_collection_items_find("base/theme/comp", "e/comp/frame"); if (eina_list_search_sorted(comps, EINA_COMPARE_CB(strcmp), comp)) found = 1; @@ -577,9 +577,9 @@ e_theme_comp_border_find(const char *comp) } EAPI Eina_List * -e_theme_comp_border_list(void) +e_theme_comp_frame_list(void) { - return e_theme_collection_items_find("base/theme/borders", "e/comp/border"); + return e_theme_collection_items_find("base/theme/comp", "e/comp/frame"); } /* local subsystem functions */ diff --git a/src/bin/e_theme.h b/src/bin/e_theme.h index f2047a48ed..4e2cb7ab60 100644 --- a/src/bin/e_theme.h +++ b/src/bin/e_theme.h @@ -25,8 +25,8 @@ EAPI int e_theme_client_find(const char *border); EAPI Eina_List *e_theme_client_list(void); EAPI int e_theme_shelf_find(const char *shelf); EAPI Eina_List *e_theme_shelf_list(void); -EAPI int e_theme_comp_border_find(const char *theme); -EAPI Eina_List *e_theme_comp_border_list(void); +EAPI int e_theme_comp_frame_find(const char *theme); +EAPI Eina_List *e_theme_comp_frame_list(void); #endif #endif diff --git a/src/modules/conf_comp/e_mod_main.c b/src/modules/conf_comp/e_mod_main.c index 2044749fd8..7a5b5ac1c3 100644 --- a/src/modules/conf_comp/e_mod_main.c +++ b/src/modules/conf_comp/e_mod_main.c @@ -133,7 +133,7 @@ _style_selector(Evas *evas, const char **source) evas_object_event_callback_add(oi, EVAS_CALLBACK_DEL, _style_selector_del, oi); sel = 0; - styles = e_theme_comp_border_list(); + styles = e_theme_comp_frame_list(); n = 0; EINA_LIST_FOREACH(styles, l, style) { @@ -154,7 +154,7 @@ _style_selector(Evas *evas, const char **source) oo = edje_object_add(e_livethumb_evas_get(ob)); ds_it->preview = oo; - snprintf(buf, sizeof(buf), "e/comp/border/%s", style); + snprintf(buf, sizeof(buf), "e/comp/frame/%s", style); e_theme_edje_object_set(oo, "base/theme/borders", buf); e_layout_pack(oly, oo); e_layout_child_move(oo, 39, 39); diff --git a/src/modules/conf_theme/e_int_config_scale.c b/src/modules/conf_theme/e_int_config_scale.c index 6e22b1890d..f6d6e3f43d 100644 --- a/src/modules/conf_theme/e_int_config_scale.c +++ b/src/modules/conf_theme/e_int_config_scale.c @@ -106,7 +106,7 @@ _scale_preview_new(E_Config_Dialog_Data *cfdata, Evas *e, double sc, double *scp evas_object_show(bg); cm = edje_object_add(e_widget_preview_evas_get(ob)); - e_theme_edje_object_set(cm, "base/theme/borders", "e/comp/border/default"); + e_theme_edje_object_set(cm, "base/theme/comp", "e/comp/frame/default"); evas_object_move(cm, 16, 16); evas_object_resize(cm, 180 * sc, 70); evas_object_show(cm); diff --git a/src/modules/conf_theme/e_int_config_theme.c b/src/modules/conf_theme/e_int_config_theme.c index 5a0e8363d0..df6d17fc54 100644 --- a/src/modules/conf_theme/e_int_config_theme.c +++ b/src/modules/conf_theme/e_int_config_theme.c @@ -125,7 +125,7 @@ _e_int_theme_preview_set(Evas_Object *preview, const char *file) objs = eina_list_append(objs, o); o = edje_object_add(e); - _e_int_theme_edje_file_set(o, file, "e/comp/border/popup"); + _e_int_theme_edje_file_set(o, file, "e/comp/frame/popup"); evas_object_move(o, (w - (400 * e_scale)) / 2, h - (40 * e_scale)); evas_object_resize(o, 400 * e_scale, (40 * e_scale)); evas_object_show(o); @@ -233,7 +233,7 @@ _e_int_theme_preview_set(Evas_Object *preview, const char *file) o = edje_object_add(e); - _e_int_theme_edje_file_set(o, file, "e/comp/border/default"); + _e_int_theme_edje_file_set(o, file, "e/comp/frame/default"); evas_object_move(o, w / 2, h / 9); evas_object_resize(o, w / 3, h / 3); evas_object_show(o); @@ -267,7 +267,7 @@ _e_int_theme_preview_set(Evas_Object *preview, const char *file) o = edje_object_add(e); - _e_int_theme_edje_file_set(o, file, "e/comp/border/default"); + _e_int_theme_edje_file_set(o, file, "e/comp/frame/default"); evas_object_move(o, w / 10, h / 5); evas_object_resize(o, w / 2, h / 3); evas_object_show(o); diff --git a/src/modules/wizard/page_050.c b/src/modules/wizard/page_050.c index ceddfeed62..917df6e550 100644 --- a/src/modules/wizard/page_050.c +++ b/src/modules/wizard/page_050.c @@ -71,7 +71,7 @@ _scale_preview_new(Evas *e, double sc, double *scp) evas_object_show(bg); cm = edje_object_add(e_widget_preview_evas_get(ob)); - e_theme_edje_object_set(cm, "base/theme/borders", "e/comp/border/default"); + e_theme_edje_object_set(cm, "base/theme/comp", "e/comp/frame/default"); evas_object_move(cm, 16, 16); evas_object_resize(cm, 180 * sc, 80); evas_object_show(cm); |