diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-05-01 07:13:12 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-05-01 07:13:12 +0000 |
| commit | 5f9c458fbc5fff1fdde65981084b658fcde5eabc (patch) | |
| tree | 35058199740122cb8a063d336239e4ecfafe1b7e | |
| parent | 0be1c1e8d72f5c5d8ef73c5c6a924e1f540a205a (diff) | |
fix possible seg because of new move code. make sure that the masked_window pointer gets cleanup up (call endMove) when a window is destroyed (pointer is then invalid)
| -rw-r--r-- | src/Window.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/Window.cc b/src/Window.cc index f722902a..431d3167 100644 --- a/src/Window.cc +++ b/src/Window.cc @@ -2283,6 +2283,9 @@ void OpenboxWindow::unmapNotifyEvent(XUnmapEvent *ue) { openbox.grab(); if (! validateClient()) return; + if (flags.moving) + endMove(); + XChangeSaveSet(display, client.window, SetModeDelete); XSelectInput(display, client.window, NoEventMask); @@ -2318,6 +2321,8 @@ void OpenboxWindow::unmapNotifyEvent(XUnmapEvent *ue) { void OpenboxWindow::destroyNotifyEvent(XDestroyWindowEvent *de) { if (de->window == client.window) { + if (flags.moving) + endMove(); XUnmapWindow(display, frame.window); delete this; @@ -2754,9 +2759,8 @@ void OpenboxWindow::startMove(int x, int y) { ASSERT(!flags.moving); // make sure only one window is moving at a time - OpenboxWindow *w; - if ((w = openbox.getMaskedWindow()) != (OpenboxWindow *) 0 && - w->flags.moving) + OpenboxWindow *w = openbox.getMaskedWindow(); + if (w != (OpenboxWindow *) 0 && w->flags.moving) w->endMove(); XGrabPointer(display, frame.window, False, PointerMotionMask | |
