keep track of the kwm_win_icon property
This commit is contained in:
parent
42fbb46a7f
commit
0c2f0e0b5e
2 changed files with 35 additions and 0 deletions
|
@ -77,6 +77,7 @@ Client::Client(int screen, Window window)
|
|||
updateClass();
|
||||
updateStrut();
|
||||
updateIcons();
|
||||
updateKwmIcon();
|
||||
|
||||
// this makes sure that these windows appear on all desktops
|
||||
if (/*_type == Type_Dock ||*/ _type == Type_Desktop)
|
||||
|
@ -755,6 +756,22 @@ void Client::updateIcons()
|
|||
if (frame) frame->adjustIcon();
|
||||
}
|
||||
|
||||
void Client::updateKwmIcon()
|
||||
{
|
||||
_kwm_icon = _kwm_icon_mask = None;
|
||||
|
||||
unsigned long num = 2;
|
||||
Pixmap *data;
|
||||
if (otk::Property::get(_window, otk::Property::atoms.kwm_win_icon,
|
||||
otk::Property::atoms.kwm_win_icon, &num, &data)) {
|
||||
if (num >= 2) {
|
||||
_kwm_icon = data[0];
|
||||
_kwm_icon_mask = data[1];
|
||||
}
|
||||
delete [] data;
|
||||
}
|
||||
}
|
||||
|
||||
void Client::propertyHandler(const XPropertyEvent &e)
|
||||
{
|
||||
otk::EventHandler::propertyHandler(e);
|
||||
|
@ -800,6 +817,8 @@ void Client::propertyHandler(const XPropertyEvent &e)
|
|||
updateStrut();
|
||||
else if (e.atom == otk::Property::atoms.net_wm_icon)
|
||||
updateIcons();
|
||||
else if (e.atom == otk::Property::atoms.kwm_win_icon)
|
||||
updateKwmIcon();
|
||||
}
|
||||
|
||||
void Client::setWMState(long state)
|
||||
|
|
|
@ -348,6 +348,9 @@ private:
|
|||
//! The number of icons in _icons
|
||||
int _nicons;
|
||||
|
||||
Pixmap _kwm_icon;
|
||||
Pixmap _kwm_icon_mask;
|
||||
|
||||
//! Retrieves the window's initial gravity
|
||||
void getGravity();
|
||||
//! Retrieves the desktop hint's value and sets Client::_desktop
|
||||
|
@ -414,6 +417,8 @@ private:
|
|||
void updateTransientFor();
|
||||
//! Updates the window's icons
|
||||
void updateIcons();
|
||||
//! Updates the window's kwm icon
|
||||
void updateKwmIcon();
|
||||
|
||||
//! Change the client's state hints to match the class' data
|
||||
void changeState();
|
||||
|
@ -660,6 +665,17 @@ BB @param window The window id that the Client class should handle
|
|||
*/
|
||||
const Icon *icon(const otk::Size &s) const;
|
||||
|
||||
//! Returns the pixmap for the KWM_WIN_ICON specified on the window (or None)
|
||||
/*!
|
||||
The icon given by Client::icon should take precedence over this icon/mask.
|
||||
*/
|
||||
Pixmap kwmIcon() const { return _kwm_icon; }
|
||||
//! Returns the mask for the KWM_WIN_ICON specified on the window (or None)
|
||||
/*!
|
||||
The icon given by Client::icon should take precedence over this icon/mask.
|
||||
*/
|
||||
Pixmap kwmIconMask() const { return _kwm_icon_mask; }
|
||||
|
||||
//! Move the window (actually, its frame) to a position.
|
||||
/*!
|
||||
This moves the window so that the top-left corner of its frame will be at
|
||||
|
|
Loading…
Reference in a new issue