Ecore_Evas (wayland): When we maximize windows, account for framespace
authordevilhorns <devilhorns@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 8 Aug 2012 10:09:49 +0000 (10:09 +0000)
committerdevilhorns <devilhorns@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 8 Aug 2012 10:09:49 +0000 (10:09 +0000)
width and height so the window does not draw outside the output
dimensions. Fixes ticket #1281

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@75005 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_evas/ecore_evas_wayland_egl.c
src/lib/ecore_evas/ecore_evas_wayland_shm.c

index b296bd2..0ab2703 100644 (file)
@@ -957,6 +957,7 @@ _ecore_evas_wl_cb_window_configure(void *data __UNUSED__, int type __UNUSED__, v
 {
    Ecore_Evas *ee;
    Ecore_Wl_Event_Window_Configure *ev;
+   int nw = 0, nh = 0;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
 
@@ -964,18 +965,30 @@ _ecore_evas_wl_cb_window_configure(void *data __UNUSED__, int type __UNUSED__, v
    ee = ecore_event_window_match(ev->win);
    if (!ee) return ECORE_CALLBACK_PASS_ON;
    if (ev->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON;
+
    if ((ee->x != ev->x) || (ee->y != ev->y))
      {
-        /* ee->x = ev->x; */
-        /* ee->y = ev->y; */
         ee->req.x = ee->x;
         ee->req.y = ee->y;
         if (ee->func.fn_move) ee->func.fn_move(ee);
      }
-   if ((ee->req.w != ev->w) || (ee->req.h != ev->h))
+
+   nw = ev->w;
+   nh = ev->h;
+
+   if (ee->prop.maximized)
+     {
+        int fw = 0, fh = 0;
+
+        evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
+        nw = ev->w - fw;
+        nh = ev->h - fh;
+     }
+
+   if ((ee->w != nw) || (ee->h != nh))
      {
-        ee->req.w = ev->w;
-        ee->req.h = ev->h;
+        ee->req.w = nw;
+        ee->req.h = nh;
         if (ee->func.fn_resize) ee->func.fn_resize(ee);
      }
 
index 9d547d1..0deb371 100644 (file)
@@ -1100,6 +1100,7 @@ _ecore_evas_wl_cb_window_configure(void *data __UNUSED__, int type __UNUSED__, v
 {
    Ecore_Evas *ee;
    Ecore_Wl_Event_Window_Configure *ev;
+   int nw = 0, nh = 0;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
 
@@ -1110,18 +1111,27 @@ _ecore_evas_wl_cb_window_configure(void *data __UNUSED__, int type __UNUSED__, v
 
    if ((ee->x != ev->x) || (ee->y != ev->y))
      {
-        /* ee->x = ev->x; */
-        /* ee->y = ev->y; */
         ee->req.x = ee->x;
         ee->req.y = ee->y;
         if (ee->func.fn_move) ee->func.fn_move(ee);
      }
-   if ((ee->req.w != ev->w) || (ee->req.h != ev->h))
+
+   nw = ev->w;
+   nh = ev->h;
+
+   if (ee->prop.maximized)
+     {
+        int fw = 0, fh = 0;
+
+        evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
+        nw = ev->w - fw;
+        nh = ev->h - fh;
+     }
+
+   if ((ee->w != nw) || (ee->h != nh))
      {
-        /* ee->w = ev->w; */
-        /* ee->h = ev->h; */
-        ee->req.w = ev->w;
-        ee->req.h = ev->h;
+        ee->req.w = nw;
+        ee->req.h = nh;
         if (ee->func.fn_resize) ee->func.fn_resize(ee);
      }