Udało mi się zindywidualizować okno przy użyciu XIconifyWindow
, ale nie udało się później go przywrócić. Próbowałem następujące:Jak przywrócić okno z Xlib?
XMapRaised (display, window);
oraz:
XMapWindow (display, window);
oraz:
XClientMessageEvent ev;
std::memset (&ev, 0, sizeof ev);
ev.type = ClientMessage;
ev.window = window;
ev.message_type = XInternAtom(display, "WM_CHANGE_STATE", False);
ev.format = 32;
ev.data.l[0] = NormalState;
XSendEvent (display, RootWindow(display, XDefaultScreen(display)), False,
SubstructureRedirectMask |SubstructureNotifyMask, (XEvent*)&ev);
XFlush (display);
To bez powodzenia. Używam Debian Jessie z GNOME 3.14.0.
Czy próbowałeś wysłać wiadomość 'WM_CHANGE_STATE' z elementem danych z' NormalState'? (Chociaż założyłbym, że 'XMapRaised' miałby niewymienione okno poprawnie, czy jesteś pewien, że opróżniłeś połączenia/czekałeś na serwer?) Upewniłeś się również, że zadzwoniłeś do tego w prawidłowym oknie i nie opuściłeś ancestor iconified/withdrawn?) –
Nie, ale teraz próbowałem i niestety to nie działa. Mam tylko jedno okno, więc najwyraźniej jest to najwyższy poziom. Próbowałem też dodać "XFlush" bez powodzenia. Mam nadzieję, że ostatecznie nie będę musiał używać kodu specyficznego dla WM. –
Czy możesz umieścić tutaj odpowiednie fragmenty kodu? W tym różne próby, które podjąłeś? –