}
c = c->_transient_for;
}
- if (!fs) {
+ if (!fs && _fullscreen) {
// is one of our transients focused?
c = searchFocusTree(this, this);
if (c) fs = true;
if (ur != _urgent) {
_urgent = ur;
#ifdef DEBUG
- printf("DEBUG: Urgent Hint for 0x%lx: %s\n",
+ printf("Urgent Hint for 0x%lx: %s\n",
(long)_window, _urgent ? "ON" : "OFF");
#endif
// fire the urgent callback if we're mapped, otherwise, wait until after
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;
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);
- }
- printf("i: %lu\n", i);
- printf("bleffffffff\n");
-
- 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;
li = i;
}
}
- if (smallest == 0xffffffff) // didnt find one bigger than us...
- return &_icons[li];
- return &_icons[si];
+ if (largest == 0) // didnt find one smaller than the requested size
+ return &_icons[si];
+ return &_icons[li];
}
void Client::move(int x, int y)
// visible on the screen
if (!(frame->visible() && (_can_focus || _focus_notify))) return false;
- if (_focused) return true;
-
// do a check to see if the window has already been unmapped or destroyed
// do this intelligently while watching out for unmaps we've generated
// (ignore_unmaps > 0)
void Client::unfocus() const
{
- if (!_focused) return;
-
assert(openbox->focusedClient() == this);
openbox->setFocusedClient(0);
}