Russian Qt Forum

Qt => Общие вопросы => Тема начата: DpoHro от Июнь 02, 2010, 17:38



Название: [QT4+Linux(MCBC)] Охота за окнами в Linux (Шпион)
Отправлено: DpoHro от Июнь 02, 2010, 17:38
Я запускаю через QProcess  VncViewer-ы, много VncViewer-ов, так как средств управления окнами вьюверов нет, а надо их уметь перемещать и менять названия окон, приходится изгаляться.

Переопределил QApplication

конструктор:
Код:
CApplication::CApplication(int &argc, char **argv, int v /*= QT_VERSION*/): QApplication(argc,argv,v)
{
XSelectInput(QX11Info::display(), DefaultRootWindow(QX11Info::display()),
SubstructureNotifyMask
);
XFlush(QX11Info::display());


evInstance = QAbstractEventDispatcher::instance();
evInstance->setEventFilter((QAbstractEventDispatcher::EventFilter)customEventFilter);
netwm::init();
}

Фильтр сообщений:
Код:
bool CApplication::customEventFilter(void *message)
{
XEvent *event = (XEvent *)message;
Display *display = QX11Info::display();

Window win;
Window winrep = 0;

bool skip = false;

QString text;
switch (event->type) {
case ReparentNotify:
{
qDebug() << "Reparent: window=" << (int)event->xreparent.window << ", parent=" << (int)event->xreparent.parent << ", event=" << (int)event->xreparent.event;
winrep = (int)event->xreparent.window;
}break;
default:{
}break;
return false;
}

из x11eventfilter перебрасываю в customEventFilter сообщения.


Приложение имеет окно, окно создается и если его не трогать, то Reparent приходит, и Create тоже, но если окно приложения подвигать то фиг, все перестает приходить!!!

Вобщем нид хелп!