From c33ccf60cba94249b4a4d1e1832aa0ea0e28a22c Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 4 Jan 2003 04:49:53 +0000 Subject: [PATCH] make the frame window override-redirect --- otk/otk_wrap.cc | 26 ++++++++++++++++++++------ otk/widget.cc | 12 ++++++++---- otk/widget.hh | 4 ++-- src/frame.cc | 7 ++++--- src/frame.hh | 4 +--- 5 files changed, 35 insertions(+), 18 deletions(-) diff --git a/otk/otk_wrap.cc b/otk/otk_wrap.cc index dc8db8e7..8b072b30 100644 --- a/otk/otk_wrap.cc +++ b/otk/otk_wrap.cc @@ -1862,20 +1862,26 @@ static PyObject *_wrap_new_OtkWidget__SWIG_1(PyObject *self, PyObject *args) { int arg3 = (int) otk::OtkWidget::Horizontal ; Cursor arg4 = (Cursor) 0 ; int arg5 = (int) 1 ; + unsigned long arg6 = (unsigned long) 0 ; otk::OtkWidget *result; Cursor *argp4 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj3 = 0 ; + PyObject * obj5 = 0 ; - if(!PyArg_ParseTuple(args,(char *)"OO|iOi:new_OtkWidget",&obj0,&obj1,&arg3,&obj3,&arg5)) goto fail; + if(!PyArg_ParseTuple(args,(char *)"OO|iOiO:new_OtkWidget",&obj0,&obj1,&arg3,&obj3,&arg5,&obj5)) goto fail; if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_otk__OtkEventDispatcher,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_otk__Style,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; if (obj3) { if ((SWIG_ConvertPtr(obj3,(void **) &argp4, SWIGTYPE_p_Cursor,SWIG_POINTER_EXCEPTION) == -1)) SWIG_fail; arg4 = *argp4; } - result = (otk::OtkWidget *)new otk::OtkWidget(arg1,arg2,(otk::OtkWidget::Direction )arg3,arg4,arg5); + if (obj5) { + arg6 = (unsigned long) PyInt_AsLong(obj5); + if (PyErr_Occurred()) SWIG_fail; + } + result = (otk::OtkWidget *)new otk::OtkWidget(arg1,arg2,(otk::OtkWidget::Direction )arg3,arg4,arg5,arg6); resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_otk__OtkWidget, 1); return resultobj; @@ -1886,11 +1892,11 @@ static PyObject *_wrap_new_OtkWidget__SWIG_1(PyObject *self, PyObject *args) { static PyObject *_wrap_new_OtkWidget(PyObject *self, PyObject *args) { int argc; - PyObject *argv[6]; + PyObject *argv[7]; int ii; argc = PyObject_Length(args); - for (ii = 0; (ii < argc) && (ii < 5); ii++) { + for (ii = 0; (ii < argc) && (ii < 6); ii++) { argv[ii] = PyTuple_GetItem(args,ii); } if ((argc >= 1) && (argc <= 2)) { @@ -1916,7 +1922,7 @@ static PyObject *_wrap_new_OtkWidget(PyObject *self, PyObject *args) { } } } - if ((argc >= 2) && (argc <= 5)) { + if ((argc >= 2) && (argc <= 6)) { int _v; { void *ptr; @@ -1965,7 +1971,15 @@ static PyObject *_wrap_new_OtkWidget(PyObject *self, PyObject *args) { _v = (PyInt_Check(argv[4]) || PyLong_Check(argv[4])) ? 1 : 0; } if (_v) { - return _wrap_new_OtkWidget__SWIG_1(self,args); + if (argc <= 5) { + return _wrap_new_OtkWidget__SWIG_1(self,args); + } + { + _v = (PyInt_Check(argv[5]) || PyLong_Check(argv[5])) ? 1 : 0; + } + if (_v) { + return _wrap_new_OtkWidget__SWIG_1(self,args); + } } } } diff --git a/otk/widget.cc b/otk/widget.cc index 161e3e71..6987ee59 100644 --- a/otk/widget.cc +++ b/otk/widget.cc @@ -34,7 +34,8 @@ OtkWidget::OtkWidget(OtkWidget *parent, Direction direction) } OtkWidget::OtkWidget(OtkEventDispatcher *event_dispatcher, Style *style, - Direction direction, Cursor cursor, int bevel_width) + Direction direction, Cursor cursor, int bevel_width, + unsigned long create_mask) : OtkEventHandler(), _dirty(false),_focused(false), _parent(0), _style(style), _direction(direction), _cursor(cursor), @@ -47,7 +48,7 @@ OtkWidget::OtkWidget(OtkEventDispatcher *event_dispatcher, Style *style, { assert(event_dispatcher); assert(style); - create(); + create(create_mask); _event_dispatcher->registerHandler(_window, this); setStyle(_style); // let the widget initialize stuff } @@ -67,7 +68,7 @@ OtkWidget::~OtkWidget() XDestroyWindow(otk::OBDisplay::display, _window); } -void OtkWidget::create(void) +void OtkWidget::create(unsigned long mask) { const ScreenInfo *scr_info = otk::OBDisplay::screenInfo(_screen); Window p_window = _parent ? _parent->window() : scr_info->rootWindow(); @@ -75,13 +76,16 @@ void OtkWidget::create(void) _rect.setRect(0, 0, 1, 1); // just some initial values XSetWindowAttributes attrib_create; - unsigned long create_mask = CWBackPixmap | CWBorderPixel | CWEventMask; + unsigned long create_mask = CWBackPixmap | CWBorderPixel | CWEventMask | + mask; attrib_create.background_pixmap = None; attrib_create.colormap = scr_info->colormap(); + attrib_create.override_redirect = True; // not used by default attrib_create.event_mask = ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | ExposureMask | StructureNotifyMask; + if (_cursor) { create_mask |= CWCursor; attrib_create.cursor = _cursor; diff --git a/otk/widget.hh b/otk/widget.hh index 7c508fcd..8d3bfb23 100644 --- a/otk/widget.hh +++ b/otk/widget.hh @@ -28,7 +28,7 @@ public: OtkWidget(otk::OtkWidget *parent, Direction = Horizontal); OtkWidget(otk::OtkEventDispatcher *event_dispatcher, otk::Style *style, Direction direction = Horizontal, Cursor cursor = 0, - int bevel_width = 1); + int bevel_width = 1, unsigned long create_mask = 0); virtual ~OtkWidget(); @@ -126,7 +126,7 @@ protected: bool _focused; virtual void adjust(void); - virtual void create(void); + virtual void create(unsigned long mask = 0); virtual void adjustHorz(void); virtual void adjustVert(void); virtual void internalResize(int width, int height); diff --git a/src/frame.cc b/src/frame.cc index ee770b25..dc126ea3 100644 --- a/src/frame.cc +++ b/src/frame.cc @@ -24,7 +24,8 @@ namespace ob { const long OBFrame::event_mask; OBFrame::OBFrame(OBClient *client, otk::Style *style) - : otk::OtkWidget(Openbox::instance, style), + : otk::OtkWidget(Openbox::instance, style, Horizontal, 0, 1, + CWOverrideRedirect), OBWidget(Type_Frame), _client(client), _screen(otk::OBDisplay::screenInfo(client->screen())), @@ -43,8 +44,8 @@ OBFrame::OBFrame(OBClient *client, otk::Style *style) assert(client); assert(style); - XSelectInput(otk::OBDisplay::display, window(), OBFrame::event_mask); - + XSelectInput(otk::OBDisplay::display, _window, OBFrame::event_mask); + _grip_left.setCursor(Openbox::instance->cursors().ll_angle); _grip_right.setCursor(Openbox::instance->cursors().lr_angle); diff --git a/src/frame.hh b/src/frame.hh index ab1e1b03..e7a55237 100644 --- a/src/frame.hh +++ b/src/frame.hh @@ -33,9 +33,7 @@ class OBFrame : public otk::OtkWidget, public OBWidget { public: //! The event mask to grab on frame windows - static const long event_mask = EnterWindowMask | LeaveWindowMask | - ButtonPressMask | ButtonReleaseMask | - ButtonMotionMask; + static const long event_mask = EnterWindowMask | LeaveWindowMask; private: OBClient *_client; -- 2.39.2