SB3.10 The #PB_EventType_Resize event for ScrollAreaGadget does not work

Found an issue in SpiderBasic ? Please report it here !
Webarion
Posts: 11
Joined: Mon Mar 04, 2024 10:47 pm

SB3.10 The #PB_EventType_Resize event for ScrollAreaGadget does not work

Post by Webarion »

For other container gadgets, this has been fixed, but still does not work for ScrollAreaGadget:

Code: Select all

Debug "#PB_EventType_Resize = " + #PB_EventType_Resize

Procedure _EventGadget()
  Debug "EventType " + EventType()
EndProcedure

Procedure _EventWindow()
  ResizeGadget( 0, 10, 10, WindowWidth(0)-20, WindowHeight(0)-20 )
EndProcedure


If OpenWindow(0, 0, 0, 220, 220, "", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
  
  ScrollAreaGadget(0, 10, 10, 200, 200, 375, 155, 30)
  ButtonGadget  (1, 10, 10, 230, 30,"Button 1")
  ButtonGadget  (2, 50, 50, 230, 30,"Button 2")
  ButtonGadget  (3, 90, 90, 230, 30,"Button 3")
  TextGadget    (4,130,130, 230, 20,"This is the content of a ScrollAreaGadget!",#PB_Text_Right)
  CloseGadgetList()
  
  BindEvent( #PB_Event_SizeWindow, @_EventWindow(), 0 ) 
  
  BindGadgetEvent( 0, @_EventGadget() )
  
EndIf
Webarion
Posts: 11
Joined: Mon Mar 04, 2024 10:47 pm

Re: SB3.10 The #PB_EventType_Resize event for ScrollAreaGadget does not work

Post by Webarion »

Temporary patch until this is resolved:

Code: Select all

Define PB_EventType_Resize = #PB_EventType_Resize
Define ScrollAreaGadgetType = #PB_GadgetType_ScrollArea
!var orig_BindGadgetEvent = window.spider_BindGadgetEvent;
!window.spider_BindGadgetEvent = function(gadgetID, callback, eventType) {
!  orig_BindGadgetEvent(gadgetID, callback, eventType);
!  if (typeof eventType === "undefined") eventType = -1;
!  if (eventType === v_pb_eventtype_resize || eventType === -1) {
!    var gObj = spider.gadget.objects.Get(gadgetID);
!    if (gObj.type === v_scrollareagadgettype) {
!      var origResize = gObj.Resize;
!      gObj.Resize = function(x, y, w, h) {
!        origResize(x, y, w, h);
!        spider.event.Send(1, gObj.windowId, gObj.id, v_pb_eventtype_resize);
!      };
!    }
!  }
!};



;- EXAMPLE
CompilerIf #PB_Compiler_IsMainFile
  
  Procedure _EventGadget()
    Debug "EventType " + EventType()
  EndProcedure
  
  Procedure _EventWindow()
    ResizeGadget( 0, 10, 10, WindowWidth(0)-20, WindowHeight(0)-20 )
  EndProcedure
  
  If OpenWindow(0, 0, 0, 220, 220, "", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
    
    ScrollAreaGadget(0, 10, 10, 200, 200, 375, 155, 30)
    ButtonGadget  (1, 10, 10, 230, 30,"Button 1")
    ButtonGadget  (2, 50, 50, 230, 30,"Button 2")
    ButtonGadget  (3, 90, 90, 230, 30,"Button 3")
    TextGadget    (4,130,130, 230, 20,"This is the content of a ScrollAreaGadget!",#PB_Text_Right)
    CloseGadgetList()
    
    BindEvent( #PB_Event_SizeWindow, @_EventWindow(), 0 ) 
    BindGadgetEvent( 0, @_EventGadget() )
    
  EndIf
  
CompilerEndIf
Post Reply