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)
Dana Jansens danakj@orodu.net
1 files changed,
7 insertions(+),
3 deletions(-)
jump to
M
src/Window.cc
→
src/Window.cc
@@ -2283,6 +2283,9 @@
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::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 |