Название: Проблемы с Drag & Drop в самодельном оконном менеджере.. Отправлено: sse от Июль 11, 2011, 11:33 Добрый день. Вот такая проблема:
Имеется Qt, 4.6.3, Linux МСВС, делаю свой простенький оконный менеджер, на основе Antico. Столкнулся с такой проблемой: после вызова XReparentWindow для любого клиентского окна в моем менеджере, перестают работать механизмы Drag & Drop. Т.е. если в чистых иксах в клиенте работает Drag Drop, то уже после запуска моего WM, не работает. Понятно, что после XReparent, сообщения (ClientMessage) XdndEnter и XdndPosition и др. перехватываются уже главной формой, в которой теперь находится наше клиентское окно, и дальше не идут. Как доставить эти сообщения до клиента?? Пробовал в главной форме полученные сообщения вручную, через XSendEvent доставлять до клиента. Доходят, но обратно не получаю XdndStatus, что-бы его так-же обратно доставить клиенту, в результате чего на этом процесс останавливается. Я так понимаю, некоторые сообщения съедаются в недрах QApplication(как пишут разработчики, умный код). Есть у кого идеи, как запустить драг дроп? Вторую неделю бьюсь. Спасибо. Название: Re: Проблемы с Drag & Drop в самодельном оконном менеджере.. Отправлено: GreatSnake от Июль 11, 2011, 13:35 Понятно, что после XReparent, сообщения (ClientMessage) XdndEnter и XdndPosition и др. перехватываются уже главной формой, в которой теперь находится наше клиентское окно, и дальше не идут. Как доставить эти сообщения до клиента?? Откуда такие умозаключения? D'n'd и WM никоим образом не должны пересекаться.Название: Re: Проблемы с Drag & Drop в самодельном оконном менеджере.. Отправлено: sse от Июль 11, 2011, 14:22 Понятно, что после XReparent, сообщения (ClientMessage) XdndEnter и XdndPosition и др. перехватываются уже главной формой, в которой теперь находится наше клиентское окно, и дальше не идут. Как доставить эти сообщения до клиента?? Откуда такие умозаключения? D'n'd и WM никоим образом не должны пересекаться.а так-же вызываются обработчики dragEnterEvent(), dragMoveEvent().., окна 2 !!! Т.е. получается, что новоиспеченное окно родитель (2) думает, что на него хотят что-то перетащить, хотя это не так, просто мы таскаем какой-то элемент на его окне потомке(2). В общем, фигня какая-то получается. |