EventType() #PB_EventType_SizeGadget for CanvasGadget()
to redraw custom gadgets after this resize event.
Maybe also:
#PB_EventType_CloseGadget for freeing data.
#PB_EventType_MoveGadget after moving the gadget to display new content.
#PB_EventType_Timer for timers that are only for my custom CanvasGadget.
EventType() #PB_EventType_SizeGadget for CanvasGadget()
Re: EventType() #PB_EventType_SizeGadget for CanvasGadget()
I'd love the timer event 

Re: EventType() #PB_EventType_SizeGadget for CanvasGadget()
The reason i ask for this CanvasGadget events:
If you want to make independent new gadgets, you need this events.
If users do ResizeGadget with my custom gadget, i need to know
about it to redraw the custom gadget.
example:
After adding some more events, the user of the custom control could just write:
So all events could be handled in MyGadgetEvents(). Makes it easier for the user of the custom gadget and for the developer of the new gadget. 
If you want to make independent new gadgets, you need this events.
If users do ResizeGadget with my custom gadget, i need to know
about it to redraw the custom gadget.
example:
Code: Select all
; --------------------- MyGadget.pbi
#PB_EventType_Timer = $7A7B7C7D
#PB_EventType_SizeGadget = $8A8B8C8D
Procedure DrawMyGadget(gadget)
If StartDrawing( CanvasOutput(gadget) )
width = GadgetWidth(gadget)
height = GadgetHeight(gadget)
Box(0,0,width,height,$FFFFFF)
For x = 0 To width Step 50
For y = 0 To height Step 25
Box(x+25*flip,y,25,25,RGBA($80,$80,$80,$FF))
flip!1
Next y
Next x
DrawingMode(#PB_2DDrawing_Outlined)
Box(0,0,width,height,0)
StopDrawing()
EndIf
EndProcedure
Procedure MyGadgetEvents(EventGadget,EventType)
Select EventType
Case #PB_EventType_MouseEnter : Debug "The mouse cursor entered the gadget"
Case #PB_EventType_MouseLeave : Debug "The mouse cursor left the gadget"
Case #PB_EventType_MouseMove : Debug "The mouse cursor moved"
Case #PB_EventType_MouseWheel : Debug "The mouse wheel was moved"
Case #PB_EventType_LeftButtonDown : Debug "The left mouse button was pressed"
Case #PB_EventType_LeftButtonUp : Debug "The left mouse button was released"
Case #PB_EventType_LeftClick : Debug "A click With the left mouse button"
Case #PB_EventType_LeftDoubleClick : Debug "A double-click With the left mouse button"
Case #PB_EventType_RightButtonDown : Debug "The right mouse button was pressed"
Case #PB_EventType_RightButtonUp : Debug "The right mouse button was released"
Case #PB_EventType_RightClick : Debug "A click With the right mouse button"
Case #PB_EventType_RightDoubleClick: Debug "A double-click With the right mouse button"
Case #PB_EventType_MiddleButtonDown: Debug "The middle mouse button was pressed"
Case #PB_EventType_MiddleButtonUp : Debug "The middle mouse button was released"
Case #PB_EventType_Focus : Debug "The gadget gained keyboard focus"
Case #PB_EventType_LostFocus : Debug "The gadget lost keyboard focus"
Case #PB_EventType_KeyDown : Debug "A key was pressed"
Case #PB_EventType_KeyUp : Debug "A key was released"
Case #PB_EventType_Input : Debug "Text input was generated"
Case #PB_EventType_Timer : Debug "Timer event"
Case #PB_EventType_SizeGadget : DrawMyGadget(EventGadget)
Debug "Gadget resized"
;Case ##PB_EventType_MoveGadget : Debug "Gadget moved"
;Case #PB_EventType_CloseGadget : Debug "Gadget closed"
EndSelect
EndProcedure
Procedure AddMyGadgetItem(gadget,imageID)
EndProcedure
Procedure ResizeMyGadget(gadget,x,y,w,h)
ResizeGadget(gadget,x,y,w,h)
MyGadgetEvents(gadget,#PB_EventType_SizeGadget)
EndProcedure
Procedure MyGadget(gadget,x,y,width,height)
result = CanvasGadget(gadget,x,y,width,height,#PB_Canvas_Keyboard|#PB_Canvas_DrawFocus)
If gadget=#PB_Any : gadget=result : EndIf
DrawMyGadget(gadget)
ProcedureReturn result
EndProcedure
; --------------------- end MyGadget.pbi
mainWin = OpenWindow(#PB_Any,0,0,800,600,"MyGadget",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
mygadget = MyGadget(#PB_Any,0,600-140,800,140)
AddWindowTimer(mainWin,mygadget,1000)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventGadget()=mygadget
MyGadgetEvents(mygadget,EventType())
EndIf
Case #PB_Event_Timer
If EventTimer()=mygadget
MyGadgetEvents(mygadget,#PB_EventType_Timer)
EndIf
Case #PB_Event_SizeWindow
ResizeMyGadget(mygadget,0,WindowHeight(mainWin)-GadgetHeight(mygadget),WindowWidth(mainWin),140)
EndSelect
ForEver
Code: Select all
XIncludeFile "MyGadget.pbi"
mainWin = OpenWindow(#PB_Any,0,0,800,600,"MyGadget",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
mygadget = MyGadget(#PB_Any,0,600-140,800,140)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventGadget()=mygadget
MyGadgetEvents(mygadget,EventType())
EndIf
Case #PB_Event_SizeWindow
ResizeGadget(mygadget,0,WindowHeight(mainWin)-GadgetHeight(mygadget),WindowWidth(mainWin),140)
EndSelect
ForEver

Re: EventType() #PB_EventType_SizeGadget for CanvasGadget()
I would like to see for CanvasGadget:Danilo wrote:EventType() #PB_EventType_SizeGadget for CanvasGadget()
to redraw custom gadgets after this resize event.
Maybe also:
#PB_EventType_CloseGadget for freeing data.
#PB_EventType_MoveGadget after moving the gadget to display new content.
#PB_EventType_Timer for timers that are only for my custom CanvasGadget.
Code: Select all
#PB_EventType_DisableGadget ; after DisableGadget(#Gadget, #True)
#PB_EventType_EnableGadget ; after DisableGadget(#Gadget, #False)
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 more ― Typeface - Sprite-based font include/module
Lizard - Script language for symbolic calculations and more ― Typeface - Sprite-based font include/module