After some thought, I managed to bind #PB_EventType_Resize to the container gadgets. Generic example:
Code: Select all
CompilerIf Not Defined(WBN_Handler_Canvas_Container, #PB_Constant)
#WBN_Handler_Canvas_Container = #True
!window.spider_CanvasGadget = new Proxy( window.spider_CanvasGadget, {
! apply(target, that, args) {
! var gRet = target(...args);
! if( typeof args[5] !== "undefined" && args[5] & 32 ){ // #PB_Canvas_Container
! var gObj = (args[0] == -1) ? spider.gadget.objects.Get(gRet) : gRet;
! gObj.cContainer = true;
! }
! return gRet;
! }
!});
CompilerEndIf
CompilerIf Not Defined(PB_EventType_Resize, #PB_Constant)
#PB_EventType_Resize = 6
!window.spider_BindGadgetEvent = new Proxy( window.spider_BindGadgetEvent, {
! apply(target, that, args) {
! target(...args);
! "undefined" === typeof args[2] && (args[2] = -1);
! if( args[2] == 6 || args[2] == -1 ){
! var gObj = spider.gadget.objects.Get(args[0]);
! if(gObj.type == 11 || gObj.type == 28 || gObj.type == 16 || ( gObj.type == 33 && typeof gObj.cContainer !== "undefined" ) ){
! gObj.Resize = new Proxy( gObj.Resize, {
! apply(target, that, args){
! target(...args);
! gObj.isDisabled || spider.event.Send(1, gObj.windowId, gObj.id, 6);
! }
! });
! }
! }
! }
!});
CompilerEndIf
;- EXAMPLE
CompilerIf #PB_Compiler_IsMainFile
Enumeration
#Container1
#Container2
#Button
#Splitter
EndEnumeration
Procedure _EventResizeContainer()
If EventType() = #PB_EventType_Resize
ResizeGadget( #Button, #PB_Ignore, GadgetHeight(#Container1)-34, #PB_Ignore, #PB_Ignore )
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 400, 300, "SpiderBasic: #PB_EventType_Resize for container gadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ContainerGadget(#Container1, 10, 10, 380, 59, #PB_Container_Double ) : CloseGadgetList()
ContainerGadget(#Container2, 0, 0, 0, 0, #PB_Container_Double ) : CloseGadgetList()
SplitterGadget(#Splitter, 10, 10, 380, 275, #Container1, #Container2, #PB_Splitter_Separator)
OpenGadgetList(#Container1)
ButtonGadget(#Button, 10, GadgetHeight(#Container1)-34, 80, 24, "Button")
CloseGadgetList()
BindGadgetEvent( #Container1, @_EventResizeContainer(), #PB_EventType_Resize )
EndIf
CompilerEndIf