summaryrefslogtreecommitdiff
path: root/src/client.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-02-14 05:48:31 +0000
committerDana Jansens <danakj@orodu.net>2003-02-14 05:48:31 +0000
commit50002f2ceb4234145f3977bb14752dc930ada26c (patch)
treebfc1195dbe4d02c19e64fbb37a7a12ba55a804d5 /src/client.cc
parente936cba57ee8d749d7c559dadff1ba09e886d2ec (diff)
add a default icon
Diffstat (limited to 'src/client.cc')
-rw-r--r--src/client.cc44
1 files changed, 25 insertions, 19 deletions
diff --git a/src/client.cc b/src/client.cc
index bd7f7b83..70671442 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -708,6 +708,7 @@ void Client::updateIcons()
unsigned long num = (unsigned) -1;
unsigned long *data;
unsigned long w, h, i = 0;
+ bool freeit = false;
for (int j = 0; j < _nicons; ++j)
delete [] _icons[j].data;
@@ -715,35 +716,40 @@ void Client::updateIcons()
delete [] _icons;
_nicons = 0;
- if (otk::Property::get(_window, otk::Property::atoms.net_wm_icon,
- otk::Property::atoms.cardinal, &num, &data)) {
- // figure out how man valid icons are in here
- while (num - i > 2) {
- w = data[i++];
- h = data[i++];
- i += w * h;
- if (i > num) break;
- ++_nicons;
- }
+ if (!otk::Property::get(_window, otk::Property::atoms.net_wm_icon,
+ otk::Property::atoms.cardinal, &num, &data)) {
+ // use default icon(s)
+ num = openbox->screen(_screen)->config().icon_length;
+ data = openbox->screen(_screen)->config().default_icon;
+ } else
+ freeit = true;
+
+ // figure out how man valid icons are in here
+ while (num - i > 2) {
+ w = data[i++];
+ h = data[i++];
+ i += w * h;
+ if (i > num) break;
+ ++_nicons;
+ }
- _icons = new Icon[_nicons];
+ _icons = new Icon[_nicons];
- // store the icons
- i = 0;
- for (int j = 0; j < _nicons; ++j) {
- w = _icons[j].w = data[i++];
+ // store the icons
+ i = 0;
+ for (int j = 0; j < _nicons; ++j) {
+ w = _icons[j].w = data[i++];
h = _icons[j].h = data[i++];
_icons[j].data = new unsigned long[w * h];
::memcpy(_icons[j].data, &data[i], w * h * sizeof(unsigned long));
i += w * h;
assert(i <= num);
- }
-
- delete [] data;
}
+ if (freeit)
+ delete [] data;
+
if (_nicons <= 0) {
- // set the default icon(s) XXX load these from the py
_nicons = 1;
_icons = new Icon[1];
_icons[i].w = 0;