Seite 1 von 2

Toolbar Problem Linux - Windows

Verfasst: 17.03.2009 10:58
von ts-soft
Unter Windows zählt die Toolbar zur Arbeitsfläche, während es unter Linux
nicht so ist.

Dies sollte unter allen OS gleich gehandhabt werden, weil das Layouten doch
ziemlich erschwert wird.

Beispiel: Einen Button direkt unter die Toolbar setzen

Code: Alles auswählen

; windows
If OpenWindow(0, 0, 0, 150, 70, "ToolBar", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreateToolBar(0, WindowID(0))
    ToolBarStandardButton(0, #PB_ToolBarIcon_New)
    ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
    ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
  EndIf
  ButtonGadget(0, 5, ToolBarHeight(0), 140, 25, "void") ; < --
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow 
EndIf
; linux
If OpenWindow(0, 0, 0, 150, 70, "ToolBar", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreateToolBar(0, WindowID(0))
    ToolBarStandardButton(0, #PB_ToolBarIcon_New)
    ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
    ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
  EndIf
  ButtonGadget(0, 5, 0, 140, 25, "void") ; < --
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow 
EndIf
Mir ist zwar klar, das das Layout zwischen verschiedenen OS nie
übereinstimmt, ich bin aber der Meinung, zumindest in diesem Fall
unnötig, somit ein Bug ist.

Gruß
Thomas

Verfasst: 17.03.2009 11:19
von Kaeru Gaman
hm.... ist das jetzt ein koordinatenproblem oder wie muss ich das verstehen?

ich bezweifle, dass sich da wirklich was machen läßt, das ist nämlich auch wieder Sache des OS.
es wird nicht unter, sondern von den OS gehandhabt, kann also kein PB-Bug sein.

was meinst du, wie doof ich geguckt hab, als ich gesehen hab,
dass die Menus unter Windows nicht zur Arbeitsfläche gehören.
man erzeugt ein Fenster mit Y höhe, es hat aber nur Y-MenuHeight...
das würde ich auch klar als Bug bezeichnen, aber als einen von Windows.

würde es denn Abhilfe schaffen, wenn du auf beiden Systemen mit GDI+ deine Fenster layoutest?
ich hatte vor längerem mal nen tip in der Richtung gelesen...

ob es sich aber lohnt, ALLE betroffenen PB-Libs so umzuschreiben,
dass die übergebenen Werte nicht mehr den API-Werten entsprechen,
dafür aber konsistent und sinnvoll sind, ist die Frage.

das würde z.b. bedeuten, dass wenn ich ein Fenster öffne mit 100 Y im Aufruf,
dass es nicht nur wie bisher, 100 + Kopfleiste + Rahmen hoch ist,
sondern 100+ Kopfleiste + Rahmen + Menu + Toolbars.
das würde gleichzeitig bedeuten, dass mein Fenster seine größe ändern müsste,
wenn ich toolbars dazuschalte oder verberge...

Verfasst: 17.03.2009 11:27
von DarkDragon
Kaeru Gaman hat geschrieben:würde es denn Abhilfe schaffen, wenn du auf beiden Systemen mit GDI+ deine Fenster layoutest?
Microsoft GDI+ unter Linux? Oder meintest du GTK? Btw.: Das ist kein Bug von Windows, das ist eher einer von PB. Das war nämlich mal unter Windows so mit PB, dass man nicht die Clientarea hatte sondern das komplette Fenster. Unter Linux scheint das demnach noch so zu sein. Das wollten einige mal geändert haben in PB 3.81 oder so.

Verfasst: 17.03.2009 11:28
von ts-soft
Aber es kann ja nicht sein, das in einer Sprache die Toolbar mal zur
Arbeitsfläche gehören und mal nicht.

Kann doch nicht so schwer sein, das abzustellen?

Es wäre auf jedenfall einfacher, wenn die Toolbar nicht zur Arbeitsfläche
gehört, weil das macht auch resizen usw. einfacher. Wer dann unter Windows
unbedingt was über die Toolbar packen will (ob das Sinn macht), der kann ja
mit Minuskoordinaten arbeiten, ist ja dann sowieso der Ausnahmefall.

Tausende von CompilerIfs im Source bringens ja auch nicht, da kann ich
gleich einen Source je OS schreiben :wink:

nur meine 2 eurocents dazu

Verfasst: 17.03.2009 11:29
von Kaeru Gaman
DarkDragon hat geschrieben:
Kaeru Gaman hat geschrieben:würde es denn Abhilfe schaffen, wenn du auf beiden Systemen mit GDI+ deine Fenster layoutest?
Microsoft GDI+ unter Linux? Oder meintest du GTK?
achja... genau.
wahrscheinlich meine ich dann GTK.

na, auf jeden fall das, womit man normal auf LINUX seine fensterle layoutet und das man auf Windows auch benutzen kann...

... immer diese unkommentierten dreibuchstabigen Abkürzungen.

Verfasst: 17.03.2009 11:35
von Kaeru Gaman
Das ist kein Bug von Windows, das ist eher einer von PB. Das war nämlich mal unter Windows so mit PB, dass man nicht die Clientarea hatte sondern das komplette Fenster. Unter Linux scheint das demnach noch so zu sein. Das wollten einige mal geändert haben in PB 3.81 oder so.
wie jetzt... also "früher" zählten Menu und Toolbar zur Clientarea?

also
1.) ich stimme ts zu, dass es grundsätzlich konsistent sein sollte, also auf alles Plattformen gleich.

und
2.) sollte es auch in sich konsistent sein, damit meine ich,
wenn Toolbar und Menu nicht zur Clientarea gehören,
dann soll ihre Höhe weder bei den Größenangaben des Fensters noch bei den Koordinaten der Gadgets mitgezählt werden.

Verfasst: 17.03.2009 11:45
von ts-soft
> wenn Toolbar und Menu nicht zur Clientarea gehören,
so ist das unter Linux, unter Windows gehört nur das Menu nicht zur
Clientarea.

Einheitlich wäre alles einfacher :wink:

Verfasst: 17.03.2009 11:48
von DarkDragon
ts-soft hat geschrieben:> wenn Toolbar und Menu nicht zur Clientarea gehören,
so ist das unter Linux, unter Windows gehört nur das Menu nicht zur
Clientarea.

Einheitlich wäre alles einfacher :wink:
Vielleicht sollte man die Befehle etwas erweitern:

CreateMenu(..., InsideClientArea)
CreateToolbar(..., InsideClientArea)

Und wenn man sich für Inside entscheidet, gibt es ja noch die Befehle:

MenuHeight()
ToolBarHeight(#ToolBar)

P.S.: Ich würde einfach alle Gadgets erstellen und da man ja sowieso so eine Resize-Prozedur erstellt zum aktualisieren der Größen könnte man ja die danach aufrufen zum korrekten Platzieren in Abhängigkeit der Fensterdimension/Toolbarposition/Statusbarposition/Menüposition.

Verfasst: 17.03.2009 12:00
von ts-soft
DarkDragon hat geschrieben: Vielleicht sollte man die Befehle etwas erweitern:

CreateMenu(..., InsideClientArea)
CreateToolbar(..., InsideClientArea)

Und wenn man sich für Inside entscheidet, gibt es ja noch die Befehle:

MenuHeight()
ToolBarHeight(#ToolBar)
Das hört sich ganz gut an!
DarkDragon hat geschrieben: P.S.: Ich würde einfach alle Gadgets erstellen und da man ja sowieso so eine Resize-Prozedur erstellt zum aktualisieren der Größen könnte man ja die danach aufrufen zum korrekten Platzieren in Abhängigkeit der Fensterdimension/Toolbarposition/Statusbarposition/Menüposition.
Ich erstelle in Resizeable Fenster eigentlich alles mit der größe 0, 0, 0, 0
aber das mag Linux wohl auch nicht. Aber damit kann man ja leben, wenn
man es weiß

Re: Toolbar Problem Linux - Windows

Verfasst: 07.06.2014 11:36
von Simon74
Ich habe dasselbe Problem unter Linux.
Der Eintrag ist 5 Jahre alt, aber es gibt noch keine Lösung dafür ?
Ausserdem noch das Problem das GadgetToolTip unter Windows immer funktioniert, unter Linux leider nicht immer.