ghost windows-- ?
authorCarsten Haitzler <raster@rasterman.com>
Mon, 23 Mar 2009 13:39:24 +0000 (13:39 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Mon, 23 Mar 2009 13:39:24 +0000 (13:39 +0000)
SVN revision: 39655

src/bin/e_border.c
src/bin/e_manager.c
src/bin/e_win.c

index b3d3584..7d43200 100644 (file)
@@ -467,7 +467,8 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map, int internal)
        bd->y = att->y;
        bd->changes.pos = 1;
        bd->re_manage = 1;
-       bd->ignore_first_unmap = 2;
+// needed to be 1 for internal windw and on restart.        
+//     bd->ignore_first_unmap = 2;
      }
 
    /* just to friggin make java happy - we're DELAYING the reparent until
@@ -3902,10 +3903,13 @@ _e_border_cb_window_hide(void *data, int ev_type, void *ev)
 
    bd = data;
    e = ev;
+//   printf("HIDE: %x, event %x\n", e->win, e->event_win);
 // not interested in hide events from windows other than the window in question
    if (e->win != e->event_win) return 1;
    bd = e_border_find_by_client_window(e->win);
+//   printf("  bd = %p\n", bd);
    if (!bd) return 1;
+//   printf("  bd->ignore_first_unmap = %i\n", bd->ignore_first_unmap);
    if (bd->ignore_first_unmap > 0)
      {
        bd->ignore_first_unmap--;
@@ -3915,18 +3919,23 @@ _e_border_cb_window_hide(void *data, int ev_type, void *ev)
    if ((bd->iconic) || ((!bd->visible) && (!bd->new_client)) || 
        (bd->await_hide_event > 0))
      {
+//        printf("  Don't delete hidden or iconified windows\n");
+//        printf("  bd->iconic = %i, bd->visible = %i, bd->new_client = %i, bd->await_hide_event = %i\n",
+//               bd->iconic, bd->visible, bd->new_client, bd->await_hide_event);
        if (bd->await_hide_event > 0)
          {
             bd->await_hide_event--;
          }
        else
          {
+//             printf("  hide really\n");
             /* Only hide the border if it is visible */
             if (bd->visible) e_border_hide(bd, 1);
          }
      }
    else
      {
+//             printf("  hide2\n");
        e_border_hide(bd, 0);
        if (e_config->focus_revert_on_hide_or_close)
          {
index 8f1dd51..2b75854 100644 (file)
@@ -280,6 +280,7 @@ e_manager_manage_windows(E_Manager *man)
                       bd = e_border_new(con, windows[i], 1, 0);
                       if (bd)
                         {
+                            bd->ignore_first_unmap = 1;
                            /* FIXME:
                             * It's enough to set the desk, the zone will
                             * be set according to the desk */
index 31dec7f..fef2ec8 100644 (file)
@@ -90,6 +90,7 @@ e_win_show(E_Win *win)
        _e_win_prop_update(win);
        ecore_evas_lower(win->ecore_evas);
        win->border = e_border_new(win->container, win->evas_win, 1, 1);
+        win->border->ignore_first_unmap = 1;
        if (!win->placed)
          win->border->re_manage = 0;
        win->border->internal = 1;