void RazorTaskBar::activeWindowChanged() { Window window = xfitMan().getActiveAppWindow(); RazorTaskButton* btn = buttonByWindow(window); if (btn) btn->setChecked(true); else RazorTaskButton::unCheckAll(); }
void RazorTaskBar::refreshTaskList() { XfitMan xf = xfitMan(); QList<Window> tmp = xf.getClientList(); //qDebug() << "** Fill ********************************"; //foreach (Window wnd, tmp) // if (xf->acceptWindow(wnd)) qDebug() << XfitMan::debugWindow(wnd); //qDebug() << "****************************************"; QMutableHashIterator<Window, RazorTaskButton*> i(mButtonsHash); while (i.hasNext()) { i.next(); int n = tmp.removeAll(i.key()); if (!n) { delete i.value(); i.remove(); } } foreach (Window wnd, tmp) { if (xf.acceptWindow(wnd)) { RazorTaskButton* btn = new RazorTaskButton(wnd, this); btn->setToolButtonStyle(mButtonStyle); if (buttonMaxWidth == -1) { btn->setMaximumWidth(btn->height()); } else { btn->setMaximumWidth(buttonMaxWidth); } mButtonsHash.insert(wnd, btn); // -1 is here due the last stretchable item mLayout->insertWidget(layout()->count()-1, btn); // now I want to set higher stretchable priority for buttons // to suppress stretchItem (last item) default value which // will remove that anoying aggresive space at the end -- petr mLayout->setStretch(layout()->count()-2, 1); } } refreshButtonVisibility(); activeWindowChanged(); }
void RazorTaskBar::handlePropertyNotify(XPropertyEvent* event) { if (event->window == mRootWindow) { // Windows list changed ............................... if (event->atom == XfitMan::atom("_NET_CLIENT_LIST")) { refreshTaskList(); return; } // Activate window .................................... if (event->atom == XfitMan::atom("_NET_ACTIVE_WINDOW")) { activeWindowChanged(); return; } // Desktop switch ..................................... if (event->atom == XfitMan::atom("_NET_CURRENT_DESKTOP")) { if (mShowOnlyCurrentDesktopTasks) refreshTaskList(); return; } } else { RazorTaskButton* btn = buttonByWindow(event->window); if (btn) btn->handlePropertyNotify(event); } // char* aname = XGetAtomName(QX11Info::display(), event->atom); // qDebug() << "** XPropertyEvent ********************"; // qDebug() << " atom: 0x" << hex << event->atom // << " (" << (aname ? aname : "Unknown") << ')'; // qDebug() << " window: " << XfitMan::debugWindow(event->window); // qDebug() << " display: " << event->display; // qDebug() << " send_event:" << event->send_event; // qDebug() << " serial: " << event->serial; // qDebug() << " state: " << event->state; // qDebug() << " time: " << event->time; // qDebug(); }
void RazorTaskBar::refreshTaskList() { XfitMan xf = xfitMan(); QList<Window> tmp = xf.getClientList(); //qDebug() << "** Fill ********************************"; //foreach (Window wnd, tmp) // if (xf->acceptWindow(wnd)) qDebug() << XfitMan::debugWindow(wnd); //qDebug() << "****************************************"; QMutableHashIterator<Window, RazorTaskButton*> i(mButtonsHash); while (i.hasNext()) { i.next(); int n = tmp.removeAll(i.key()); if (!n) { delete i.value(); i.remove(); } } foreach (Window wnd, tmp) { if (xf.acceptWindow(wnd)) { RazorTaskButton* btn = new RazorTaskButton(wnd, this); btn->setToolButtonStyle(mButtonStyle); mButtonsHash.insert(wnd, btn); mLayout->addWidget(btn); } } refreshButtonVisibility(); mLayout->invalidate(); activeWindowChanged(); realign(); }