Set WM_WINDOW_ROLE for fluxbox windows
Vladimir A. Pavlov pv4@bk.ru
6 files changed,
15 insertions(+),
0 deletions(-)
M
src/FbMenu.cc
→
src/FbMenu.cc
@@ -33,6 +33,7 @@ FbTk::ImageControl &imgctrl, FbTk::Layer &layer):
FbTk::Menu(tm, imgctrl), m_layeritem(fbwindow(), layer) { + fbwindow().setWindowRole("fluxbox-menu"); } void FbMenu::buttonPressEvent(XButtonEvent &be) {
M
src/FbTk/FbWindow.cc
→
src/FbTk/FbWindow.cc
@@ -265,6 +265,13 @@ void FbWindow::setName(const char *name) {
XStoreName(display(), m_window, name); } +void FbWindow::setWindowRole(const char *windowRole) { + XTextProperty tp; + XStringListToTextProperty(const_cast<char **>(&windowRole), 1, &tp); + XSetTextProperty(display(), m_window, &tp, XInternAtom(display(), "WM_WINDOW_ROLE", False)); + XFree(tp.value); +} + void FbWindow::setEventMask(long mask) { XSelectInput(display(), m_window, mask); }
M
src/FbTk/FbWindow.hh
→
src/FbTk/FbWindow.hh
@@ -87,6 +87,8 @@ virtual void setBorderColor(const FbTk::Color &border_color);
virtual void setBorderWidth(unsigned int size); /// set window name ("title") void setName(const char *name); + /// set window role + void setWindowRole(const char *windowRole); void setEventMask(long mask); /// clear window with background pixmap or color virtual void clear();
M
src/Slit.cc
→
src/Slit.cc
@@ -262,6 +262,8 @@ scr.name() + ".slit.layer", scr.altName() + ".Slit.Layer") {
_FB_USES_NLS; + frame.window.setWindowRole("fluxbox-slit"); + // attach to theme and root window change signal join(theme().reconfigSig(), FbTk::MemFun(*this, &Slit::reconfigure));
M
src/TextDialog.cc
→
src/TextDialog.cc
@@ -50,6 +50,7 @@ m_screen(screen),
m_move_x(0), m_move_y(0), m_pixmap(0){ + setWindowRole("fluxbox-dialog-text"); init(); }
M
src/Toolbar.cc
→
src/Toolbar.cc
@@ -225,6 +225,8 @@ m_shape(new FbTk::Shape(frame.window, 0)),
m_resize_lock(false) { _FB_USES_NLS; + frame.window.setWindowRole("fluxbox-toolbar"); + // get this on antialias change m_signal_tracker.join(screen().reconfigureSig(), FbTk::MemFunIgnoreArgs(*this, &Toolbar::reconfigure));