Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_winlist.c 


Log Message:


fixes, cleanups. todo

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_winlist.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_winlist.c 12 Jun 2005 16:22:06 -0000      1.4
+++ e_winlist.c 13 Jun 2005 03:50:23 -0000      1.5
@@ -37,10 +37,7 @@
 static Evas_List *handlers = NULL;
 static Ecore_X_Window input_window = 0;
 
-/* FIXME: gfx are UGLY. theyare test gfx and nothng more atm */
-/* FIXME: support optional warp pointer to window */
 /* FIXME: add mouse downa nd up handlers and pass events to bindings from them 
incase mouse binding starst winlist */
-/* FIXME: can fix mouse in/out after pop down of ui by disabling al lcrossing 
event masks on borders  and desktop, hide, then re-enable. if mouse is in a 
border fake a mouse in to make events work :) */
 
 /* externally accessible functions */
 int
@@ -131,6 +128,11 @@
      (handlers, ecore_event_handler_add
       (ECORE_X_EVENT_KEY_UP, _e_winlist_cb_key_up, NULL));
    
+   if (!wins)
+     {
+       e_winlist_hide();
+       return 1;
+     }
    e_popup_show(winlist);
    return 1;
 }
@@ -138,17 +140,21 @@
 void
 e_winlist_hide(void)
 {
-   if (!winlist) return;
+   E_Border *bd = NULL;
+   E_Winlist_Win *ww;
    
-   /* FIXME: ensure whatever window is selected is focused after we finish 
cleanup - seee above for fix to mouse enter events */
+   if (!winlist) return;
    
+   if (win_selected)
+     {
+       ww = win_selected->data;
+       bd = ww->border;
+     }
    evas_event_freeze(winlist->evas);
    e_popup_hide(winlist);
    e_box_freeze(list_object);
    while (wins)
      {
-       E_Winlist_Win *ww;
-       
        ww = wins->data;
        evas_object_del(ww->bg_object);
        if (ww->icon_object) evas_object_del(ww->icon_object);
@@ -178,6 +184,15 @@
      }
    ecore_x_window_del(input_window);
    input_window = 0;
+   
+   if (bd)
+     {
+       if (bd->iconic) e_border_uniconify(bd);
+       else if (bd->desk) e_desk_show(bd->desk);
+       e_border_raise(bd);
+       e_border_focus_set(bd, 1, 1);
+       /* FIXME: ensure whatever window is selected is focused after we finish 
cleanup - seee above for fix to mouse enter events */
+     }
 }
 
 void
@@ -242,7 +257,11 @@
 {
    if ((bd->zone) &&
        (bd->zone == zone) &&
-       ((bd->desk == desk) || (bd->sticky)))
+       ((bd->desk == desk) || (bd->sticky)) &&
+       (bd->client.icccm.accepts_focus) &&
+       (!bd->client.netwm.state.skip_taskbar) &&
+       (!bd->client.netwm.state.hidden)
+       )
      {
        E_Winlist_Win *ww;
        Evas_Coord mw, mh;
@@ -325,8 +344,16 @@
    if (!win_selected) return;
    ww = win_selected->data;
    edje_object_signal_emit(ww->bg_object, "active", "");
-   e_border_raise(ww->border);
-   e_border_focus_set(ww->border, 1, 1);
+   if ((!ww->border->iconic) &&
+       (ww->border->desk == e_desk_current_get(winlist->zone)))
+     {
+       e_border_raise(ww->border);
+       e_border_focus_set(ww->border, 1, 1);
+       if (e_config->focus_policy != E_FOCUS_CLICK)
+         ecore_x_pointer_warp(ww->border->zone->container->win,
+                              ww->border->x + (ww->border->w / 2),
+                              ww->border->y + (ww->border->h / 2));
+     }
    if (ww->border->client.netwm.name)
      edje_object_part_text_set(bg_object, "title_text", 
ww->border->client.netwm.name);
    else if (ww->border->client.icccm.title)




-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to