From 225d4302d0b2bd40d03d3bfa54116c0adfe3143e Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Thu, 30 Jan 2003 20:51:41 +0000 Subject: [PATCH] popups for moving and resizing --- otk/renderstyle.cc | 8 ++----- otk/widget.hh | 2 +- scripts/Makefile.am | 2 +- scripts/behavior.py | 21 +++++++++++++----- scripts/callbacks.py | 53 -------------------------------------------- 5 files changed, 20 insertions(+), 66 deletions(-) diff --git a/otk/renderstyle.cc b/otk/renderstyle.cc index 9139c0bf..01adeca8 100644 --- a/otk/renderstyle.cc +++ b/otk/renderstyle.cc @@ -15,8 +15,8 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile) _file(stylefile) { // pick one.. -#define FIERON -//#define MERRY +//#define FIERON +#define MERRY #ifdef FIERON _root_color = new RenderColor(_screen, 0x272a2f); @@ -388,7 +388,6 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile) _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 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile) _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 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile) _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 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile) _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, diff --git a/otk/widget.hh b/otk/widget.hh index 698e856b..e2e477df 100644 --- a/otk/widget.hh +++ b/otk/widget.hh @@ -34,7 +34,7 @@ public: virtual ~Widget(); - virtual void update(void); + virtual void update(); void exposeHandler(const XExposeEvent &e); void configureHandler(const XConfigureEvent &e); diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 95deedad..36747ee5 100644 --- a/scripts/Makefile.am +++ b/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: diff --git a/scripts/behavior.py b/scripts/behavior.py index 3b407e10..5e475af8 100644 --- a/scripts/behavior.py +++ b/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 @@ def setup_window_clicks(): * 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, motion.move) ob.mbind("Left", ob.MouseContext.Titlebar, - ob.MouseAction.Motion, callbacks.move) + 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) diff --git a/scripts/callbacks.py b/scripts/callbacks.py index 1289a7bb..4d509268 100644 --- a/scripts/callbacks.py +++ b/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 @@ -66,55 +62,6 @@ def focus(data): 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.""" ob.openbox.restart(other) -- 2.39.2