all repos — openbox @ 0c04fb5260a535d8457febca9bf05669a85b1c12

openbox fork - make it a bit more like ryudo

synch with bb-cvs.
add window resize zones. the resource has been renamed from windowZones to resizeZones.
Dana Jansens danakj@orodu.net
commit

0c04fb5260a535d8457febca9bf05669a85b1c12

parent

8e34bfcfcbd7bfc9913f40a23016f30c63803611

3 files changed, 48 insertions(+), 15 deletions(-)

jump to
M src/Screen.ccsrc/Screen.cc

@@ -412,6 +412,12 @@ resource.window_to_window_snap);

} +void BScreen::saveResizeZones(unsigned int z) { + resource.resize_zones = z; + config->setValue(screenstr + "resizeZones", resource.resize_zones); +} + + void BScreen::saveWindowCornerSnap(bool s) { resource.window_corner_snap = s; config->setValue(screenstr + "windowCornerSnap",

@@ -505,6 +511,7 @@ saveSloppyFocus(resource.sloppy_focus);

saveAutoRaise(resource.auto_raise); saveImageDither(doImageDither()); saveAAFonts(resource.aa_fonts); + saveResizeZones(resource.resize_zones); saveOpaqueMove(resource.opaque_move); saveFullMax(resource.full_max); saveFocusNew(resource.focus_new);

@@ -550,6 +557,11 @@ resource.opaque_move = false;

if (! config->getValue(screenstr + "antialiasFonts", resource.aa_fonts)) resource.aa_fonts = true; + + if (! config->getValue(screenstr + "resizeZones", resource.resize_zones) || + (resource.resize_zones != 1 && resource.resize_zones != 2 && + resource.resize_zones != 4)) + resource.resize_zones = 4; if (! config->getValue(screenstr + "hideToolbar", resource.hide_toolbar)) resource.hide_toolbar = false;
M src/Screen.hhsrc/Screen.hh

@@ -156,7 +156,8 @@ unsigned int workspaces;

int toolbar_placement, toolbar_width_percent, placement_policy, edge_snap_threshold, row_direction, col_direction; - unsigned int handle_width, bevel_width, frame_width, border_width; + unsigned int handle_width, bevel_width, frame_width, border_width, + resize_zones; #ifdef HAVE_STRFTIME std::string strftime_format;

@@ -241,6 +242,8 @@ inline unsigned int getFrameWidth(void) const

{ return resource.frame_width; } inline unsigned int getBorderWidth(void) const { return resource.border_width; } + inline unsigned int getResizeZones(void) const + { return resource.resize_zones; } inline unsigned int getCurrentWorkspaceID(void) { return current_workspace->getID(); }

@@ -276,6 +279,7 @@ void saveFocusLast(bool f);

void saveHideToolbar(bool h); void saveWindowToWindowSnap(bool s); void saveWindowCornerSnap(bool s); + void saveResizeZones(unsigned int z); inline void iconUpdate(void) { iconmenu->update(); } #ifdef HAVE_STRFTIME
M src/Window.ccsrc/Window.cc

@@ -252,8 +252,7 @@ if (blackbox->isStartup() || isTransient() ||

client.normal_hint_flags & (PPosition|USPosition)) { applyGravity(frame.rect); - if (blackbox->isStartup() || - client.rect.intersects(screen->availableArea())) + if (blackbox->isStartup() || client.rect.intersects(screen->getRect())) place_window = False; }

@@ -816,7 +815,9 @@ }

void BlackboxWindow::reconfigure(void) { + restoreGravity(client.rect); upsize(); + applyGravity(frame.rect); positionWindows(); decorate(); redrawWindowFrame();

@@ -845,8 +846,7 @@ blackbox->getMoveCursor());

if (functions & Func_Resize) blackbox->grabButton(Button3, Mod1Mask, frame.window, True, ButtonReleaseMask | ButtonMotionMask, GrabModeAsync, - GrabModeAsync, frame.window, - blackbox->getLowerRightAngleCursor()); + GrabModeAsync, frame.window, None); // alt+middle lowers the window blackbox->grabButton(Button2, Mod1Mask, frame.window, True, ButtonReleaseMask, GrabModeAsync, GrabModeAsync,

@@ -2759,7 +2759,7 @@ } else {

if (frame.title == be->window || frame.label == be->window) { if (((be->time - lastButtonPressTime) <= blackbox->getDoubleClickInterval()) || - (be->state & ControlMask)) { + (be->state == ControlMask)) { lastButtonPressTime = 0; shade(); } else {

@@ -3270,19 +3270,36 @@ doMove(me->x_root, me->y_root);

} else if (flags.resizing) { doResize(me->x_root, me->y_root); } else { - if (! flags.resizing && (me->state & Button1Mask) && - (functions & Func_Move) && + if (!flags.resizing && me->state & Button1Mask && (functions & Func_Move) && (frame.title == me->window || frame.label == me->window || frame.handle == me->window || frame.window == me->window)) { beginMove(me->x_root, me->y_root); } else if ((functions & Func_Resize) && - (((me->state & Button1Mask) && - (me->window == frame.right_grip || - me->window == frame.left_grip)) || - (me->state & (Mod1Mask | Button3Mask) && - me->window == frame.window))) { - beginResize(me->x_root, me->y_root, - (me->window == frame.left_grip) ? BottomLeft : BottomRight); + (me->state & Button1Mask && (me->window == frame.right_grip || + me->window == frame.left_grip)) || + (me->state & Button3Mask && me->state & Mod1Mask && + me->window == frame.window)) { + unsigned int zones = screen->getResizeZones(); + Corner corner; + + if (me->window == frame.left_grip) { + corner = BottomLeft; + } else if (me->window == frame.right_grip || zones == 1) { + corner = BottomRight; + } else { + bool top; + bool left = (me->x_root - frame.rect.x() <= + static_cast<signed>(frame.rect.width() / 2)); + if (zones == 2) + top = False; + else // (zones == 4) + top = (me->y_root - frame.rect.y() <= + static_cast<signed>(frame.rect.height() / 2)); + corner = (top ? (left ? TopLeft : TopRight) : + (left ? BottomLeft : BottomRight)); + } + + beginResize(me->x_root, me->y_root, corner); } } }