Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_border.c 


Log Message:


focus is much happier all round now.. not it's not done properly. i just
figured the cases to "punt off" that i'm seeing as problems.. and alls fine
now... :)

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- e_border.c  23 Dec 2004 16:23:39 -0000      1.33
+++ e_border.c  25 Dec 2004 13:13:36 -0000      1.34
@@ -385,12 +385,20 @@
             if ((focused != bd) && (focused))
               e_border_focus_set(focused, 0, 0);
             if (bd->client.icccm.take_focus)
-              ecore_x_icccm_take_focus_send(bd->client.win, 
ECORE_X_CURRENT_TIME);
+              {
+                 printf("take focus!\n");
+                 ecore_x_icccm_take_focus_send(bd->client.win, 
ECORE_X_CURRENT_TIME);
+                 ecore_x_window_focus(bd->client.win);
+              }
             else
-              ecore_x_window_focus(bd->client.win);
+              {
+                 printf("set focus\n");
+                 ecore_x_window_focus(bd->client.win);
+              }
          }
        else
          {
+            printf("remove focus\n");
             ecore_x_window_focus(bd->container->manager->win);
          }
      }
@@ -983,6 +991,18 @@
    e = ev;
    bd = e_border_find_by_client_window(e->win);
    if (!bd) return 1;
+   if ((e->mode == ECORE_X_EVENT_MODE_NORMAL) &&
+       (e->detail == ECORE_X_EVENT_DETAIL_INFERIOR)) return 1;
+   if ((e->mode == ECORE_X_EVENT_MODE_GRAB) &&
+       (e->detail == ECORE_X_EVENT_DETAIL_NON_LINEAR)) return 1;
+   if ((e->mode == ECORE_X_EVENT_MODE_GRAB) &&
+       (e->detail == ECORE_X_EVENT_DETAIL_INFERIOR)) return 1;
+   if ((e->mode == ECORE_X_EVENT_MODE_GRAB) &&
+       (e->detail == ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL)) return 1;
+   if ((e->mode == ECORE_X_EVENT_MODE_UNGRAB) &&
+       (e->detail == ECORE_X_EVENT_DETAIL_INFERIOR)) return 1;
+   if ((e->mode == ECORE_X_EVENT_MODE_WHILE_GRABBED) &&
+       (e->detail == ECORE_X_EVENT_DETAIL_ANCESTOR)) return 1;
    printf("f OUT %i | %i\n", e->mode, e->detail);
    e_border_focus_set(bd, 0, 0);
    return 1;
@@ -1267,13 +1287,16 @@
               bd->client.icccm.title,
               modes[ev->mode],
               details[ev->detail]);
-       
-       if (ev->mode != ECORE_X_EVENT_MODE_GRAB)
-         e_border_focus_set(bd, 0, 1);
-       else
-         {
-            printf("OUT GRAB!\n");
-         }
+
+       if ((ev->mode == ECORE_X_EVENT_MODE_UNGRAB) &&
+           (ev->detail == ECORE_X_EVENT_DETAIL_INFERIOR))
+         return 1;
+       if ((ev->mode == ECORE_X_EVENT_MODE_NORMAL) &&
+           (ev->detail == ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL))
+         return 1;
+       if (ev->mode == ECORE_X_EVENT_MODE_GRAB)
+         return 1;
+       e_border_focus_set(bd, 0, 1);
      }
    if (ev->win != bd->event_win) return 1;
    bd->mouse.current.mx = ev->root.x;




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to