summaryrefslogtreecommitdiff
path: root/src/Window.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-05-01 07:13:12 +0000
committerDana Jansens <danakj@orodu.net>2002-05-01 07:13:12 +0000
commit5f9c458fbc5fff1fdde65981084b658fcde5eabc (patch)
tree35058199740122cb8a063d336239e4ecfafe1b7e /src/Window.cc
parent0be1c1e8d72f5c5d8ef73c5c6a924e1f540a205a (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)
Diffstat (limited to 'src/Window.cc')
-rw-r--r--src/Window.cc10
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 |