all repos — openbox @ cc39863363f6c424a1d5f3790ef182b52b69a53e

openbox fork - make it a bit more like ryudo

handle maprequests after mapped correctly. thus making gaim happy again
Dana Jansens danakj@orodu.net
commit

cc39863363f6c424a1d5f3790ef182b52b69a53e

parent

043822f6b67f0b6cd1cf60eccb1294b13e8bf11a

5 files changed, 37 insertions(+), 59 deletions(-)

jump to
M src/client.ccsrc/client.cc

@@ -1107,7 +1107,7 @@

void OBClient::focusHandler(const XFocusChangeEvent &e) { #ifdef DEBUG - printf("FocusIn for 0x%lx\n", e.window); +// printf("FocusIn for 0x%lx\n", e.window); #endif // DEBUG OtkEventHandler::focusHandler(e);

@@ -1122,7 +1122,7 @@

void OBClient::unfocusHandler(const XFocusChangeEvent &e) { #ifdef DEBUG - printf("FocusOut for 0x%lx\n", e.window); +// printf("FocusOut for 0x%lx\n", e.window); #endif // DEBUG OtkEventHandler::unfocusHandler(e);

@@ -1236,7 +1236,10 @@

void OBClient::reparentHandler(const XReparentEvent &e) { // this is when the client is first taken captive in the frame - if (e.parent == frame->plate()) return; + if (e.parent == frame->plate()) { + printf("Ignored ReparentNotify for 0x%lx\n", e.window); + return; + } #ifdef DEBUG printf("ReparentNotify for 0x%lx\n", e.window);

@@ -1253,19 +1256,6 @@ */

// this deletes us etc Openbox::instance->screen(_screen)->unmanageWindow(this); -} - - -void OBClient::mapRequestHandler(const XMapRequestEvent &e) -{ - printf("\nMAP REQUEST\n\n"); - - otk::OtkEventHandler::mapRequestHandler(e); - - if (_shaded) - shade(false); - // XXX: uniconify the window - focus(); } }
M src/client.hhsrc/client.hh

@@ -535,7 +535,6 @@ virtual void configureRequestHandler(const XConfigureRequestEvent &e);

virtual void unmapHandler(const XUnmapEvent &e); virtual void destroyHandler(const XDestroyWindowEvent &e); virtual void reparentHandler(const XReparentEvent &e); - virtual void mapRequestHandler(const XMapRequestEvent &e); #if defined(SHAPE) virtual void shapeHandler(const XShapeEvent &e); #endif // SHAPE
M src/openbox_wrap.ccsrc/openbox_wrap.cc

@@ -656,22 +656,21 @@ #define SWIGTYPE_p_ob__OBClient swig_types[7]

#define SWIGTYPE_p_ob__Openbox swig_types[8] #define SWIGTYPE_p_otk__Strut swig_types[9] #define SWIGTYPE_p_XConfigureRequestEvent swig_types[10] -#define SWIGTYPE_p_XMapRequestEvent swig_types[11] -#define SWIGTYPE_p_otk__OtkEventHandler swig_types[12] -#define SWIGTYPE_p_otk__Rect swig_types[13] -#define SWIGTYPE_p_ob__OBWidget swig_types[14] -#define SWIGTYPE_p_XFocusChangeEvent swig_types[15] -#define SWIGTYPE_p_XClientMessageEvent swig_types[16] -#define SWIGTYPE_p_otk__OBProperty swig_types[17] -#define SWIGTYPE_p_otk__OtkEventDispatcher swig_types[18] -#define SWIGTYPE_p_XPropertyEvent swig_types[19] -#define SWIGTYPE_p_XDestroyWindowEvent swig_types[20] -#define SWIGTYPE_p_otk__BImageControl swig_types[21] -#define SWIGTYPE_p_PyObject swig_types[22] -#define SWIGTYPE_p_ob__OBBindings swig_types[23] -#define SWIGTYPE_p_ob__MwmHints swig_types[24] -#define SWIGTYPE_p_XUnmapEvent swig_types[25] -static swig_type_info *swig_types[27]; +#define SWIGTYPE_p_otk__OtkEventHandler swig_types[11] +#define SWIGTYPE_p_otk__Rect swig_types[12] +#define SWIGTYPE_p_ob__OBWidget swig_types[13] +#define SWIGTYPE_p_XFocusChangeEvent swig_types[14] +#define SWIGTYPE_p_XClientMessageEvent swig_types[15] +#define SWIGTYPE_p_otk__OBProperty swig_types[16] +#define SWIGTYPE_p_otk__OtkEventDispatcher swig_types[17] +#define SWIGTYPE_p_XPropertyEvent swig_types[18] +#define SWIGTYPE_p_XDestroyWindowEvent swig_types[19] +#define SWIGTYPE_p_otk__BImageControl swig_types[20] +#define SWIGTYPE_p_PyObject swig_types[21] +#define SWIGTYPE_p_ob__OBBindings swig_types[22] +#define SWIGTYPE_p_ob__MwmHints swig_types[23] +#define SWIGTYPE_p_XUnmapEvent swig_types[24] +static swig_type_info *swig_types[26]; /* -------- TYPES TABLE (END) -------- */

@@ -2614,28 +2613,6 @@ return NULL;

} -static PyObject *_wrap_OBClient_mapRequestHandler(PyObject *self, PyObject *args) { - PyObject *resultobj; - ob::OBClient *arg1 = (ob::OBClient *) 0 ; - XMapRequestEvent *arg2 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - - if(!PyArg_ParseTuple(args,(char *)"OO:OBClient_mapRequestHandler",&obj0,&obj1)) goto fail; - if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_ob__OBClient,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; - if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_XMapRequestEvent,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; - if (arg2 == NULL) { - PyErr_SetString(PyExc_TypeError,"null reference"); SWIG_fail; - } - (arg1)->mapRequestHandler((XMapRequestEvent const &)*arg2); - - Py_INCREF(Py_None); resultobj = Py_None; - return resultobj; - fail: - return NULL; -} - - static PyObject * OBClient_swigregister(PyObject *self, PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;

@@ -2837,7 +2814,6 @@ { (char *)"OBClient_configureRequestHandler", _wrap_OBClient_configureRequestHandler, METH_VARARGS },

{ (char *)"OBClient_unmapHandler", _wrap_OBClient_unmapHandler, METH_VARARGS }, { (char *)"OBClient_destroyHandler", _wrap_OBClient_destroyHandler, METH_VARARGS }, { (char *)"OBClient_reparentHandler", _wrap_OBClient_reparentHandler, METH_VARARGS }, - { (char *)"OBClient_mapRequestHandler", _wrap_OBClient_mapRequestHandler, METH_VARARGS }, { (char *)"OBClient_swigregister", OBClient_swigregister, METH_VARARGS }, { (char *)"mbind", _wrap_mbind, METH_VARARGS }, { (char *)"kbind", _wrap_kbind, METH_VARARGS },

@@ -2875,7 +2851,6 @@ static swig_type_info _swigt__p_ob__OBClient[] = {{"_p_ob__OBClient", 0, "ob::OBClient *", 0},{"_p_ob__OBClient"},{0}};

static swig_type_info _swigt__p_ob__Openbox[] = {{"_p_ob__Openbox", 0, "ob::Openbox *", 0},{"_p_ob__Openbox"},{0}}; static swig_type_info _swigt__p_otk__Strut[] = {{"_p_otk__Strut", 0, "otk::Strut *", 0},{"_p_otk__Strut"},{0}}; static swig_type_info _swigt__p_XConfigureRequestEvent[] = {{"_p_XConfigureRequestEvent", 0, "XConfigureRequestEvent *", 0},{"_p_XConfigureRequestEvent"},{0}}; -static swig_type_info _swigt__p_XMapRequestEvent[] = {{"_p_XMapRequestEvent", 0, "XMapRequestEvent *", 0},{"_p_XMapRequestEvent"},{0}}; static swig_type_info _swigt__p_otk__OtkEventHandler[] = {{"_p_otk__OtkEventHandler", 0, "otk::OtkEventHandler *", 0},{"_p_ob__OBActions", _p_ob__OBActionsTo_p_otk__OtkEventHandler},{"_p_otk__OtkEventHandler"},{"_p_ob__Openbox", _p_ob__OpenboxTo_p_otk__OtkEventHandler},{"_p_ob__OBClient", _p_ob__OBClientTo_p_otk__OtkEventHandler},{0}}; static swig_type_info _swigt__p_otk__Rect[] = {{"_p_otk__Rect", 0, "otk::Rect *", 0},{"_p_otk__Rect"},{0}}; static swig_type_info _swigt__p_ob__OBWidget[] = {{"_p_ob__OBWidget", 0, "ob::OBWidget *", 0},{"_p_ob__OBWidget"},{"_p_ob__OBClient", _p_ob__OBClientTo_p_ob__OBWidget},{0}};

@@ -2903,7 +2878,6 @@ _swigt__p_ob__OBClient,

_swigt__p_ob__Openbox, _swigt__p_otk__Strut, _swigt__p_XConfigureRequestEvent, -_swigt__p_XMapRequestEvent, _swigt__p_otk__OtkEventHandler, _swigt__p_otk__Rect, _swigt__p_ob__OBWidget,
M src/rootwindow.ccsrc/rootwindow.cc

@@ -109,7 +109,20 @@ #ifdef DEBUG

printf("MapRequest for 0x%lx\n", e.window); #endif // DEBUG - Openbox::instance->screen(_info->screen())->manageWindow(e.window); + /* + MapRequest events come here even after the window exists instead of going + right to the client window, because of how they are sent and their struct + layout. + */ + OBClient *c = Openbox::instance->findClient(e.window); + + if (c) { + if (c->shaded()) + c->shade(false); + // XXX: uniconify the window + c->focus(); + } else + Openbox::instance->screen(_info->screen())->manageWindow(e.window); } }
M src/screen.ccsrc/screen.cc

@@ -527,6 +527,8 @@ // call the python NEWWINDOW binding

EventData *data = new_event_data(window, EventNewWindow, 0); Openbox::instance->bindings()->fireEvent(data); Py_DECREF((PyObject*)data); + + printf("Managed window 0x%lx\n", window); }