absolute position of a gadget on a panelgadget

Just starting out? Need help? Post your questions and find answers here.
User avatar
Shardik
Addict
Addict
Posts: 1991
Joined: Thu Apr 21, 2005 2:38 pm
Location: Germany

Re: absolute position of a gadget on a panelgadget

Post by Shardik »

@ts-soft,

Thomas, you should NEVER assume that source code is cross-platform
only because it doesn't use API functions. Nothing beats a real test... :mrgreen:

I had to modify your code to be indeed cross-platform and verified it in
Windows 7 x86, andLinux/Kubuntu 9.04 x86, Linux Mint 12 x86 and
Mac OS X 10.6.8 (Snow Leopard):

Code: Select all

EnableExplicit

Define posx, posy
If OpenWindow(0, 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  PanelGadget(0, 8, 8, 306, 203)
  AddGadgetItem(0, -1,"Panel 2")
  ButtonGadget(1, 100, 110, 80, 24,"Button 1")
  CloseGadgetList()

  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Linux
      posx = GadgetX(0) + GadgetX(1)
      posy = GadgetY(0) + GadgetY(1)
    CompilerCase #PB_OS_MacOS
      posx = GadgetX(0) + GadgetX(1) + 3
      posy = GadgetY(0) + GadgetY(1) + GetGadgetAttribute(0, #PB_Panel_TabHeight)
    CompilerCase #PB_OS_Windows
      posx = GadgetX(0) + GadgetX(1) + 3
      posy = GadgetY(0) + GadgetY(1) + GetGadgetAttribute(0, #PB_Panel_TabHeight) + 1
  CompilerEndSelect

  ButtonGadget(2, posx, posy, 80, 24, "Button 2")
  HideGadget(2, #True)

  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow : Break
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1
            HideGadget(0, #True)
            HideGadget(2, #False)
          Case 2
            HideGadget(0, #False)
            HideGadget(2, #True)
        EndSelect
    EndSelect
  ForEver
EndIf