#include "frame.hh"
#include "screen.hh"
#include "openbox.hh"
+#include "bindings.hh"
#include "otk/display.hh"
#include "otk/property.hh"
_transient_for = 0;
// pick a layer to start from
_layer = Layer_Normal;
+ // default to not urgent
+ _urgent = false;
getArea();
getDesktop();
// assume a window takes input if it doesnt specify
_can_focus = true;
- _urgent = false;
+ bool ur = false;
if ((hints = XGetWMHints(**otk::display, _window)) != NULL) {
if (hints->flags & InputHint)
_iconic = hints->initial_state == IconicState;
if (hints->flags & XUrgencyHint)
- _urgent = true;
+ ur = true;
if (hints->flags & WindowGroupHint) {
if (hints->window_group != _group) {
XFree(hints);
}
+
+ if (ur != _urgent) {
+ _urgent = ur;
+ // fire the urgent callback if we're mapped, otherwise, wait until after
+ // we're mapped
+ if (_urgent && frame)
+ fireUrgent();
+ }
}
_shaded = false;
shade(true);
}
+ if (_urgent)
+ fireUrgent();
if (_max_vert); // XXX: incomplete
if (_max_horz); // XXX: incomplete
}
+void Client::fireUrgent()
+{
+ // call the python UrgentNotify callbacks
+ EventData data(_screen, this, EventUrgentNotify, 0);
+ openbox->bindings()->fireEvent(&data);
+}
+
+
void Client::shade(bool shade)
{
if (!(_functions & Func_Shade) || // can't
*/
void shade(bool shade);
+ //! Fires the urgent callbacks which lets the user do what they want with
+ //! urgent windows
+ void fireUrgent();
+
//! Fullscreen's or unfullscreen's the client window
/*!
@param fs true if the window should be made fullscreen; false if it should
EventKey = _openbox.EventKey
EventFocus = _openbox.EventFocus
EventBell = _openbox.EventBell
+EventUrgentNotify = _openbox.EventUrgentNotify
NUM_EVENTS = _openbox.NUM_EVENTS
class MouseData(_object):
__swig_setmethods__ = {}
{ SWIG_PY_INT, (char *)"EventKey", (long) ob::EventKey, 0, 0, 0},
{ SWIG_PY_INT, (char *)"EventFocus", (long) ob::EventFocus, 0, 0, 0},
{ SWIG_PY_INT, (char *)"EventBell", (long) ob::EventBell, 0, 0, 0},
+{ SWIG_PY_INT, (char *)"EventUrgentNotify", (long) ob::EventUrgentNotify, 0, 0, 0},
{ SWIG_PY_INT, (char *)"NUM_EVENTS", (long) ob::NUM_EVENTS, 0, 0, 0},
{ SWIG_PY_INT, (char *)"X_PROTOCOL", (long) 11, 0, 0, 0},
{ SWIG_PY_INT, (char *)"X_PROTOCOL_REVISION", (long) 0, 0, 0, 0},
EventKey,
EventFocus,
EventBell,
+ EventUrgentNotify,
NUM_EVENTS
};