Schönheitsfehler: ComboBox unter Linux

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Plenz
Beiträge: 38
Registriert: 05.05.2021 01:19

Schönheitsfehler: ComboBox unter Linux

Beitrag von Plenz »

Wenn die ComboBox so viele Einträge hat, dass nicht sämtliche Einträge angezeigt werden können, dann wird die Liste mit den Einträgen nach dem Ausklappen nach oben verschoben, um den Platz besser auszunutzen. Das ist ja eigentlich völlig OK, aber weil die Liste sich dabei über die ComboBox schiebt, geraten die Einträge zwangsläufig unter den Mauszeiger, und schon wird ein anderer Eintrag aktiviert als der ursprünglich vorgewählte Eintrag.

Also angenommen, die ComboBox hat nur 10 Einträge und der 5. Eintrag ist vorgewählt. Wenn man auf den Pfeil klickt, klappt die Liste UNTERHALB der ComboBox auf, und der 5. Eintrag ist "gehighlightet".

Angenommen, die ComboBox hat 70 Einträge und der 30. Eintrag ist vorgewählt. Wenn man auf den Pfeil klickt, klappt die Liste auf, und weil sie so lang ist, wird nur ein Teil der Liste dargestellt, und das obere Ende davon wird so hoch platziert, dass die ComboBox von der Liste bedeckt ist und der Cursor dadurch zwangsläufig einen der obersten Einträge "highlightet". Wenn man jetzt z.B. den 31. Eintrag auswählen möchte, muss man erst wieder entsprechend weit runterscrollen.

Ich hoffe, ich habe mich verständlich ausgedrückt, anderenfalls müsste ich irgendwo einen Screenshot hochladen.

Unter Windows tritt dies nicht auf, da werden auch lange Listen je nach Platz verkleinert und korrekt über oder unter der ComboBox dargestellt, ohne sie zu überdecken.

Ein weiterer Schönheitsfehler, der nur unter Linux (Mint 19.3) auftritt: die Einträge der ausgeklappten Liste haben unnötig größe Zwischenräume.
Benutzeravatar
Waldixxl
Beiträge: 107
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Re: Schönheitsfehler: ComboBox unter Linux

Beitrag von Waldixxl »

Hallo Plenz
Kann das von dir beschrieben Verhalten nicht nachvollziehen. Ich verwende Ubuntu Mate
das Beisiel aus der Hilfe öffnet immer den voreingestellten Eintrag.

Code: Alles auswählen

  If OpenWindow(0, 0, 0, 270, 180, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ComboBoxGadget(2, 10, 70, 250, 21)
      For a = 0 To 100
        AddGadgetItem(2, -1,"ComboBox item " + Str(a))
      Next
    
	SetGadgetState(2, 49)
    
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
  
Sollt das nicht so gehen liegt das Problem an Mint 19.3
Walter
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Plenz
Beiträge: 38
Registriert: 05.05.2021 01:19

Re: Schönheitsfehler: ComboBox unter Linux

Beitrag von Plenz »

liegt das Problem an Mint 19.3
Zugegeben, ich weiß nicht viel über Linux, aber es würde mich sehr wundern, wenn Sachen wie die Darstellung einer Combobox bei jeder Distribution neu programmiert werden müsste.
Benutzeravatar
Waldixxl
Beiträge: 107
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Re: Schönheitsfehler: ComboBox unter Linux

Beitrag von Waldixxl »

mich auch?
was hat der Test mit meinem Code ergeben??
Walter
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Benutzeravatar
mk-soft
Beiträge: 3307
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Schönheitsfehler: ComboBox unter Linux

Beitrag von mk-soft »

Bei Ubuntu, das eigentlich auch die Basic von Mint ist, tritt diese nicht auf.
Auch bei einer sehr langen liste, ist das vorgewählte Item aktiv.

Nicht vergessen auch den EventType() beim Gadget Event abzufragen.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 270, 180, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ComboBoxGadget(2, 10, 70, 250, 21)
  For a = 0 To 50
    AddGadgetItem(2, -1,"ComboBox item " + Str(a))
  Next
  
  SetGadgetState(2, 25)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 2
            Select EventType()
              Case #PB_EventType_Change
                Debug "Change: " + GetGadgetState(2)
                
              Case #PB_EventType_Focus
                Debug "Focus"
                
              Case #PB_EventType_LostFocus
                Debug "LostFocus"
                
            EndSelect
            
        EndSelect
        
    EndSelect
    
  ForEver
  
EndIf
P.S.
Habe es mal mit Mint 19 (Cinnamon v3.8.9) getestet. Auch hier ist das aktive Item selektiert.
Muss also wo anders dran liegen.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.7x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace
Plenz
Beiträge: 38
Registriert: 05.05.2021 01:19

Re: Schönheitsfehler: ComboBox unter Linux

Beitrag von Plenz »

Ich verstehe es nicht. Dein Beispiel funktioniert einwandfrei.

Auf die Repeat-Schleife kommt es gar nicht an, die kann ich komplett leer machen, es ändert nichts.

Versuche bitte mal meinen Code:

Code: Alles auswählen

If OpenWindow(0, 100, 100, 1010, 590, "Thumbnails", #PB_Window_SystemMenu)
  l = 5 : w = 100
  ButtonGadget(1, l, 5, w, 35, "Hintergrund")
  l = l + w + 5
  ButtonGadget(3, l, 5, w, 35, "neuer Text")
  l = l + w + 5 : w = 230
  StringGadget(4, l, 6, w, 34, "")
  l = l + w + 5 : w = 85
  ButtonGadget(5, l, 5, w, 35, "Textfarbe")
  l = l + w + 5 : w = 95
  ComboBoxGadget(6, l, 6, w, 34, #PB_ComboBox_Editable)
  For i = 0 To 90
    AddGadgetItem(6, -1, Str(i) + " Px")
  Next
  SetGadgetState(6, 30) 
  l = l + w + 5 : w = 75
  CheckBoxGadget(7, l, 2, w, 15, "Fett")
  CheckBoxGadget(8, l, 22, w, 15, "2. Zeile")
  l = l + w + 5 : w = 85
  ButtonGadget(9, l, 5, w, 35, "ordnen")
  w = 95 : l = 1010 - w - 105
  ButtonGadget(10, l, 5, w, 35, "alles neu")
  w = 95 : l = 1010 - w - 5
  ButtonGadget(13, l, 5, w, 35, "Speichern")
  CanvasGadget(12, 5, 45, 960, 540, #PB_Canvas_Border)
  TrackBarGadget(11, 970, 45, 30, 540, 0, 20, #PB_TrackBar_Vertical | #PB_TrackBar_Ticks)
       
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow  ; If the user has pressed on the close button
EndIf
End
Bevor du auf die ComboBox klickst, schiebe das Fenster so weit nach unten, dass sein unterer Rand gerade noch sichtbar ist. Sollte das Phänomen nicht auftreten, verschiebe das Fenster mal eine halbe Zeile nach oben.
Bild
Benutzeravatar
mk-soft
Beiträge: 3307
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Schönheitsfehler: ComboBox unter Linux

Beitrag von mk-soft »

Ist ne Macke mit dem Flag "#PB_ComboBox_Editable". Da funktioniert wohl die Auswahlbox etwas andern ...
Ne Lösung habe ich zur Zeit nicht. (Ausser das Flag "#PB_ComboBox_Editable" weg zu lassen)


Kleiner tipp noch.
GTK3 Erstellt die ButtonGadget größer als den angegebenen Wert, wenn der Text nicht rein Passt.
Daher sind manchmal die Gadget überlappend.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.7x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace
Plenz
Beiträge: 38
Registriert: 05.05.2021 01:19

Re: Schönheitsfehler: ComboBox unter Linux

Beitrag von Plenz »

Also, ich sehe nicht, dass sich etwas ändert, wenn ich den Flag "#PB_ComboBox_Editable" weglasse.

Aber so wichtig ist das nicht, deshalb habe ich ja "Schönheitsfehler" geschrieben und nicht "Bug".

Die Lösung ist für mich, die Anzahl der Einträge zu reduzieren. Die Auswahl soll die Fontgröße für Texte festlegen, da kann man zwischen den größeren Zahlen ruhig ein paar Werte weglassen. Auf diese Weise komme ich jetzt auf ca. 20 Einträge, und dabei tritt dieses Phänomen nicht auf.
Antworten