Я запускаю через 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 тоже, но если окно приложения подвигать то фиг, все перестает приходить!!!
Вобщем нид хелп!