popups for moving and resizing
This commit is contained in:
parent
38345bf32e
commit
225d4302d0
5 changed files with 20 additions and 66 deletions
|
@ -15,8 +15,8 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile)
|
||||||
_file(stylefile)
|
_file(stylefile)
|
||||||
{
|
{
|
||||||
// pick one..
|
// pick one..
|
||||||
#define FIERON
|
//#define FIERON
|
||||||
//#define MERRY
|
#define MERRY
|
||||||
|
|
||||||
#ifdef FIERON
|
#ifdef FIERON
|
||||||
_root_color = new RenderColor(_screen, 0x272a2f);
|
_root_color = new RenderColor(_screen, 0x272a2f);
|
||||||
|
@ -388,7 +388,6 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile)
|
||||||
_max_mask = new PixmapMask();
|
_max_mask = new PixmapMask();
|
||||||
_max_mask->w = _max_mask->h = 7;
|
_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 };
|
char data [] = {0x7c, 0x44, 0x47, 0x47, 0x7f, 0x1f, 0x1f };
|
||||||
_max_mask->mask =
|
_max_mask->mask =
|
||||||
XCreateBitmapFromData(**display,
|
XCreateBitmapFromData(**display,
|
||||||
|
@ -399,7 +398,6 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile)
|
||||||
_icon_mask = new PixmapMask();
|
_icon_mask = new PixmapMask();
|
||||||
_icon_mask->w = _icon_mask->h = 7;
|
_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 };
|
char data[] = {0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e };
|
||||||
_icon_mask->mask =
|
_icon_mask->mask =
|
||||||
XCreateBitmapFromData(**display,
|
XCreateBitmapFromData(**display,
|
||||||
|
@ -410,7 +408,6 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile)
|
||||||
_alldesk_mask = new PixmapMask();
|
_alldesk_mask = new PixmapMask();
|
||||||
_alldesk_mask->w = _alldesk_mask->h = 7;
|
_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 };
|
char data[] = {0x00, 0x36, 0x36, 0x00, 0x36, 0x36, 0x00 };
|
||||||
_alldesk_mask->mask =
|
_alldesk_mask->mask =
|
||||||
XCreateBitmapFromData(**display,
|
XCreateBitmapFromData(**display,
|
||||||
|
@ -421,7 +418,6 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile)
|
||||||
_close_mask = new PixmapMask();
|
_close_mask = new PixmapMask();
|
||||||
_close_mask->w = _close_mask->h = 7;
|
_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 };
|
char data[] = { 0x22, 0x77, 0x3e, 0x1c, 0x3e, 0x77, 0x22 };
|
||||||
_close_mask->mask =
|
_close_mask->mask =
|
||||||
XCreateBitmapFromData(**display,
|
XCreateBitmapFromData(**display,
|
||||||
|
|
|
@ -34,7 +34,7 @@ public:
|
||||||
|
|
||||||
virtual ~Widget();
|
virtual ~Widget();
|
||||||
|
|
||||||
virtual void update(void);
|
virtual void update();
|
||||||
|
|
||||||
void exposeHandler(const XExposeEvent &e);
|
void exposeHandler(const XExposeEvent &e);
|
||||||
void configureHandler(const XConfigureEvent &e);
|
void configureHandler(const XConfigureEvent &e);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
scriptdir = $(libdir)/openbox/python
|
scriptdir = $(libdir)/openbox/python
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
script_DATA = config.py builtins.py defaults.py focus.py callbacks.py \
|
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)
|
EXTRA_DIST = $(script_DATA)
|
||||||
|
|
||||||
distclean-local:
|
distclean-local:
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
import ob
|
import ob
|
||||||
import callbacks
|
import callbacks
|
||||||
|
import motion
|
||||||
|
|
||||||
def setup_window_clicks():
|
def setup_window_clicks():
|
||||||
"""Sets up the default bindings for various mouse buttons for various
|
"""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
|
* Double-left click on a window's titlebar will toggle shading it
|
||||||
"""
|
"""
|
||||||
ob.mbind("A-Left", ob.MouseContext.Frame,
|
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.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.mbind("Left", ob.MouseContext.Handle,
|
||||||
ob.MouseAction.Motion, callbacks.move)
|
ob.MouseAction.Motion, motion.move)
|
||||||
|
ob.mbind("Left", ob.MouseContext.Handle,
|
||||||
|
ob.MouseAction.Release, motion.end_move)
|
||||||
|
|
||||||
ob.mbind("A-Right", ob.MouseContext.Frame,
|
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.mbind("Left", ob.MouseContext.Grip,
|
||||||
ob.MouseAction.Motion, callbacks.resize)
|
ob.MouseAction.Motion, motion.resize)
|
||||||
|
ob.mbind("Left", ob.MouseContext.Grip,
|
||||||
|
ob.MouseAction.Release, motion.end_resize)
|
||||||
|
|
||||||
ob.mbind("Left", ob.MouseContext.Titlebar,
|
ob.mbind("Left", ob.MouseContext.Titlebar,
|
||||||
ob.MouseAction.Press, callbacks.raise_win)
|
ob.MouseAction.Press, callbacks.raise_win)
|
||||||
|
|
|
@ -5,10 +5,6 @@
|
||||||
#############################################################################
|
#############################################################################
|
||||||
### Options that can be modified to change the default hooks' behaviors. ###
|
### 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
|
import ob
|
||||||
|
@ -66,55 +62,6 @@ def focus(data):
|
||||||
return
|
return
|
||||||
data.client.focus()
|
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 = ""):
|
def restart(data, other = ""):
|
||||||
"""Restarts openbox, optionally starting another window manager."""
|
"""Restarts openbox, optionally starting another window manager."""
|
||||||
ob.openbox.restart(other)
|
ob.openbox.restart(other)
|
||||||
|
|
Loading…
Reference in a new issue