Как определить область Desktop-а с учетом Taskbar-а ?

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 5058
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: Как определить область Desktop-а с учетом Taskbar-а ?

Post by ONEEYEMAN » Wed Mar 31, 2021 3:37 pm

@T-Rex,
Ne sovsem tak.
Ramery okna ne izvestnu poka okno ne budet polnostju otrisovano (fully realized).
Delo v tom chtpo pod *nix, uchityvajutsja decorations, a oni ne izvestny do samogo poslednego momenta. I esche nugno uchityvat razlichnye temy, kotorye mogut menyat razmer decorations, zagolovka, i.t.d.

Zadacha sovsem ne trivialnaja i prosche ispolzovat biblioteku GTK/Qt/wxWidgets. ;-)

Vo vsjakom sluchae tak bylo pod X11. Kak naschet Wayland - ne znaju. Tam svoi priomochki.

User avatar
T-Rex
Moderator
Moderator
Posts: 1204
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Re: Как определить область Desktop-а с учетом Taskbar-а ?

Post by T-Rex » Thu Apr 01, 2021 9:09 am

Вроде как-то так должно работать. Получение размеров максимизированного окна до показа основного UI.
Всякие там размеры бордеров и window decorations можно получить через wxSystemSettings.

Но в целом, если все рисуется через OpenGL, то лучше использовать wxEVT_SIZE для указанию GL контексту нового размера при изменении размера окна. Это будет работать и с максимизацией и просто с ручным изменением. Задавать размер один раз при старте приложения - неправильно. При изменении геометрии (например, при переключении мониторов или при изменении разрешения экрана) будут проблемы с отрисовкой.
Attachments
wxTest.zip
(10.32 KiB) Downloaded 16 times

ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 5058
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: Как определить область Desktop-а с учетом Taskbar-а ?

Post by ONEEYEMAN » Thu Apr 01, 2021 12:03 pm

T-Rex,
Это работает под Wayland and X11?

Спасибо.

User avatar
T-Rex
Moderator
Moderator
Posts: 1204
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Re: Как определить область Desktop-а с учетом Taskbar-а ?

Post by T-Rex » Thu Apr 01, 2021 2:21 pm

Без понятия. под ругой была Ubuntu с Gnome Shell. Там работает. С остальными десктоп менеджерами - проверяй :)

Code: Select all

[email protected]:/home/t-rex# wmctrl -m
Name: GNOME Shell
Class: N/A
PID: N/A

И да. напоминаю, что любой десктоп менеджер - это сторонняя поделка стороннего разработчика, которая ВНЕЗАПНО! может заработать под определенным дистрибутивом. Единственная общая штука - это то, что все они умеют работать с X сервером, подозреваю что на чистых иксах без desktop manager'а должно работать корректно. Может быть такое что для определенного desktop manager'а нужно использовать именно встроенное API этого desktop manager'а.

UPD:
Поставил gnome-session-wayland, на Ubuntu on Wayland - вроде работает.
С GNOME on Xorg - тоже работает

ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 5058
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: Как определить область Desktop-а с учетом Taskbar-а ?

Post by ONEEYEMAN » Thu Apr 01, 2021 3:44 pm

T-Rex,
Interesno.
A aka naschet chistogo Wayland?

Spasibo.

User avatar
T-Rex
Moderator
Moderator
Posts: 1204
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Re: Как определить область Desktop-а с учетом Taskbar-а ?

Post by T-Rex » Fri Apr 02, 2021 8:34 am

Ну не, это сложно. Я и так достаточно времени на это потратил из спортивного интереса. На чистом Wayland проверяйте самостоятельно. Код я дал ;)

ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 5058
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: Как определить область Desktop-а с учетом Taskbar-а ?

Post by ONEEYEMAN » Fri Apr 02, 2021 11:55 am

T-Rex,
Разве что из спортивного интереса.
А вообще ЛП в корне не прав лн просто потерял идею использования кросс-платформенной биьлиотеки.

Но это ткма для отдельного разговора...

Спасибо.

Post Reply