Höhe Titelleiste + Fensterrahmen unter Linux?

Höhe Titelleiste + Fensterrahmen unter Linux?

Beitragvon MmVisual » 8. Dez 2011, 22:32 Höhe Titelleiste + Fensterrahmen unter Linux?

Hallo,

Ich wüste gerne wie ich diese Zahlen unter Linux erfahre...

So geht das unter Windows:
Code: Alles auswählen
iH := GetSystemMetricsMm(4) + (GetSystemMetricsMm(32) * 2); // Höhe Titelleiste + Fensterrahmen
iW := ...


Für Linux hab ich nichts gefunden.

Könnt Ihr mir helfen?

Vielen Dank.

Grüße Markus.
Zuletzt geändert von Lori am 9. Dez 2011, 15:39, insgesamt 1-mal geändert.
Grund: Highlighter
MmVisual
 
Beiträge: 1109
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon mse » 9. Dez 2011, 09:20 Re: Höhe Titelleiste + Fensterrahmen unter Linux?

_NET_FRAME_EXTENTS wenn der window manager es unterstützt
http://standards.freedesktop.org/wm-spec/1.3/ar01s05.html
oder das Dekorationsfenster herausfinden und den Rahmen aus den Fensterpositionen und Abmessungen errechnen.
MSEgui hat für den Zweck getwindowframe() in lib/common/kernel/i386-linux/mseguiintf.pas. Zudem ist twidget.widgetrect immer der client Bereich, die Abmessungen des Rahmenfensters können mit den twidget.window.decorated* properties abgefragt werden.

Martin
mse
 
Beiträge: 2013
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon theo » 9. Dez 2011, 12:00 Re: Höhe Titelleiste + Fensterrahmen unter Linux?

MmVisual hat geschrieben:Für Linux hab ich nichts gefunden.
Könnt Ihr mir helfen?


Die interessanteste Frage ist: Wozu?
theo
 
Beiträge: 8255
Registriert: 11. Sep 2006, 18:01

Beitragvon MmVisual » 9. Dez 2011, 12:57 Re: Höhe Titelleiste + Fensterrahmen unter Linux?

Ich habe ein Bildvorschaufenster, mit Scrollbox und TImage.
Das Fenster wird je nach Bild automatisch der Screen.WorkArea angepasst und man kann darin auch noch mit dem Maus-Rad zoomen, wobei dann das Fenster bis zur maximalen Screen.WorkArea vergrößert wird und danach erscheinen die Scrollbalken.

Unter Windows sieht das jetzt nicht so schlecht aus, aber ich muss extra die Fenster-Rahmen mit berechnen, ansonsten sitzt das Fenster so halb neben dem Bildschirm und das sieht kacke aus.
MmVisual
 
Beiträge: 1109
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon theo » 9. Dez 2011, 23:36 Re: Höhe Titelleiste + Fensterrahmen unter Linux?

Ich würde mse's Hinweis nachgehen.
Vllt. kann dir meine Winlist Demo behilflich sein mit den X-Zeug. http://www.theo.ch/lazarus/winlist.zip
theo
 
Beiträge: 8255
Registriert: 11. Sep 2006, 18:01

Beitragvon MmVisual » 10. Dez 2011, 00:00 Re: Höhe Titelleiste + Fensterrahmen unter Linux?

Vielen Dank, theo.

Ich habe mein Code mal in der Virtual Box unter Ubuntu kompiliert und gestartet. Wenn ich zoome, dann wird das Fenster so vergrößert, dass die Rand-Leisten nicht überdeckt werden. Ich vermute, das macht Linux automatisch so (oder die GUI), ich weiß es nicht so genau.
In jedem Fall sieht das Resultat nicht so schlecht aus.
Daher lasse ich das erst mal so.
Ich arbeite ohnehin nicht mit Linux, wenn jemand die EXE unter Linux benutzt und es tut nicht richtig, dann soll derjenige mich anschreiben und ich kümmere mich dann weiter.

Die MSEGui kann ich nicht verwenden und wollte diese jetzt auch nicht installieren.

Ich dachte, es gäbe eine einfache Möglichkeit oder da gibt es schon was im FPC, aber offensichtlich nicht.

Grüße Markus.
MmVisual
 
Beiträge: 1109
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon pluto » 11. Dez 2011, 10:38 Re: Höhe Titelleiste + Fensterrahmen unter Linux?

Ich dachte, es gäbe eine einfache Möglichkeit oder da gibt es schon was im FPC, aber offensichtlich nicht.

Die gibt es bestimmt. Die Frage ist nur wo und wie diese aussieht. FPC ist deartig groß, dass man Jahre braucht um soetwas zu finden. Dann kommt aber noch ein Problem hinzu:
Die verschiedenen Desktop bzw. Fenster Manager.

Es gab mal ein Fenster Manager der wurde mit Lazarus erstellt. Habe den Namen gerade nicht Parat, aber ich konnte ihn mal Kompilieren und sogar Starten. Vielleicht findest du da weitere Infos.

Du kannst auch mit ClientWidht und ClientHeight Arbeiten. Da werden Automatisch die Fenster Rahmen stärke und die Höhe der Titelleiste abgezogen.
MFG
Michael Springwald
Aktuelles Projekt: ContentManager2(Ehmals NoteManager2).
pluto
Lazarusforum e. V.
 
Beiträge: 7039
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg(Oldenburg)
OS, Lazarus, FPC: Linux Mint 19.2 | 
CPU-Target: AMD
Nach oben

Beitragvon MmVisual » 11. Dez 2011, 11:24 Re: Höhe Titelleiste + Fensterrahmen unter Linux?

>> Dann kommt aber noch ein Problem hinzu: Die verschiedenen Desktop bzw. Fenster Manager.
Ja, genau deshalb frage ich nach der implementierten Lazarus-Lösung.

>> Es gab mal ein Fenster Manager der wurde mit Lazarus erstellt.
MSEgui

Wo anders habe ich gelesen (Freepascal-Doku), dass mit den "ClientWidth" das nicht geht, die haben die gleichen Werte wie Width.
MmVisual
 
Beiträge: 1109
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon theo » 11. Dez 2011, 11:34 Re: Höhe Titelleiste + Fensterrahmen unter Linux?

MmVisual hat geschrieben:>> Dann kommt aber noch ein Problem hinzu: Die verschiedenen Desktop bzw. Fenster Manager.
Ja, genau deshalb frage ich nach der implementierten Lazarus-Lösung.


Klingt vllt. etwas merkwürdig, aber eigentlich fällt das aus dem Zuständigkeitsbereich von GTK, QT etc. raus.
Die Titel-bars und Ränder gehören dem Window Manager.
Ich glaube nicht, dass es da was gibt in der LCL. Man sollte vllt. andere Lösungen suchen.
Wenn es unbedingt nötig ist, muss man X bemühen (wie oben gezeigt). Viel Spaß.

P.S. msegui ist kein Window Manager.
theo
 
Beiträge: 8255
Registriert: 11. Sep 2006, 18:01

Beitragvon pluto » 11. Dez 2011, 13:15 Re: Höhe Titelleiste + Fensterrahmen unter Linux?

Wo anders habe ich gelesen (Freepascal-Doku), dass mit den "ClientWidth" das nicht geht, die haben die gleichen Werte wie Width.

Ja, nur wenn es keine ScrollBalken gibt. Aber Widht und Height müssten ohne Titelleiste sein und ohne Rahmen.
MFG
Michael Springwald
Aktuelles Projekt: ContentManager2(Ehmals NoteManager2).
pluto
Lazarusforum e. V.
 
Beiträge: 7039
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg(Oldenburg)
OS, Lazarus, FPC: Linux Mint 19.2 | 
CPU-Target: AMD
Nach oben

• Themenende •

Zurück zu Linux



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried