using std::string;
+// change this to change what modifier keys openbox uses for mouse bindings
+// for example: Mod1Mask | ControlMask
+// or: ControlMask| ShiftMask
+const unsigned int ModMask = Mod1Mask;
+
/*
* Initializes the class with default values/the window's set initial values.
*/
if (client.transient_for != (BlackboxWindow *) ~0ul) {
client.transient_for->client.transientList.remove(this);
}
- client.transient_for = (BlackboxWindow*) 0;
+ // we save our transient_for though because the workspace will use it
+ // when determining the next window to get focus
}
+ if (blackbox_attrib.workspace != BSENTINEL &&
+ window_number != BSENTINEL)
+ screen->getWorkspace(blackbox_attrib.workspace)->removeWindow(this);
+ else if (flags.iconic)
+ screen->removeIcon(this);
+
+ client.transient_for = (BlackboxWindow*) 0;
+
if (client.transientList.size() > 0) {
// reset transient_for for all transients
BlackboxWindowList::iterator it, end = client.transientList.end();
screen->allowScrollLock());
if (functions & Func_Move)
- blackbox->grabButton(Button1, Mod1Mask, frame.window, True,
+ blackbox->grabButton(Button1, ModMask, frame.window, True,
ButtonReleaseMask | ButtonMotionMask, GrabModeAsync,
GrabModeAsync, frame.window, None,
screen->allowScrollLock());
if (functions & Func_Resize)
- blackbox->grabButton(Button3, Mod1Mask, frame.window, True,
+ blackbox->grabButton(Button3, ModMask, frame.window, True,
ButtonReleaseMask | ButtonMotionMask, GrabModeAsync,
GrabModeAsync, frame.window, None,
screen->allowScrollLock());
// alt+middle lowers the window
- blackbox->grabButton(Button2, Mod1Mask, frame.window, True,
+ blackbox->grabButton(Button2, ModMask, frame.window, True,
ButtonReleaseMask, GrabModeAsync, GrabModeAsync,
frame.window, None,
screen->allowScrollLock());
if ((! screen->isSloppyFocus()) || screen->doClickRaise())
blackbox->ungrabButton(Button1, 0, frame.plate);
- blackbox->ungrabButton(Button1, Mod1Mask, frame.window);
- blackbox->ungrabButton(Button2, Mod1Mask, frame.window);
- blackbox->ungrabButton(Button3, Mod1Mask, frame.window);
+ blackbox->ungrabButton(Button1, ModMask, frame.window);
+ blackbox->ungrabButton(Button2, ModMask, frame.window);
+ blackbox->ungrabButton(Button3, ModMask, frame.window);
}
frame.changing = *it;
} else
-#endif
+#endif // XINERAMA
frame.changing = screen->availableArea();
switch(button) {
if (frame.maximize_button == be->window && be->button <= 3) {
redrawMaximizeButton(True);
- } else if (be->button == 1 || (be->button == 3 && be->state == Mod1Mask)) {
+ } else if (be->button == 1 || (be->button == 3 && be->state == ModMask)) {
if (! flags.focused)
setInputFocus();
} else if (flags.resizing) {
endResize();
} else if (re->window == frame.window) {
- if (re->button == 2 && re->state == Mod1Mask)
+ if (re->button == 2 && re->state == ModMask)
XUngrabPointer(blackbox->getXDisplay(), CurrentTime);
}
}
// snap to the strut (and screen boundaries for xinerama)
#ifdef XINERAMA
if (screen->isXineramaActive() && blackbox->doXineramaSnapping()) {
- RectList::iterator it, end = screen->allAvailableAreas().end();
- for (it = screen->allAvailableAreas().begin(); it != end; ++it)
- snaplist.push_back(*it);
+ if (! screen->doFullMax())
+ snaplist.insert(snaplist.begin(),
+ screen->allAvailableAreas().begin(),
+ screen->allAvailableAreas().end());
+
+ // always snap to the screen edges
+ snaplist.insert(snaplist.begin(),
+ screen->getXineramaAreas().begin(),
+ screen->getXineramaAreas().end());
} else
#endif // XINERAMA
+ {
if (! screen->doFullMax())
snaplist.push_back(screen->availableArea());
-
- // always snap to the screen edges
- snaplist.push_back(screen->getRect());
- RectList::iterator it, end = snaplist.end();
+ // always snap to the screen edges
+ snaplist.push_back(screen->getRect());
+ }
+
+ RectList::const_iterator it, end = snaplist.end();
for (it = snaplist.begin(); it != end; ++it) {
- Rect &srect = *it;
+ const Rect &srect = *it;
+
+ // if we're not in the rectangle then don't snap to it.
+ if (! srect.intersects(Rect(wleft, wtop, frame.rect.width(),
+ frame.rect.height())))
+ continue;
int dleft = std::abs(wleft - srect.left()),
dright = std::abs(wright - srect.right()),
} else if ((functions & Func_Resize) &&
(me->state & Button1Mask && (me->window == frame.right_grip ||
me->window == frame.left_grip)) ||
- (me->state & Button3Mask && me->state & Mod1Mask &&
+ (me->state & Button3Mask && me->state & ModMask &&
me->window == frame.window)) {
unsigned int zones = screen->getResizeZones();
Corner corner;