all repos — openbox @ 8df1670bc27fd12e2dc9808e68fcd4efc7558b4d

openbox fork - make it a bit more like ryudo

add an adjustable event mask
Dana Jansens danakj@orodu.net
commit

8df1670bc27fd12e2dc9808e68fcd4efc7558b4d

parent

f6ea99026534b9760bff477d6c1fa6346464a48f

2 files changed, 22 insertions(+), 3 deletions(-)

jump to
M otk/widget.ccotk/widget.cc

@@ -25,6 +25,8 @@ _grabbed_keyboard(false), _stretchable_vert(false),

_stretchable_horz(false), _texture(0), _bg_pixmap(0), _bg_pixel(0), _bcolor(0), _bwidth(0), _rect(0, 0, 1, 1), _screen(parent->screen()), _fixed_width(false), _fixed_height(false), + _event_mask(ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | + ExposureMask | StructureNotifyMask), _surface(0), _event_dispatcher(parent->eventDispatcher()) {

@@ -45,6 +47,8 @@ _grabbed_mouse(false), _grabbed_keyboard(false),

_stretchable_vert(false), _stretchable_horz(false), _texture(0), _bg_pixmap(0), _bg_pixel(0), _bcolor(0), _bwidth(0), _rect(0, 0, 1, 1), _screen(style->screen()), _fixed_width(false), _fixed_height(false), + _event_mask(ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | + ExposureMask | StructureNotifyMask), _surface(0), _event_dispatcher(event_dispatcher) {

@@ -84,8 +88,7 @@ unsigned long create_mask = CWBackPixmap | CWBorderPixel | CWEventMask;

attrib_create.background_pixmap = None; attrib_create.colormap = scr_info->colormap(); - attrib_create.event_mask = ButtonPressMask | ButtonReleaseMask | - ButtonMotionMask | ExposureMask | StructureNotifyMask; + attrib_create.event_mask = _event_mask; if (override_redirect) { create_mask |= CWOverrideRedirect;

@@ -104,6 +107,12 @@ scr_info->visual(), create_mask, &attrib_create);

_ignore_config++; } +void Widget::setEventMask(long e) +{ + XSelectInput(**display, _window, e); + _event_mask = e; +} + void Widget::setWidth(int w) { assert(w > 0);

@@ -266,7 +275,10 @@ }

void Widget::render(void) { - if (!_texture) return; + if (!_texture) { + XSetWindowBackgroundPixmap(**display, _window, ParentRelative); + return; + } Surface *s = _surface; // save the current surface

@@ -381,6 +393,8 @@ for (; str_it != str_end; ++str_it)

(*str_it)->setHeight(str_height > _bevel_width ? str_height - _bevel_width : _bevel_width); } + if (stretchable.size() > 0) + height = _rect.height(); Widget *prev_widget = 0;
M otk/widget.hhotk/widget.hh

@@ -118,6 +118,9 @@

inline RenderStyle *style(void) const { return _style; } virtual void setStyle(RenderStyle *style); + inline long eventMask(void) const { return _event_mask; } + void setEventMask(long e); + inline EventDispatcher *eventDispatcher(void) { return _event_dispatcher; } void setEventDispatcher(EventDispatcher *disp);

@@ -166,6 +169,8 @@ unsigned int _screen;

bool _fixed_width; bool _fixed_height; + + long _event_mask; Surface *_surface;