X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2FWindow.cc;h=dca583b32c52b373504a98dc557fdc6cb9e1539a;hb=5705ea361305e03bd557896b449f0672005f9159;hp=cff95ec64e005e72ec7e68480e6edf0370d2a255;hpb=5e3ca8e66586a6dab4793cef04a3de98dc2ecfbe;p=chaz%2Fopenbox diff --git a/src/Window.cc b/src/Window.cc index cff95ec6..dca583b3 100644 --- a/src/Window.cc +++ b/src/Window.cc @@ -1422,6 +1422,9 @@ Bool OpenboxWindow::setInputFocus(void) { void OpenboxWindow::iconify(void) { if (flags.iconic) return; + if (flags.moving) + endMove(); + if (windowmenu) windowmenu->hide(); setState(IconicState); @@ -2205,6 +2208,7 @@ void OpenboxWindow::redrawCloseButton(Bool pressed) { void OpenboxWindow::mapRequestEvent(XMapRequestEvent *re) { + cout << "MAP REQUEST " << client.window << " " << client.title << endl; if (re->window == client.window) { #ifdef DEBUG fprintf(stderr, i18n->getMessage(WindowSet, WindowMapRequest, @@ -2593,7 +2597,7 @@ void OpenboxWindow::buttonPressEvent(XButtonEvent *be) { mx = be->x_root - windowmenu->getWidth() / 2; if (be->window == frame.title || be->window == frame.label) { my = frame.y + frame.title_h; - } else if (be->window = frame.handle) { + } else if (be->window == frame.handle) { my = frame.y + frame.y_handle - windowmenu->getHeight(); } else { // (be->window == frame.window) if (be->y <= (signed) frame.bevel_w) { @@ -2782,6 +2786,7 @@ void OpenboxWindow::startMove(int x, int y) { } frame.grab_x = x - frame.x - frame.border_w; frame.grab_y = y - frame.y - frame.border_w; + cout << "START MOVE " << client.window << " " << client.title << endl; } @@ -2871,6 +2876,11 @@ void OpenboxWindow::endMove() { } screen->hideGeometry(); XUngrabPointer(display, CurrentTime); + // if there are any left over motions from the move, drop them now cuz they + // cause problems + XEvent e; + while (XCheckTypedWindowEvent(display, frame.window, MotionNotify, &e)); + cout << "END MOVE " << client.window << " " << client.title << endl; } @@ -2884,11 +2894,12 @@ void OpenboxWindow::motionNotifyEvent(XMotionEvent *me) { else if (functions.resize && (((me->state & Button1Mask) && (me->window == frame.right_grip || me->window == frame.left_grip)) || - (me->state & (Mod1Mask | Button3Mask) && + (me->state == (Mod1Mask | Button3Mask) && me->window == frame.window))) { Bool left = resize_zone & ZoneLeft; if (! flags.resizing) { + cout << "START RESIZE " << client.window << " " << client.title << endl; Cursor cursor; if (resize_zone & ZoneTop) cursor = (resize_zone & ZoneLeft) ? @@ -2962,7 +2973,8 @@ void OpenboxWindow::motionNotifyEvent(XMotionEvent *me) { screen->showGeometry(gx, gy); } - } + } else + cout << "MOTION " << client.window << " " << client.title << endl; } @@ -3088,21 +3100,25 @@ void OpenboxWindow::changeOpenboxHints(OpenboxHints *net) { default: case DecorNormal: - decorations.titlebar = decorations.border = decorations.handle = - decorations.iconify = decorations.maximize = decorations.menu = True; + decorations.titlebar = decorations.iconify = decorations.menu = + decorations.border = True; + decorations.handle = (functions.resize && !flags.transient); + decorations.maximize = functions.maximize; break; case DecorTiny: decorations.titlebar = decorations.iconify = decorations.menu = True; - decorations.border = decorations.handle = decorations.maximize = False; - + decorations.border = decorations.border = decorations.handle = False; + decorations.maximize = functions.maximize; + break; case DecorTool: - decorations.titlebar = decorations.menu = functions.move = True; - decorations.iconify = decorations.border = decorations.handle = - decorations.maximize = False; + decorations.titlebar = decorations.menu = True; + decorations.iconify = decorations.border = False; + decorations.handle = (functions.resize && !flags.transient); + decorations.maximize = functions.maximize; break; }