diff options
author | Douglas Young <rcxdude@gmail.com> | 2009-02-22 11:01:00 +0000 |
---|---|---|
committer | Douglas Young <rcxdude@gmail.com> | 2009-02-22 11:01:00 +0000 |
commit | 02fe5bfff3da3a547a1c428bdf7057ad5d273ca1 (patch) | |
tree | 3c3d91b18eb4ceb3d2db710a13ad0dfd69c2cfff | |
parent | 59f892744641cec5f3e937f2a5de66044cd4c48e (diff) | |
download | dialog-02fe5bfff3da3a547a1c428bdf7057ad5d273ca1.tar.gz dialog-02fe5bfff3da3a547a1c428bdf7057ad5d273ca1.tar.bz2 |
fix crash if bad TransientFor variable
-rw-r--r-- | dialog.c | 37 |
1 files changed, 20 insertions, 17 deletions
@@ -181,24 +181,27 @@ dialogHandleEvent (CompDisplay *d, if (w && w->transientFor) { CompWindow *ww = findWindowAtDisplay (w->screen->display, w->transientFor); - DialogWindow *dww = GET_DIALOG_WINDOW (ww, \ + if (ww) + { + DialogWindow *dww = GET_DIALOG_WINDOW (ww, \ GET_DIALOG_SCREEN (ww->screen, \ GET_DIALOG_DISPLAY (ww->screen->display))); - if (dww->faded) - { - CompWindow *www; - int othertrans = 0; - for (www = w->screen->windows; www; www = www->next) - { - if (www->transientFor == ww->id && w->id != www->id && - matchEval(dialogGetDialogtypes (www->screen->display),www)) - othertrans++; - } - if (!othertrans) + if (dww->faded) { - dww->faded = FALSE; - dww->animate = ANIMATE_UP; - addWindowDamage (ww); + CompWindow *www; + int othertrans = 0; + for (www = w->screen->windows; www; www = www->next) + { + if (www->transientFor == ww->id && w->id != www->id && + matchEval(dialogGetDialogtypes (www->screen->display),www)) + othertrans++; + } + if (!othertrans) + { + dww->faded = FALSE; + dww->animate = ANIMATE_UP; + addWindowDamage (ww); + } } } } @@ -350,7 +353,7 @@ dialogFiniWindow (CompPlugin *p, { DIALOG_WINDOW (w); DIALOG_SCREEN (w->screen); - /* if (w->transientFor) + if (w->transientFor) { CompWindow *ww = findWindowAtDisplay (w->screen->display, w->transientFor); if (ww) @@ -365,7 +368,7 @@ dialogFiniWindow (CompPlugin *p, addWindowDamage (ww); } } - } */ + } w->base.privates[ds->windowPrivateIndex].ptr = 0; free (dw); } |