GetGadgetAttribute3D does not return width/height for PanelGadget3D

All bugs related to the 3D engine
User avatar
Programie
User
User
Posts: 25
Joined: Thu Aug 09, 2007 11:26 am
Location: Gernsbach (Germany)
Contact:

GetGadgetAttribute3D does not return width/height for PanelGadget3D

Post by Programie »

I want to get the pane width and height of a PanelGadget3D (i.e. size without the tab bar). For that use case, there is GetGadgetAttribute3D() with #PB_Panel3D_ItemWidth and #PB_Panel3D_ItemHeight as Attribute parameter.

But the function always returns 0. The same thing happens to #PB_Panel3D_TabHeight.

It works fine for ScrollAreaGadget3D using #PB_ScrollArea3D_InnerWidth and #PB_ScrollArea3D_InnerHeight.

The same behavior also exists on Windows. So, I guess this is a bug in PureBasic?

Example code:

Code: Select all

EnableExplicit

Enumeration
  #Window
  #Window3D
  #Panel
  #PanelButton
  #ScrollArea
  #ScrollAreaButton
  #Camera
EndEnumeration

Define Event

InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()

Add3DArchive(#PB_Compiler_Home + "/examples/3d/Data/GUI", #PB_3DArchive_FileSystem)

If OpenWindow(#Window, 0, 0, 800, 600, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If OpenWindowedScreen(WindowID(#Window), 0, 0, 800, 600)
    If OpenWindow3D(#Window3D, 100, 100, 600, 300, "Window")
      If PanelGadget3D(#Panel, 10, 10, 200, 200)
        If AddGadgetItem3D(#Panel, -1, "Tab 1")
          ButtonGadget3D(#PanelButton, 10, 10, 100, 30, "Get size")
        EndIf
        AddGadgetItem3D(#Panel, -1, "Tab 2")
        AddGadgetItem3D(#Panel, -1, "Tab 3")
        CloseGadgetList3D()
      EndIf
      If ScrollAreaGadget3D(#ScrollArea, 250, 10, 200, 200, 1000, 1000, 50)
        ButtonGadget3D(#ScrollAreaButton, 10, 10, 100, 30, "Get size")
        CloseGadgetList3D()
      EndIf
    EndIf
    
    CreateCamera(#Camera, 0, 0, 100, 100)
    
    Repeat
      ExamineKeyboard()
      ExamineMouse()
      
      If KeyboardReleased(#PB_Key_Escape)
        Break
      EndIf
      
      InputEvent3D(MouseX(), MouseY(), MouseButton(#PB_MouseButton_Left))
      
      Select WindowEvent3D()
        Case #PB_Event3D_Gadget
          Select EventGadget3D()
            Case #PanelButton
              Debug "*** Panel ***"
              Debug "ItemWidth = " + Str(GetGadgetAttribute3D(#Panel, #PB_Panel3D_ItemWidth))
              Debug "ItemHeight = " + Str(GetGadgetAttribute3D(#Panel, #PB_Panel3D_ItemHeight))
              Debug "TabHeight = " + Str(GetGadgetAttribute3D(#Panel, #PB_Panel3D_TabHeight))
              Debug "GadgetWidth = " + Str(GadgetWidth3D(#Panel))
              Debug "GadgetHeight = " + Str(GadgetHeight3D(#Panel))
            Case #ScrollAreaButton
              Debug "*** Scroll Area ***"
              Debug "InnerWidth = " + Str(GetGadgetAttribute3D(#ScrollArea, #PB_ScrollArea3D_InnerWidth))
              Debug "InnerHeight = " + Str(GetGadgetAttribute3D(#ScrollArea, #PB_ScrollArea3D_InnerHeight))
              Debug "GadgetWidth = " + Str(GadgetWidth3D(#ScrollArea))
              Debug "GadgetHeight = " + Str(GadgetHeight3D(#ScrollArea))
          EndSelect
        Case #PB_Event3D_CloseWindow
          Break
      EndSelect
      
      Select WindowEvent()
        Case #PB_Event_CloseWindow
          Break
      EndSelect
      
      RenderWorld()
      FlipBuffers()
    ForEver
  EndIf
EndIf
ImageImageImageImage