popups for moving and resizing
Dana Jansens danakj@orodu.net
5 files changed,
20 insertions(+),
66 deletions(-)
M
otk/renderstyle.cc
→
otk/renderstyle.cc
@@ -15,8 +15,8 @@ : _screen(screen),
_file(stylefile) { // pick one.. -#define FIERON -//#define MERRY +//#define FIERON +#define MERRY #ifdef FIERON _root_color = new RenderColor(_screen, 0x272a2f);@@ -388,7 +388,6 @@
_max_mask = new PixmapMask(); _max_mask->w = _max_mask->h = 7; { - //char data[] = { 0x7e, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0x7e }; char data [] = {0x7c, 0x44, 0x47, 0x47, 0x7f, 0x1f, 0x1f }; _max_mask->mask = XCreateBitmapFromData(**display,@@ -399,7 +398,6 @@
_icon_mask = new PixmapMask(); _icon_mask->w = _icon_mask->h = 7; { - //char data[] = { 0x00, 0x00, 0xc3, 0xe7, 0x7e, 0x3c, 0x18, 0x00 }; char data[] = {0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e }; _icon_mask->mask = XCreateBitmapFromData(**display,@@ -410,7 +408,6 @@
_alldesk_mask = new PixmapMask(); _alldesk_mask->w = _alldesk_mask->h = 7; { - //char data[] = { 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00 }; char data[] = {0x00, 0x36, 0x36, 0x00, 0x36, 0x36, 0x00 }; _alldesk_mask->mask = XCreateBitmapFromData(**display,@@ -421,7 +418,6 @@
_close_mask = new PixmapMask(); _close_mask->w = _close_mask->h = 7; { - //char data[] = { 0xc3, 0xe7, 0x7e, 0x3c, 0x3c, 0x7e, 0xe7, 0xc3 }; char data[] = { 0x22, 0x77, 0x3e, 0x1c, 0x3e, 0x77, 0x22 }; _close_mask->mask = XCreateBitmapFromData(**display,
M
otk/widget.hh
→
otk/widget.hh
@@ -34,7 +34,7 @@ int bevel_width = 1, bool override_redirect = false);
virtual ~Widget(); - virtual void update(void); + virtual void update(); void exposeHandler(const XExposeEvent &e); void configureHandler(const XConfigureEvent &e);
M
scripts/Makefile.am
→
scripts/Makefile.am
@@ -1,7 +1,7 @@
scriptdir = $(libdir)/openbox/python MAINTAINERCLEANFILES = Makefile.in script_DATA = config.py builtins.py defaults.py focus.py callbacks.py \ - focusmodel.py windowplacement.py behavior.py + focusmodel.py windowplacement.py behavior.py motion.py EXTRA_DIST = $(script_DATA) distclean-local:
M
scripts/behavior.py
→
scripts/behavior.py
@@ -6,6 +6,7 @@ ###############################################################################
import ob import callbacks +import motion def setup_window_clicks(): """Sets up the default bindings for various mouse buttons for various@@ -26,16 +27,26 @@ bottom of its stacking layer.
* Double-left click on a window's titlebar will toggle shading it """ ob.mbind("A-Left", ob.MouseContext.Frame, - ob.MouseAction.Motion, callbacks.move) + ob.MouseAction.Motion, motion.move) + ob.mbind("A-Left", ob.MouseContext.Frame, + ob.MouseAction.Release, motion.end_move) ob.mbind("Left", ob.MouseContext.Titlebar, - ob.MouseAction.Motion, callbacks.move) + ob.MouseAction.Motion, motion.move) + ob.mbind("Left", ob.MouseContext.Titlebar, + ob.MouseAction.Release, motion.end_move) + ob.mbind("Left", ob.MouseContext.Handle, + ob.MouseAction.Motion, motion.move) ob.mbind("Left", ob.MouseContext.Handle, - ob.MouseAction.Motion, callbacks.move) + ob.MouseAction.Release, motion.end_move) ob.mbind("A-Right", ob.MouseContext.Frame, - ob.MouseAction.Motion, callbacks.resize) + ob.MouseAction.Motion, motion.resize) + ob.mbind("A-Right", ob.MouseContext.Frame, + ob.MouseAction.Release, motion.end_resize) + ob.mbind("Left", ob.MouseContext.Grip, + ob.MouseAction.Motion, motion.resize) ob.mbind("Left", ob.MouseContext.Grip, - ob.MouseAction.Motion, callbacks.resize) + ob.MouseAction.Release, motion.end_resize) ob.mbind("Left", ob.MouseContext.Titlebar, ob.MouseAction.Press, callbacks.raise_win)
M
scripts/callbacks.py
→
scripts/callbacks.py
@@ -5,10 +5,6 @@
############################################################################# ### Options that can be modified to change the default hooks' behaviors. ### ### ### -# resize_nearest - 1 to resize from the corner nearest where the mouse ### -### is, 0 to resize always from the bottom right corner. ### -resize_nearest = 1 ### -### ### ############################################################################# import ob@@ -65,55 +61,6 @@ # !normal windows dont get focus from window enter events
if data.action == ob.EventAction.EnterWindow and not data.client.normal(): return data.client.focus() - -def move(data): - """Moves the window interactively. This should only be used with - MouseMotion events""" - if not data.client: return - - # not-normal windows dont get moved - if not data.client.normal(): return - - dx = data.xroot - data.pressx - dy = data.yroot - data.pressy - data.client.move(data.press_clientx + dx, data.press_clienty + dy) - -def resize(data): - """Resizes the window interactively. This should only be used with - MouseMotion events""" - if not data.client: return - - # not-normal windows dont get resized - if not data.client.normal(): return - - px = data.pressx - py = data.pressy - dx = data.xroot - px - dy = data.yroot - py - - # pick a corner to anchor - if not (resize_nearest or data.context == MC_Grip): - corner = ob.Client.TopLeft - else: - x = px - data.press_clientx - y = py - data.press_clienty - if y < data.press_clientheight / 2: - if x < data.press_clientwidth / 2: - corner = ob.Client.BottomRight - dx *= -1 - else: - corner = ob.Client.BottomLeft - dy *= -1 - else: - if x < data.press_clientwidth / 2: - corner = ob.Client.TopRight - dx *= -1 - else: - corner = ob.Client.TopLeft - - data.client.resize(corner, - data.press_clientwidth + dx, - data.press_clientheight + dy); def restart(data, other = ""): """Restarts openbox, optionally starting another window manager."""