Post bugreports for the Windows version here
STARGÅTE
Addict
Posts: 2255 Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:
Post
by STARGÅTE » Mon Oct 06, 2025 11:14 am
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.
STARGÅTE
Addict
Posts: 2255 Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:
Post
by STARGÅTE » Tue Oct 07, 2025 7:29 pm
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)
STARGÅTE
Addict
Posts: 2255 Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:
Post
by STARGÅTE » Sun Oct 12, 2025 9:50 am
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)
HeX0R
Addict
Posts: 1211 Joined: Mon Sep 20, 2004 7:12 am
Location: Hell
Post
by HeX0R » Sun Oct 12, 2025 10:42 am
If I ever need a beta tester, I might reach out to STARGÅTE
STARGÅTE
Addict
Posts: 2255 Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:
Post
by STARGÅTE » Sun Oct 12, 2025 10:59 am
HeX0R wrote: Sun Oct 12, 2025 10:42 am
If I ever need a beta tester, I might reach out to STARGÅTE
Bug hunter since 2008
Maybe I just find more bugs because I'm looking for them as a programmer not as a user
.
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.
Piero
Addict
Posts: 1034 Joined: Sat Apr 29, 2023 6:04 pm
Location: Italy
Post
by Piero » Tue Oct 14, 2025 4:16 pm
STARGÅTE wrote: Sun Oct 12, 2025 10:59 am Forgive 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
pf shadoko
Enthusiast
Posts: 407 Joined: Thu Jul 09, 2015 9:07 am
Post
by pf shadoko » Thu Oct 16, 2025 7:44 am
@STARGÅTE
I didn't see your bug report.
Professional work!
I'll try to fix it today.