]> Dogcows Code - chaz/openbox/blobdiff - src/client.cc
add a default icon
[chaz/openbox] / src / client.cc
index bd7f7b83c82a29b68302de4782088d7219f28f72..706714423adb4c9b51d259add622eab4920be808 100644 (file)
@@ -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;
This page took 0.021563 seconds and 4 git commands to generate.