discomfitor pushed a commit to branch master.
commit ed7b29d50f2117eaf30d35f018d443e58815e5f4
Author: Mike Blumenkrantz <[email protected]>
Date: Tue Apr 16 13:16:48 2013 +0100
all comp wins now have zoomaps, zooming effect lovers rejoice
---
src/bin/e_comp.c | 26 +++++++++++++++-----------
src/bin/e_comp.h | 1 +
src/bin/e_shelf.c | 11 ++++-------
src/bin/e_shelf.h | 1 +
src/modules/fileman/e_fwin.c | 10 +++++-----
5 files changed, 26 insertions(+), 23 deletions(-)
diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c
index 505aa34..031795f 100644
--- a/src/bin/e_comp.c
+++ b/src/bin/e_comp.c
@@ -481,6 +481,7 @@ _e_comp_win_geometry_update(E_Comp_Win *cw)
w = cw->bd->w, h = cw->bd->h;
else
w = cw->pw, h = cw->ph;
+ e_zoomap_child_resize(cw->zoomobj, w, h);
if (cw->not_in_layout)
{
evas_object_resize(cw->effect_obj, w, h);
@@ -1824,7 +1825,7 @@ _e_comp_win_shadow_setup(E_Comp_Win *cw)
if (reshadow)
{
if (!cw->bd) return;
- if (cw->bd->bg_object && (edje_object_part_swallow_get(cw->shobj,
"e.swallow.content") == cw->bd->bg_object))
+ if (cw->bd->bg_object && (e_zoomap_child_get(cw->zoomobj) ==
cw->bd->bg_object))
return;
}
if (_e_comp_win_do_shadow(cw) && (!no_shadow))
@@ -1848,17 +1849,19 @@ _e_comp_win_shadow_setup(E_Comp_Win *cw)
else
edje_object_signal_emit(cw->shobj, "e,state,visible,off", "e");
+ e_zoomap_child_set(cw->zoomobj, NULL);
if (cw->bd && cw->bd->bg_object)
{
edje_object_part_swallow(cw->bd->bg_object, "e.swallow.client",
cw->obj);
- edje_object_part_swallow(cw->shobj, "e.swallow.content",
cw->bd->bg_object);
+ e_zoomap_child_set(cw->zoomobj, cw->bd->bg_object);
no_shadow = 1;
}
else
{
- edje_object_part_swallow(cw->shobj, "e.swallow.content", cw->obj);
if (cw->bd) no_shadow = 1;
+ e_zoomap_child_set(cw->zoomobj, cw->obj);
}
+ edje_object_part_swallow(cw->shobj, "e.swallow.content", cw->zoomobj);
if (!cw->visible) return;
@@ -2008,6 +2011,7 @@ _e_comp_win_dummy_add(E_Comp *c, Evas_Object *obj,
E_Object *eobj, Eina_Bool nol
cw->effect_obj = edje_object_add(c->evas);
e_theme_edje_object_set(cw->effect_obj, "base/theme/comp",
"e/comp/effects/none");
cw->shobj = edje_object_add(c->evas);
+ cw->zoomobj = e_zoomap_add(c->evas);
_e_comp_win_shadow_setup(cw);
edje_object_part_swallow(cw->effect_obj, "e.swallow.content", cw->shobj);
@@ -2022,6 +2026,7 @@ _e_comp_win_dummy_add(E_Comp *c, Evas_Object *obj,
E_Object *eobj, Eina_Bool nol
{
evas_object_data_set(cw->shobj, "popup", cw->pop);
evas_object_data_set(cw->effect_obj, "popup", cw->pop);
+ evas_object_name_set(cw->zoomobj, "cw->zoomobj::POPUP");
evas_object_name_set(cw->shobj, "cw->shobj::POPUP");
evas_object_name_set(cw->effect_obj, "cw->effect_obj::POPUP");
}
@@ -2029,6 +2034,7 @@ _e_comp_win_dummy_add(E_Comp *c, Evas_Object *obj,
E_Object *eobj, Eina_Bool nol
{
evas_object_data_set(cw->shobj, "menu", cw->menu);
evas_object_data_set(cw->effect_obj, "menu", cw->menu);
+ evas_object_name_set(cw->zoomobj, "cw->zoomobj::MENU");
evas_object_name_set(cw->shobj, "cw->shobj::MENU");
evas_object_name_set(cw->effect_obj, "cw->effect_obj::MENU");
}
@@ -2163,6 +2169,7 @@ _e_comp_win_add(E_Comp *c, Ecore_X_Window win, E_Border
*bd)
cw->effect_obj = edje_object_add(c->evas);
e_theme_edje_object_set(cw->effect_obj, "base/theme/comp",
"e/comp/effects/none");
cw->shobj = edje_object_add(c->evas);
+ cw->zoomobj = e_zoomap_add(c->evas);
cw->obj = evas_object_image_filled_add(c->evas);
evas_object_image_colorspace_set(cw->obj, EVAS_COLORSPACE_ARGB8888);
if (cw->argb) evas_object_image_alpha_set(cw->obj, 1);
@@ -2197,11 +2204,13 @@ _e_comp_win_add(E_Comp *c, Ecore_X_Window win, E_Border
*bd)
{
evas_object_data_set(cw->shobj, "border", cw->bd);
evas_object_data_set(cw->effect_obj, "border", cw->bd);
+ evas_object_name_set(cw->zoomobj, "cw->zoomobj::BORDER");
evas_object_name_set(cw->shobj, "cw->shobj::BORDER");
evas_object_name_set(cw->effect_obj, "cw->effect_obj::BORDER");
}
else
{
+ evas_object_name_set(cw->zoomobj, "cw->zoomobj::WINDOW");
evas_object_name_set(cw->shobj, "cw->shobj::WINDOW");
evas_object_name_set(cw->effect_obj, "cw->effect_obj::WINDOW");
}
@@ -2367,6 +2376,7 @@ _e_comp_win_del(E_Comp_Win *cw)
evas_object_event_callback_del_full(cw->obj, EVAS_CALLBACK_FOCUS_OUT,
_e_comp_injected_win_focus_out_cb, cw);
}
E_FREE_FUNC(cw->obj, evas_object_del);
+ E_FREE_FUNC(cw->zoomobj, evas_object_del);
E_FREE_FUNC(cw->shobj, evas_object_del);
E_FREE_FUNC(cw->effect_obj, evas_object_del);
@@ -3339,6 +3349,7 @@ _e_comp_bd_add(void *data EINA_UNUSED, int type
EINA_UNUSED, void *event)
_e_comp_win_bd_setup(cw, ev->border);
evas_object_data_set(cw->shobj, "border", cw->bd);
evas_object_data_set(cw->effect_obj, "border", cw->bd);
+ evas_object_name_set(cw->zoomobj, "cw->zoomobj::BORDER");
evas_object_name_set(cw->shobj, "cw->shobj::BORDER");
evas_object_name_set(cw->effect_obj, "cw->effect_obj::BORDER");
e_comp_win_reshadow(cw);
@@ -3512,7 +3523,7 @@ _e_comp_bd_fullscreen(void *data EINA_UNUSED, int type
EINA_UNUSED, void *event)
if (!cw) return ECORE_CALLBACK_PASS_ON;
e_comp_win_reshadow(cw);
/* bd->bg_object deletion pending */
- edje_object_part_swallow(cw->shobj, "e.swallow.content", cw->obj);
+ e_zoomap_child_set(cw->zoomobj, cw->obj);
return ECORE_CALLBACK_PASS_ON;
}
@@ -5431,13 +5442,6 @@ e_comp_win_effect_set(E_Comp_Win *cw, const char *effect)
if (!e_theme_edje_object_set(cw->effect_obj, "base/theme/comp", buf))
if (!e_theme_edje_object_set(cw->effect_obj, "base/theme/comp",
"e/comp/effects/none")) return;
}
- if (cw->bd && cw->bd->bg_object)
- {
- edje_object_part_swallow(cw->bd->bg_object, "e.swallow.client",
cw->obj);
- edje_object_part_swallow(cw->shobj, "e.swallow.content",
cw->bd->bg_object);
- }
- else
- edje_object_part_swallow(cw->shobj, "e.swallow.content", cw->obj);
edje_object_part_swallow(cw->effect_obj, "e.swallow.content", cw->shobj);
if (cw->effect_clip)
{
diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h
index f712376..8daab4b 100644
--- a/src/bin/e_comp.h
+++ b/src/bin/e_comp.h
@@ -125,6 +125,7 @@ struct _E_Comp_Win
Ecore_X_Colormap cmap; // colormap of window
int depth; // window depth
Evas_Object *obj; // composite object
+ Evas_Object *zoomobj; // zoomap
Evas_Object *shobj; // shadow object
Evas_Object *effect_obj; // effects object
E_Object *eobj; // internal e object
diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c
index ced6fcc..e5eb583 100644
--- a/src/bin/e_shelf.c
+++ b/src/bin/e_shelf.c
@@ -245,7 +245,7 @@ e_shelf_zone_new(E_Zone *zone, const char *name, const char
*style, int popup, E
{
evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
evas_object_show(es->o_base);
- E_LAYER_SET(es->o_base, layer);
+ es->cw = E_LAYER_SET(es->o_base, layer);
}
es->gadcon =
@@ -495,7 +495,7 @@ e_shelf_move(E_Shelf *es, int x, int y)
if (es->popup)
e_popup_move(es->popup, es->x, es->y);
else
- evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
+ e_comp_win_move(es->cw, es->zone->x + es->x, es->zone->y + es->y);
}
EAPI void
@@ -508,7 +508,7 @@ e_shelf_resize(E_Shelf *es, int w, int h)
if (es->popup)
e_popup_resize(es->popup, es->w, es->h);
else
- evas_object_resize(es->o_base, es->w, es->h);
+ e_comp_win_resize(es->cw, es->w, es->h);
}
EAPI void
@@ -523,10 +523,7 @@ e_shelf_move_resize(E_Shelf *es, int x, int y, int w, int
h)
if (es->popup)
e_popup_move_resize(es->popup, es->x, es->y, es->w, es->h);
else
- {
- evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
- evas_object_resize(es->o_base, es->w, es->h);
- }
+ e_comp_win_moveresize(es->cw, es->zone->x + es->x, es->zone->y + es->y,
es->w, es->h);
}
EAPI void
diff --git a/src/bin/e_shelf.h b/src/bin/e_shelf.h
index 5617900..2ca4b9b 100644
--- a/src/bin/e_shelf.h
+++ b/src/bin/e_shelf.h
@@ -17,6 +17,7 @@ struct _E_Shelf
E_Layer layer;
E_Popup *popup; /* NULL if its within an existing canvas */
E_Zone *zone;
+ E_Comp_Win *cw;
Evas_Object *o_base;
Ecore_Evas *ee;
Evas *evas;
diff --git a/src/modules/fileman/e_fwin.c b/src/modules/fileman/e_fwin.c
index cef8dd9..07bbf46 100644
--- a/src/modules/fileman/e_fwin.c
+++ b/src/modules/fileman/e_fwin.c
@@ -488,9 +488,8 @@ e_fwin_zone_new(E_Zone *zone, void *p)
e_zone_useful_geometry_get(zone, &x, &y, &w, &h);
evas_object_move(o, x, y);
evas_object_resize(o, w, h);
- E_LAYER_SET_UNDER(o, E_COMP_CANVAS_LAYER_DESKTOP);
- evas_object_hide(o);
evas_object_show(o);
+ E_LAYER_SET_UNDER(o, E_COMP_CANVAS_LAYER_DESKTOP);
page->scrollframe_obj = page->scr = o;
e_fm2_window_object_set(page->fm_obj, E_OBJECT(fwin->zone));
@@ -1618,7 +1617,7 @@ _e_fwin_cb_resize(E_Win *win)
}
_e_fwin_toolbar_resize(fwin->cur_page);
if (fwin->zone)
- evas_object_resize(fwin->cur_page->scrollframe_obj, fwin->zone->w,
fwin->zone->h);
+ e_comp_win_resize(evas_object_data_get(fwin->cur_page->scrollframe_obj,
"comp_win"), fwin->zone->w, fwin->zone->h);
/* _e_fwin_geom_save(fwin); */
}
@@ -1927,6 +1926,7 @@ _e_fwin_zone_move_resize(void *data, int type __UNUSED__,
void *event)
{
E_Event_Zone_Move_Resize *ev = event;
E_Fwin *fwin = data;
+ E_Comp_Win *cw;
int x, y, w, h, sx, sy, sw, sh;
if (!fwin) return ECORE_CALLBACK_PASS_ON;
@@ -1936,8 +1936,8 @@ _e_fwin_zone_move_resize(void *data, int type __UNUSED__,
void *event)
evas_object_geometry_get(fwin->cur_page->scrollframe_obj, &sx, &sy, &sw,
&sh);
/* if same, do nothing */
if ((sx == x) && (sy == y) && (sw == w) && (sh == h)) return
ECORE_CALLBACK_RENEW;
- evas_object_move(fwin->cur_page->scrollframe_obj, x, y);
- evas_object_resize(fwin->cur_page->scrollframe_obj, w, h);
+ cw = evas_object_data_get(fwin->cur_page->scrollframe_obj, "comp_win");
+ e_comp_win_moveresize(cw, x, y, w, h);
e_fm2_refresh(fwin->cur_page->fm_obj);
return ECORE_CALLBACK_RENEW;
}
--
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter