aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/elementary
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-04-07 14:14:14 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-04-07 14:19:25 -0400
commit0712218537f272593db459806105aa8eeb75b4bb (patch)
treea75c20c2b8e75d48ceb53d2684e2918e2e59f3b1 /src/lib/elementary
parentecore-wl2: redo Ecore_Wl2_Event_Window_Configure entirely (diff)
downloadefl-0712218537f272593db459806105aa8eeb75b4bb.tar.gz
wayland: hook engine data from elm_win and update rect with evas size
the only way to accurately calculate the "evas" size in the engine from window geometry is to have the size of the frame available to subtract from window geometry window geometry is NOT framespace--framespace is the entire csd region, possibly containing a shadow, and window geometry is explicitly the region occupied by the window, ie. not the shadowed part. not my ideal solution to the synchronization issue here, but I guess this is a benefit of the unified tree fix https://phab.enlightenment.org/T3396
Diffstat (limited to 'src/lib/elementary')
-rw-r--r--src/lib/elementary/elm_win.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/lib/elementary/elm_win.c b/src/lib/elementary/elm_win.c
index 1cdf6b8fcd..b27d7e024b 100644
--- a/src/lib/elementary/elm_win.c
+++ b/src/lib/elementary/elm_win.c
@@ -11,6 +11,9 @@
#include "elm_priv.h"
#include "elm_widget_menu.h"
+#ifdef HAVE_ELEMENTARY_WL2
+# include "ecore_evas_wayland_private.h"
+#endif
#define MY_CLASS ELM_WIN_CLASS
@@ -1264,7 +1267,9 @@ _elm_win_opaque_update(Elm_Win_Data *sd)
{
int ox, oy, ow, oh;
Eina_Bool alpha;
+ Ecore_Evas_Engine_Wl_Data *wdata;
+ wdata = sd->ee->engine.data;
alpha = ecore_evas_alpha_get(sd->ee);
if (alpha)
ecore_wl2_window_opaque_region_set(sd->wl.win, 0, 0, 0, 0);
@@ -1273,12 +1278,18 @@ _elm_win_opaque_update(Elm_Win_Data *sd)
ecore_evas_geometry_get(sd->ee, NULL, NULL, &ow, &oh);
if (!alpha)
ecore_wl2_window_opaque_region_set(sd->wl.win, 0, 0, ow, oh);
+ wdata->content.x = wdata->content.y = 0;
+ wdata->content.w = ow;
+ wdata->content.h = oh;
ecore_wl2_window_geometry_set(sd->wl.win, 0, 0, ow, oh);
return;
}
edje_object_part_geometry_get(sd->frame_obj, "elm.spacer.opaque",
&ox, &oy, &ow, &oh);
+ edje_object_part_geometry_get(sd->frame_obj, "elm.swallow.client",
+ &wdata->content.x, &wdata->content.y,
+ &wdata->content.w, &wdata->content.h);
if (!alpha)
ecore_wl2_window_opaque_region_set(sd->wl.win, ox, oy, ow, oh);
ecore_wl2_window_geometry_set(sd->wl.win, ox, oy, ow, oh);
@@ -1294,12 +1305,13 @@ _elm_win_frame_obj_update(Elm_Win_Data *sd)
#ifdef HAVE_ELEMENTARY_WL2
sd->wl.opaque_dirty = 1;
#endif
+
if (sd->fullscreen)
{
- evas_output_framespace_set(sd->evas, 0, 0, 0, 0);
#ifdef HAVE_ELEMENTARY_WL2
_elm_win_opaque_update(sd);
#endif
+ evas_output_framespace_set(sd->evas, 0, 0, 0, 0);
return;
}