Ecore_Evas (win32): add override_set() support
authorcaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 20 Apr 2012 14:53:06 +0000 (14:53 +0000)
committercaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 20 Apr 2012 14:53:06 +0000 (14:53 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@70366 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
NEWS
src/lib/ecore_evas/ecore_evas_win32.c

index 3279eb5..a442b88 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 2012-04-16  Shinwoo Kim
 
        * Check control charater and convert into printing character on Windows
+
+2012-04-20  Vincent Torri
+
+       * Add override_set() support in ecore_evas_win32.
diff --git a/NEWS b/NEWS
index e0071a8..7896e82 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -50,6 +50,7 @@ Additions:
      - Add Shm and Egl engines for ecore_evas to draw in Wayland.
      - Add Socket and Plug to draw other process area.
      - Ability to set pointer for wayland support
+     - Add override_set support on Windows XP
     * ecore_wayland
      - Add Ecore_Wayland (backend to support Wayland).
     * ecore_imf
index 32132b3..86eb9dc 100644 (file)
@@ -333,14 +333,17 @@ _ecore_evas_win32_event_window_configure(void *data __UNUSED__, int type __UNUSE
    if (!ee) return 1; /* pass on event */
    if ((Ecore_Window)e->window != ee->prop.window) return 1;
 
-   if ((ee->x != e->x) || (ee->y != e->y))
+   if (ee->prop.override)
      {
-        ee->x = e->x;
-        ee->y = e->y;
-        ee->req.x = ee->x;
-        ee->req.y = ee->y;
+        if ((ee->x != e->x) || (ee->y != e->y))
+          {
+             ee->x = e->x;
+             ee->y = e->y;
+             ee->req.x = ee->x;
+             ee->req.y = ee->y;
 
-        if (ee->func.fn_move) ee->func.fn_move(ee);
+             if (ee->func.fn_move) ee->func.fn_move(ee);
+          }
      }
 
    if ((ee->w != e->width) || (ee->h != e->height))
@@ -862,6 +865,24 @@ _ecore_evas_win32_borderless_set(Ecore_Evas *ee, int on)
 }
 
 static void
+_ecore_evas_win32_override_set(Ecore_Evas *ee, int on)
+{
+   struct _Ecore_Win32_Window *window;
+
+   INF("ecore evas override set");
+
+   window = (struct _Ecore_Win32_Window *)ee->prop.window;
+
+   if (ee->prop.override == on) return;
+   if (ee->should_be_visible) ecore_win32_window_hide(window);
+   /* FIXME: use borderless_set for now */
+   ecore_win32_window_borderless_set(window, on);
+   if (ee->should_be_visible) ecore_win32_window_show(window);
+   if (ee->prop.focused) ecore_win32_window_focus(window);
+   ee->prop.override = on;
+}
+
+static void
 _ecore_evas_win32_fullscreen_set(Ecore_Evas *ee, int on)
 {
    struct _Ecore_Win32_Window *window;
@@ -879,8 +900,7 @@ _ecore_evas_win32_fullscreen_set(Ecore_Evas *ee, int on)
 
    if (on != 0)
    {
-      ecore_win32_window_fullscreen_set((struct _Ecore_Win32_Window *)ee->prop.window,
-                                        on);
+      ecore_win32_window_fullscreen_set(window, on);
    }
    else
    {
@@ -966,7 +986,7 @@ static Ecore_Evas_Engine_Func _ecore_win32_engine_func =
      _ecore_evas_win32_focus_set,
      _ecore_evas_win32_iconified_set,
      _ecore_evas_win32_borderless_set,
-     NULL, /* _ecore_evas_x_override_set */
+     _ecore_evas_win32_override_set,
      NULL,
      _ecore_evas_win32_fullscreen_set,
      NULL, /* _ecore_evas_x_avoid_damage_set */