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();
|
updateClass();
|
||||||
updateStrut();
|
updateStrut();
|
||||||
updateIcons();
|
updateIcons();
|
||||||
|
updateKwmIcon();
|
||||||
|
|
||||||
// this makes sure that these windows appear on all desktops
|
// this makes sure that these windows appear on all desktops
|
||||||
if (/*_type == Type_Dock ||*/ _type == Type_Desktop)
|
if (/*_type == Type_Dock ||*/ _type == Type_Desktop)
|
||||||
|
@ -755,6 +756,22 @@ void Client::updateIcons()
|
||||||
if (frame) frame->adjustIcon();
|
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)
|
void Client::propertyHandler(const XPropertyEvent &e)
|
||||||
{
|
{
|
||||||
otk::EventHandler::propertyHandler(e);
|
otk::EventHandler::propertyHandler(e);
|
||||||
|
@ -800,6 +817,8 @@ void Client::propertyHandler(const XPropertyEvent &e)
|
||||||
updateStrut();
|
updateStrut();
|
||||||
else if (e.atom == otk::Property::atoms.net_wm_icon)
|
else if (e.atom == otk::Property::atoms.net_wm_icon)
|
||||||
updateIcons();
|
updateIcons();
|
||||||
|
else if (e.atom == otk::Property::atoms.kwm_win_icon)
|
||||||
|
updateKwmIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::setWMState(long state)
|
void Client::setWMState(long state)
|
||||||
|
|
|
@ -348,6 +348,9 @@ private:
|
||||||
//! The number of icons in _icons
|
//! The number of icons in _icons
|
||||||
int _nicons;
|
int _nicons;
|
||||||
|
|
||||||
|
Pixmap _kwm_icon;
|
||||||
|
Pixmap _kwm_icon_mask;
|
||||||
|
|
||||||
//! Retrieves the window's initial gravity
|
//! Retrieves the window's initial gravity
|
||||||
void getGravity();
|
void getGravity();
|
||||||
//! Retrieves the desktop hint's value and sets Client::_desktop
|
//! Retrieves the desktop hint's value and sets Client::_desktop
|
||||||
|
@ -414,6 +417,8 @@ private:
|
||||||
void updateTransientFor();
|
void updateTransientFor();
|
||||||
//! Updates the window's icons
|
//! Updates the window's icons
|
||||||
void updateIcons();
|
void updateIcons();
|
||||||
|
//! Updates the window's kwm icon
|
||||||
|
void updateKwmIcon();
|
||||||
|
|
||||||
//! Change the client's state hints to match the class' data
|
//! Change the client's state hints to match the class' data
|
||||||
void changeState();
|
void changeState();
|
||||||
|
@ -659,6 +664,17 @@ BB @param window The window id that the Client class should handle
|
||||||
smaller than the specified size will be returned.
|
smaller than the specified size will be returned.
|
||||||
*/
|
*/
|
||||||
const Icon *icon(const otk::Size &s) const;
|
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.
|
//! Move the window (actually, its frame) to a position.
|
||||||
/*!
|
/*!
|
||||||
|
|
Loading…
Reference in a new issue