PB 6.30 Beta 3 - ScreenGadget library - bug report

Post bugreports for the Windows version here
User avatar
STARGÅTE
Addict
Addict
Posts: 2255
Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:

PB 6.30 Beta 3 - ScreenGadget library - bug report

Post by STARGÅTE »

Fred wrote: Mon Oct 06, 2025 8:26 am 2025-10-06: beta 3 is out, with one big new library: ScreenGadget, thanks to pf-shadoko ! It's also the first official library 100% written in PureBasic. The Window3D and Gadget3D lib based on CEGUI will be deprecated. The examples for the new lib can be found in the Examples/Sources/ScreenGadget.pb and Examples/3D/ScreenGadgetMultipleWindow.pb files. Don't hesitate to send your feedback as the lib is very new.
I'm happy to see that you are also include user libraries into an official PureBasic release.
I hope, other published libraries will follow.

The ScreenGadget library is a good start, but it still needs a lot of work.
Here is my bug report to the ScreenGadget library:
  • When I click on a button, other gadgets or window titles, these events is also triggered when I click somewhere else into the empty space, after the button was clicked ones.
  • ButtonScreenGadget events are triggered, even if the button is pressed but the mouse button is released somewhere else. Usual behavior (e.g. under windows) is that the event is not triggered. To trigger an event, the mouse button must be released over the gadget.
  • Mouse wheel action is inverted on a TrackBarScreenGadget(). The value decreases, when the mouse wheel is rotated up.
  • The TrackBarScreenGadget can be changed by mouse wheel even if it is in the background of an other window, hiding the gadget. Same for scroll areas.
  • IMA on RenderScreenGadgets() when the splitter of the splitter gadget is moved to the far right or far left.
  • You can't select the last item of a ListViewScreenGadget(). Probably, because the invisible scroll bar blocks the event.
  • The rendered image of the ProgressBarScreenGadget is incorrect, when the progress value is very small. The edges a clipped wrongly.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Lizard - Script language for symbolic calculations and moreTypeface - Sprite-based font include/module
User avatar
STARGÅTE
Addict
Addict
Posts: 2255
Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:

Re: PB 6.30 Beta 3 - ScreenGadget library - bug report

Post by STARGÅTE »

Here are some more bugs:
  • IMA at the second call of OpenScreenWindow() when using #PB_Any:

    Code: Select all

    Enumeration
    	#Window
    EndEnumeration
    
    InitSprite()
    InitKeyboard()
    InitMouse()
    
    OpenWindow(#Window, 0, 0, 800, 450, "ScreenGadgets", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(#Window), 0, 0, 800, 450)
    
    InitScreenGadgets()
    
    Window1 = OpenScreenWindow(#PB_Any, 100, 100, 200, 100, "Window 1")
    Window2 = OpenScreenWindow(#PB_Any, 500, 100, 200, 100, "Window 2")
    
    Repeat
    	
    	While WindowEvent()
    	Wend
    	
    	ExamineMouse()
    	ExamineKeyboard()
    	If KeyboardPushed(#PB_Key_Escape)
    		Break
    	EndIf
    	
    	Select ScreenWindowEvent()
    	EndSelect
    	
    	ClearScreen(RGB(0,0,0))
    	RenderScreenGadgets()
    	FlipBuffers()
    	
    ForEver
  • Text in the StringScreenGadget can't be selected, the selection always vanishes immediately

    Code: Select all

    Enumeration
    	#Window
    	#ScreenWindow1
    	#StringScreenGadget1
    EndEnumeration
    
    InitSprite()
    InitKeyboard()
    InitMouse()
    
    OpenWindow(#Window, 0, 0, 800, 450, "ScreenGadgets", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(#Window), 0, 0, 800, 450)
    
    InitScreenGadgets()
    
    OpenScreenWindow(#ScreenWindow1, 100, 100, 200, 200, "Window A")
    StringScreenGadget(#StringScreenGadget1, 10, 30, 180, 24, "Hello World !")
    
    Repeat
    	
    	While WindowEvent()
    	Wend
    	
    	ExamineMouse()
    	ExamineKeyboard()
    	If KeyboardPushed(#PB_Key_Escape)
    		Break
    	EndIf
    	
    	Select ScreenWindowEvent()
    		Case #PB_Event_Gadget
    			
    	EndSelect
    	
    	ClearScreen(RGB(0,0,0))
    	RenderScreenGadgets()
    	FlipBuffers()
    	
    ForEver
  • HideScreenGadget() is inverted, HideScreenGadget(Gadget, 1) shows a gadget and HideScreenGadget(Gadget, 0) hides it, but should be opposite.

    Code: Select all

    Enumeration
    	#Window
    	#ScreenWindow1
    	#ButtonScreenGadget1
    	#ButtonScreenGadget2
    EndEnumeration
    
    InitSprite()
    InitKeyboard()
    InitMouse()
    
    OpenWindow(#Window, 0, 0, 800, 450, "ScreenGadgets", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(#Window), 0, 0, 800, 450)
    
    InitScreenGadgets()
    
    OpenScreenWindow(#ScreenWindow1, 100, 100, 200, 200, "Window A")
    ButtonScreenGadget(#ButtonScreenGadget1, 10, 30, 100, 30, "Button Hidden")
    ButtonScreenGadget(#ButtonScreenGadget2, 10, 70, 100, 30, "Button Visible")
    
    HideScreenGadget(#ButtonScreenGadget1, 1)
    HideScreenGadget(#ButtonScreenGadget2, 0)
    
    Repeat
    	
    	While WindowEvent()
    	Wend
    	
    	ExamineMouse()
    	ExamineKeyboard()
    	If KeyboardPushed(#PB_Key_Escape)
    		Break
    	EndIf
    	
    	Select ScreenWindowEvent()
    		Case #PB_Event_Gadget
    			
    	EndSelect
    	
    	ClearScreen(RGB(0,0,0))
    	RenderScreenGadgets()
    	FlipBuffers()
    	
    ForEver
  • IMA at, RenderScreenGadgets(), when I click on an empty ListViewScreenGadget()

    Code: Select all

    Enumeration
    	#Window
    	#ScreenWindow1
    	#ListViewScreenGadget1
    EndEnumeration
    
    InitSprite()
    InitKeyboard()
    InitMouse()
    
    OpenWindow(#Window, 0, 0, 800, 450, "ScreenGadgets", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(#Window), 0, 0, 800, 450)
    
    InitScreenGadgets()
    
    OpenScreenWindow(#ScreenWindow1, 100, 100, 200, 200, "Window A")
    ListViewScreenGadget(#ListViewScreenGadget1, 10, 30, 180, 160)
    
    Repeat
    	
    	While WindowEvent()
    	Wend
    	
    	ExamineMouse()
    	ExamineKeyboard()
    	If KeyboardPushed(#PB_Key_Escape)
    		Break
    	EndIf
    	
    	Select ScreenWindowEvent()
    		Case #PB_Event_Gadget
    			
    	EndSelect
    	
    	ClearScreen(RGB(0,0,0))
    	RenderScreenGadgets()
    	FlipBuffers()
    	
    ForEver
  • Wrong argument tool tip for CloseScreenGadgetList(#ScreenGadget [, GadgetItem]), should be CloseScreenGadgetList()
  • Wrong argument tool tip for DisableScreenGadget(#ScreenGadget), should be DisableScreenGadget(#ScreenGadget, State)
  • Wrong argument tool tip for HideScreenGadget(#ScreenGadget), should be HideScreenGadget(#ScreenGadget, State)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Lizard - Script language for symbolic calculations and moreTypeface - Sprite-based font include/module
User avatar
STARGÅTE
Addict
Addict
Posts: 2255
Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:

Re: PB 6.30 Beta 3 - ScreenGadget library - bug report

Post by STARGÅTE »

I continued to try everything and noticed some more bugs:
  • When I change the state of an OptionScreenGadget group with SetScreenGadgetState() the old selection is not removed and multiple options are selected.

    Code: Select all

    Enumeration
    	#Window
    	#ScreenWindow1
    	#OptionScreenGadget1
    	#OptionScreenGadget2
    	#OptionScreenGadget3
    EndEnumeration
    
    InitSprite()
    InitKeyboard()
    InitMouse()
    
    OpenWindow(#Window, 0, 0, 800, 450, "ScreenGadgets", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(#Window), 0, 0, 800, 450)
    
    InitScreenGadgets()
    
    OpenScreenWindow(#ScreenWindow1, 100, 100, 200, 200, "Window A")
    OptionScreenGadget(#OptionScreenGadget1, 10, 30, 100, 30, "Option 1")
    OptionScreenGadget(#OptionScreenGadget2, 10, 70, 100, 30, "Option 2")
    OptionScreenGadget(#OptionScreenGadget3, 10, 110, 100, 30, "Option 3")
    
    SetScreenGadgetState(#OptionScreenGadget2, #True)
    SetScreenGadgetState(#OptionScreenGadget3, #True)
    
    Repeat
    	
    	While WindowEvent()
    	Wend
    	
    	ExamineMouse()
    	ExamineKeyboard()
    	If KeyboardPushed(#PB_Key_Escape)
    		Break
    	EndIf
    	
    	Select ScreenWindowEvent()
    		Case #PB_Event_Gadget
    			
    	EndSelect
    	
    	ClearScreen(RGB(0,0,0))
    	RenderScreenGadgets()
    	FlipBuffers()
    	
    ForEver
  • IMA at RenderScreenGadgets() when a ComboBoxScreenGadget() has no item.

    Code: Select all

    Enumeration
    	#Window
    	#ScreenWindow1
    	#ComboBoxScreenGadget
    EndEnumeration
    
    InitSprite()
    InitKeyboard()
    InitMouse()
    
    OpenWindow(#Window, 0, 0, 800, 450, "ScreenGadgets", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(#Window), 0, 0, 800, 450)
    
    InitScreenGadgets()
    
    OpenScreenWindow(#ScreenWindow1, 100, 100, 200, 200, "Window A")
    ComboBoxScreenGadget(#ComboBoxScreenGadget, 10, 30, 100, 30)
    
    Repeat
    	
    	While WindowEvent()
    	Wend
    	
    	ExamineMouse()
    	ExamineKeyboard()
    	If KeyboardPushed(#PB_Key_Escape)
    		Break
    	EndIf
    	
    	Select ScreenWindowEvent()
    		Case #PB_Event_Gadget
    			
    	EndSelect
    	
    	ClearScreen(RGB(0,0,0))
    	RenderScreenGadgets()
    	FlipBuffers()
    	
    ForEver
  • Wrong item order, when using explicit position index (0, 1, 2) in AddScreenGadgetItem():

    Code: Select all

    Enumeration
    	#Window
    	#ScreenWindow1
    	#ListViewScreenGadget
    EndEnumeration
    
    InitSprite()
    InitKeyboard()
    InitMouse()
    
    OpenWindow(#Window, 0, 0, 800, 450, "ScreenGadgets", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(#Window), 0, 0, 800, 450)
    
    InitScreenGadgets()
    
    OpenScreenWindow(#ScreenWindow1, 100, 100, 200, 200, "Window A")
    ListViewScreenGadget(#ListViewScreenGadget, 120, 30, 70, 100)
    AddScreenGadgetItem(#ListViewScreenGadget, 0, "Item 1")
    AddScreenGadgetItem(#ListViewScreenGadget, 1, "Item 2")
    AddScreenGadgetItem(#ListViewScreenGadget, 2, "Item 3")
    
    Repeat
    	
    	While WindowEvent()
    	Wend
    	
    	ExamineMouse()
    	ExamineKeyboard()
    	If KeyboardPushed(#PB_Key_Escape)
    		Break
    	EndIf
    	
    	Select ScreenWindowEvent()
    		Case #PB_Event_Gadget
    			
    	EndSelect
    	
    	ClearScreen(RGB(0,0,0))
    	RenderScreenGadgets()
    	FlipBuffers()
    	
    ForEver
  • The state of a ComboBoxScreenGadget() is not changed, if an item was selected by SetScreenGadgetText().
    Obviously SetScreenGadgetText() just "overwrites" the visual text.

    Code: Select all

    Enumeration
    	#Window
    	#ScreenWindow1
    	#ComboBoxScreenGadget
    EndEnumeration
    
    InitSprite()
    InitKeyboard()
    InitMouse()
    
    OpenWindow(#Window, 0, 0, 800, 450, "ScreenGadgets", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(#Window), 0, 0, 800, 450)
    
    InitScreenGadgets()
    
    OpenScreenWindow(#ScreenWindow1, 100, 100, 600, 200, "Window A")
    ComboBoxScreenGadget(#ComboBoxScreenGadget, 20, 30, 160, 30)
    AddScreenGadgetItem(#ComboBoxScreenGadget, -1, "Item 0")
    AddScreenGadgetItem(#ComboBoxScreenGadget, -1, "Item 1")
    AddScreenGadgetItem(#ComboBoxScreenGadget, -1, "Item 2")
    
    SetScreenGadgetText(#ComboBoxScreenGadget, "Item 2")
    Debug GetScreenGadgetState(#ComboBoxScreenGadget) ; Should be 2
    
    Repeat
    	
    	While WindowEvent()
    	Wend
    	
    	ExamineMouse()
    	ExamineKeyboard()
    	If KeyboardPushed(#PB_Key_Escape)
    		Break
    	EndIf
    	
    	Select ScreenWindowEvent()
    		Case #PB_Event_Gadget
    			Debug GetScreenGadgetText(#ComboBoxScreenGadget)
    	EndSelect
    	
    	ClearScreen(RGB(0,0,0))
    	RenderScreenGadgets()
    	FlipBuffers()
    	
    ForEver
  • When an item is removed with RemoveScreenGadgetItem() in front of an item with was selected, the selected item is changed. But in such case the selection (status value) must be adjusted by -1.

    Code: Select all

    Enumeration
    	#Window
    	#ScreenWindow1
    	#ListViewScreenGadget
    EndEnumeration
    
    InitSprite()
    InitKeyboard()
    InitMouse()
    
    OpenWindow(#Window, 0, 0, 800, 450, "ScreenGadgets", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(#Window), 0, 0, 800, 450)
    
    InitScreenGadgets()
    
    OpenScreenWindow(#ScreenWindow1, 100, 100, 200, 200, "Window A")
    ListViewScreenGadget(#ListViewScreenGadget, 120, 30, 70, 100)
    AddScreenGadgetItem(#ListViewScreenGadget, -1, "Item 0")
    AddScreenGadgetItem(#ListViewScreenGadget, -1, "Item 1")
    AddScreenGadgetItem(#ListViewScreenGadget, -1, "Item 2")
    AddScreenGadgetItem(#ListViewScreenGadget, -1, "Item 3")
    AddScreenGadgetItem(#ListViewScreenGadget, -1, "Item 4")
    
    SetScreenGadgetState(#ListViewScreenGadget, 2)
    RemoveScreenGadgetItem(#ListViewScreenGadget, 1)
    
    Repeat
    	
    	While WindowEvent()
    	Wend
    	
    	ExamineMouse()
    	ExamineKeyboard()
    	If KeyboardPushed(#PB_Key_Escape)
    		Break
    	EndIf
    	
    	Select ScreenWindowEvent()
    		Case #PB_Event_Gadget
    	EndSelect
    	
    	ClearScreen(RGB(0,0,0))
    	RenderScreenGadgets()
    	FlipBuffers()
    	
    ForEver
  • Wrong argument tool tip for RemoveScreenGadgetItem(#ScreenGadget, Position, Test$), should be RemoveScreenGadgetItem(#ScreenGadget, Position)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Lizard - Script language for symbolic calculations and moreTypeface - Sprite-based font include/module
User avatar
HeX0R
Addict
Addict
Posts: 1211
Joined: Mon Sep 20, 2004 7:12 am
Location: Hell

Re: PB 6.30 Beta 3 - ScreenGadget library - bug report

Post by HeX0R »

If I ever need a beta tester, I might reach out to STARGÅTE :mrgreen:
User avatar
STARGÅTE
Addict
Addict
Posts: 2255
Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:

Re: PB 6.30 Beta 3 - ScreenGadget library - bug report

Post by STARGÅTE »

HeX0R wrote: Sun Oct 12, 2025 10:42 am If I ever need a beta tester, I might reach out to STARGÅTE :mrgreen:
Bug hunter since 2008 :twisted:
Maybe I just find more bugs because I'm looking for them as a programmer not as a user :oops: .
If you have written a similar library yourself, you know what you are looking for.
Forgive me, pf shadoko, I know writing a GUI like this is a shitty job.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Lizard - Script language for symbolic calculations and moreTypeface - Sprite-based font include/module
User avatar
Piero
Addict
Addict
Posts: 1034
Joined: Sat Apr 29, 2023 6:04 pm
Location: Italy

Re: PB 6.30 Beta 3 - ScreenGadget library - bug report

Post by Piero »

STARGÅTE wrote: Sun Oct 12, 2025 10:59 amForgive me, pf shadoko
If """criticizing""" is a form of disrespect you need to apologize for, why didn't Fred ban me since my 1st post? 🤔

Edit/Note: my 1st post here was a BIG WARNING to EVERYONE about runprogram MALFUNCTIONING :mrgreen: :lol:
User avatar
pf shadoko
Enthusiast
Enthusiast
Posts: 407
Joined: Thu Jul 09, 2015 9:07 am

Re: PB 6.30 Beta 3 - ScreenGadget library - bug report

Post by pf shadoko »

@STARGÅTE
I didn't see your bug report.
Professional work!
I'll try to fix it today.
Post Reply