summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <m.blumenkran@samsung.com>2013-07-12 16:44:18 +0100
committerMike Blumenkrantz <m.blumenkran@samsung.com>2013-07-12 16:44:18 +0100
commit70e60f98065165bcdb33e35ef297cb607150a3d4 (patch)
treea0fe97b4f7d3c038fe6e340ceaf2f3968dd073f4
parent2b1be376f102dc0f10429c51fc32c5fe48f186c1 (diff)
downloadenlightenment-70e60f98065165bcdb33e35ef297cb607150a3d4.tar.gz
semi-working clients
-rw-r--r--src/bin/e_client.c13
-rw-r--r--src/bin/e_client.h3
-rw-r--r--src/bin/e_comp.c13
-rw-r--r--src/bin/e_comp_canvas.c2
-rw-r--r--src/bin/e_comp_object.c190
-rw-r--r--src/bin/e_comp_x.c101
-rw-r--r--src/bin/e_moveresize.c9
-rw-r--r--src/bin/e_pixmap.c8
-rw-r--r--src/bin/e_theme.c8
-rw-r--r--src/bin/e_theme.h4
-rw-r--r--src/modules/conf_comp/e_mod_main.c4
-rw-r--r--src/modules/conf_theme/e_int_config_scale.c2
-rw-r--r--src/modules/conf_theme/e_int_config_theme.c6
-rw-r--r--src/modules/wizard/page_050.c2
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);