Мне удалось отобразить окно с помощью XIconifyWindow
, но не удалось его восстановить позже. Я попытался следующие:Как восстановить окно с помощью Xlib?
XMapRaised (display, window);
И:
XMapWindow (display, window);
И:
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);
К без успеха. Я использую Debian Jessie с GNOME 3.14.0.
Вы пытались отправить сообщение 'WM_CHANGE_STATE' с элементом данных из' NormalState'? (Хотя я бы предположил, что «XMapRaised» неправильно отобразил окно правильно, вы уверены, что вы сбросили вызовы/ждали сервера? Вы также убедились, что вы вызвали это в правильном окне верхнего уровня и не ушли предка, обозначенного/снятого?) –
Нет, но теперь я пробовал это и, к сожалению, он не работает. У меня есть только одно окно, так что очевидно, что это верхний уровень. Я также попытался добавить «XFlush» без успеха. Надеюсь, мне не придется в конечном итоге использовать код, специфичный для WM. –
Можете ли вы разместить соответствующие части кода здесь? Включая различные попытки, которые вы сделали? –