From: Doyoun Kang <doyoun.kang@samsung.com>
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 18 Sep 2012 11:41:55 +0000 (11:41 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Tue, 18 Sep 2012 11:41:55 +0000 (11:41 +0000)
Subject: [E-devel] [Patch][e] add code to handle the floating mode

I added code to handles the floating mode in e.
I added the structure for floating mode in E_Border structure. If an
application sets the floating mode using elm_win_floating_mode_set(),
e gets this event - ECORE_X_EVENT_WINDOW_PROPERTY (atom:
ECORE_X_ATOM_E_ILLUME_WINDOW_STATE) - and sets floating mode
information to added structure in E_Border.

SVN revision: 76806

src/bin/e_border.c
src/bin/e_border.h

index 7ac2298..a377a1b 100644 (file)
@@ -624,6 +624,8 @@ e_border_new(E_Container   *con,
                     bd->client.illume.drag.fetch.locked = 1;
                   else if (atoms[i] == ECORE_X_ATOM_E_ILLUME_DRAG)
                     bd->client.illume.drag.fetch.drag = 1;
+                  else if (atoms[i] == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE)
+                    bd->client.illume.win_state.fetch.state = 1;
                   else if (atoms[i] == ECORE_X_ATOM_E_VIDEO_PARENT)
                     video_parent = EINA_TRUE;
                   else if (atoms[i] == ECORE_X_ATOM_E_VIDEO_POSITION)
@@ -5575,6 +5577,11 @@ _e_border_cb_window_property(void *data  __UNUSED__,
         bd->client.illume.drag.fetch.drag = 1;
         bd->changed = 1;
      }
+   else if (e->atom == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE)
+     {
+        bd->client.illume.win_state.fetch.state = 1;
+        bd->changed = 1;
+     }
    /*
       else if (e->atom == ECORE_X_ATOM_NET_WM_USER_TIME)
       {
@@ -7267,6 +7274,12 @@ _e_border_eval0(E_Border *bd)
           ecore_x_e_illume_drag_locked_get(bd->client.win);
         bd->client.illume.drag.fetch.locked = 0;
      }
+   if (bd->client.illume.win_state.fetch.state)
+     {
+        bd->client.illume.win_state.state =
+           ecore_x_e_illume_window_state_get(bd->client.win);
+        bd->client.illume.win_state.fetch.state = 0;
+     }
    if (bd->changes.shape)
      {
         Ecore_X_Rectangle *rects;
index 7387e5b..e464dba 100644 (file)
@@ -456,6 +456,14 @@ struct _E_Border
             unsigned char drag : 1;
             unsigned char locked : 1;
          } drag;
+         struct
+         {
+            struct
+            {
+               unsigned char state : 1;
+            } fetch;
+            Ecore_X_Illume_Window_State state;
+         } win_state;
       } illume;
 
       Ecore_X_Window_Attributes initial_attributes;