diff --git a/gl/inc/TGLSAViewer.h b/gl/inc/TGLSAViewer.h
index b0690f87b0111ecc3b3fa56ef93c37e8a8a57a86..9e030d1f07efcff6cc81445196768750af0ebace 100644
--- a/gl/inc/TGLSAViewer.h
+++ b/gl/inc/TGLSAViewer.h
@@ -1,4 +1,4 @@
-// @(#)root/gl:$Name:  $:$Id: TGLSAViewer.h,v 1.15 2006/09/25 13:43:21 rdm Exp $
+// @(#)root/gl:$Name:  $:$Id: TGLSAViewer.h,v 1.16 2006/09/26 08:06:49 rdm Exp $
 // Author:  Richard Maunder / Timur Pocheptsov
 
 /*************************************************************************
@@ -94,6 +94,8 @@ public:
 
    virtual const char* GetName() const { return "GLViewer"; }
 
+   virtual void RefreshPadEditor(TObject* changed=0);
+
    void   Show();
    void   Close();
 
diff --git a/gl/inc/TGLViewer.h b/gl/inc/TGLViewer.h
index 87c0a44c8083c7693be7305c6e67cd5d1207f443..8cd77f27d6af29a4ef18ea8b461273ae2e352cc7 100644
--- a/gl/inc/TGLViewer.h
+++ b/gl/inc/TGLViewer.h
@@ -1,4 +1,4 @@
-// @(#)root/gl:$Name:  $:$Id: TGLViewer.h,v 1.30 2006/08/23 14:39:40 brun Exp $
+// @(#)root/gl:$Name:  $:$Id: TGLViewer.h,v 1.31 2006/09/25 13:40:46 rdm Exp $
 // Author:  Richard Maunder  25/05/2005
 
 /*************************************************************************
@@ -149,6 +149,7 @@ protected:
    // In future it will be shaped between multiple viewers
    TGLScene       fScene;          //! the GL scene - owned by viewer at present
    TGLRect        fViewport;       //! viewport - drawn area
+   Color_t        fClearColor;     //! clear-color
    UInt_t         fLightState;     //! light states (on/off) mask
    EAxesType      fAxesType;       //! axes type
    Bool_t         fReferenceOn;    //! reference marker on?
@@ -201,7 +202,8 @@ protected:
    TClass*          FindDirectRendererClass(TClass* cls);
    TGLLogicalShape* AttemptDirectRenderer(TObject* id);
 
-   // Camera-reset behaviour
+   // Updata/camera-reset behaviour
+   Bool_t           fIgnoreSizesOnUpdate;      // ignore sizes of bounding-boxes on update
    Bool_t           fResetCamerasOnUpdate;     // reposition camera on each update
    Bool_t           fResetCamerasOnNextUpdate; // reposition camera on next update
    Bool_t           fResetCameraOnDoubleClick; // reposition camera on double-click
@@ -232,7 +234,11 @@ public:
    virtual void   ResetCameras()                { SetupCameras(kTRUE); }
    virtual void   ResetCamerasAfterNextUpdate() { fResetCamerasOnNextUpdate = kTRUE; }
 
+   virtual void   RefreshPadEditor(TObject* changed=0) {}
+
    Int_t   GetDev()const{return fGLDevice;}
+   Color_t GetClearColor() const             { return fClearColor; }
+   void    SetClearColor(Color_t col)        { fClearColor = col; }
    Bool_t  GetSmartRefresh() const           { return fSmartRefresh; }
    void    SetSmartRefresh(Bool_t smart_ref) { fSmartRefresh = smart_ref; }
 
@@ -266,7 +272,10 @@ public:
    Bool_t DoSelect(const TGLRect & rect); // Window coords origin top left
    void   ApplySelection();
 
-   // Camera-reset
+   // Update/camera-reset
+   void   UpdateScene();
+   Bool_t GetIgnoreSizesOnUpdate() const        { return fIgnoreSizesOnUpdate; }
+   void   SetIgnoreSizesOnUpdate(Bool_t v)      { fIgnoreSizesOnUpdate = v; }
    void   ResetCurrentCamera();
    Bool_t GetResetCamerasOnUpdate() const       { return fResetCamerasOnUpdate; }
    void   SetResetCamerasOnUpdate(Bool_t v)     { fResetCamerasOnUpdate = v; }
@@ -285,7 +294,7 @@ public:
    void SetPadEditor(TGLViewerEditor *ed){fPadEditor = ed;}
 
    ClassDef(TGLViewer,0) // GL viewer generic base class
-      };
+};
 
 //______________________________________________________________________________
 inline void TGLViewer::GetClipState(EClipType type, Double_t data[6]) const
diff --git a/gl/inc/TGLViewerEditor.h b/gl/inc/TGLViewerEditor.h
index 177ab26a2a2dff7f93359551160473cf76daf6f6..4d74343f5d5d981cba7063b841ece3ada28b2fe0 100644
--- a/gl/inc/TGLViewerEditor.h
+++ b/gl/inc/TGLViewerEditor.h
@@ -16,7 +16,7 @@ class TGNumberEntry;
 class TGButtonGroup;
 class TGroupFrame;
 class TGRadioButton;
-// class TGTabElement;
+class TGColorSelect;
 class TGButton;
 class TGLViewer;
 class TGTab;
@@ -33,6 +33,14 @@ private:
    TGButton         *fBottomLight;
    TGButton         *fLeftLight;
    TGButton         *fFrontLight;
+
+   TGColorSelect    *fClearColor;
+   TGCheckButton    *fIgnoreSizesOnUpdate;
+   TGCheckButton    *fResetCamerasOnUpdate;
+   TGCheckButton    *fResetCameraOnDoubleClick;
+   TGTextButton     *fUpdateScene;
+   TGTextButton     *fCameraHome;
+
    //"Guides" tab's controls
    TGButtonGroup    *fAxesContainer;
    TGRadioButton    *fAxesNone;
@@ -82,6 +90,12 @@ public:
    void SetCurrentClip();
    //Lights manipulation
    void DoButton();
+   void DoClearColor(Pixel_t color);
+   void DoIgnoreSizesOnUpdate();
+   void DoResetCamerasOnUpdate();
+   void DoResetCameraOnDoubleClick();
+   void DoUpdateScene();
+   void DoCameraHome();
    //Axis manipulation
    void UpdateViewerGuides();
    void UpdateReferencePos();
diff --git a/gl/src/TGLSAViewer.cxx b/gl/src/TGLSAViewer.cxx
index 4d7ed2b0c147ff8dbc3b0db7773f7412c98cc220..5dbe41ff102b3d8cdcde24bed785a6e6071f8653 100644
--- a/gl/src/TGLSAViewer.cxx
+++ b/gl/src/TGLSAViewer.cxx
@@ -1,4 +1,4 @@
-// @(#)root/gl:$Name:  $:$Id: TGLSAViewer.cxx,v 1.24 2006/09/25 13:43:21 rdm Exp $
+// @(#)root/gl:$Name:  $:$Id: TGLSAViewer.cxx,v 1.25 2006/09/26 08:07:18 rdm Exp $
 // Author:  Timur Pocheptsov / Richard Maunder
 
 /*************************************************************************
@@ -25,6 +25,7 @@
 #include "TGSplitter.h"
 #include "TColor.h"
 
+#include "TVirtualPad.h"
 #include "TGedEditor.h"
 #include "TRootEmbeddedCanvas.h"
 #include "TString.h"
@@ -195,7 +196,7 @@ TGLSAViewer::TGLSAViewer(TVirtualPad * pad) :
    fFrame->SetCleanup(kDeepCleanup);
    fLeftVerticalFrame->GetList()->AddFirst(fe);
 
-   fGedEditor->SetModel(fPad, this, kButton1);
+   fGedEditor->SetModel(fPad, this, kButton1Down);
    Show();
 }  
 
@@ -245,7 +246,7 @@ TGLSAViewer::TGLSAViewer(TGFrame * parent, TVirtualPad * pad) :
    fFrame->SetCleanup(kDeepCleanup);
    fLeftVerticalFrame->GetList()->AddFirst(fe);
 
-   fGedEditor->SetModel(fPad, this, kButton1);
+   fGedEditor->SetModel(fPad, this, kButton1Down);
    Show();
 }
 
@@ -264,6 +265,14 @@ TGLSAViewer::~TGLSAViewer()
    delete fFrame;
 }
 
+//______________________________________________________________________________
+void TGLSAViewer::RefreshPadEditor(TObject* changed)
+{
+   if (changed == 0 || fGedEditor->GetModel() == changed) {
+      fGedEditor->SetModel(fPad, fGedEditor->GetModel(), kButton1Down);
+   }
+}
+
 //______________________________________________________________________________
 void TGLSAViewer::CreateMenus()
 {
@@ -360,7 +369,7 @@ void TGLSAViewer::Show()
 {
    // Show the viewer
    fFrame->MapRaised();
-   fGedEditor->SetModel(fPad, this, 0);
+   fGedEditor->SetModel(fPad, this, kButton1Down);
    RequestDraw();
 }
 
@@ -512,10 +521,10 @@ void TGLSAViewer::SelectionChanged()
 
    if (selected) {
       fPShapeWrap->fPShape = selected;
-      fGedEditor->SetModel(fPad, fPShapeWrap, kButton1);
+      fGedEditor->SetModel(fPad, fPShapeWrap, kButton1Down);
    } else {
       fPShapeWrap->fPShape = 0;
-      fGedEditor->SetModel(fPad, this, kButton1); 
+      fGedEditor->SetModel(fPad, this, kButton1Down);
    }
 }
 
diff --git a/gl/src/TGLScene.cxx b/gl/src/TGLScene.cxx
index 706c24fd40c51f10677ee463d895d2d84369e595..03bcc8a2d73057f1e06f956e8c5369ad5b22e4cf 100644
--- a/gl/src/TGLScene.cxx
+++ b/gl/src/TGLScene.cxx
@@ -1,4 +1,4 @@
-// @(#)root/gl:$Name:  $:$Id: TGLScene.cxx,v 1.42 2006/05/08 14:01:30 rdm Exp $
+// @(#)root/gl:$Name:  $:$Id: TGLScene.cxx,v 1.43 2006/08/23 14:39:40 brun Exp $
 // Author:  Richard Maunder  25/05/2005
 // Parts taken from original TGLRender by Timur Pocheptsov
 
@@ -444,11 +444,8 @@ void TGLScene::Draw(const TGLCamera & camera, TGLDrawFlags sceneFlags,
          }
          // No clip - default single side lighting,
          // front polygons, cull (BACK) faces ok
-         if (sceneFlags.Style() == TGLDrawFlags::kFill) {
-            glClearColor(0.0, 0.0, 0.0, 1.0); // Black background for fill
-         } else {
-            glClearColor(1.0, 1.0, 1.0, 1.0); // White background for outline
-            reqFullDraws = 2;                 // Outline needs two full draws
+         if (sceneFlags.Style() == TGLDrawFlags::kOutline) {
+            reqFullDraws = 2;   // Outline needs two full draws
          }
 
          break;
@@ -456,7 +453,6 @@ void TGLScene::Draw(const TGLCamera & camera, TGLDrawFlags sceneFlags,
       case (TGLDrawFlags::kWireFrame): {
          glDisable(GL_LIGHTING);
          glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-         glClearColor(0.0, 0.0, 0.0, 1.0); // Black
          break;
       }
       default: {
diff --git a/gl/src/TGLViewer.cxx b/gl/src/TGLViewer.cxx
index fbdce730b8a7fe12e80c906e2f42cc719f82ab9d..53811f54f1e00ca0499c397f5be4312e76cd0b58 100644
--- a/gl/src/TGLViewer.cxx
+++ b/gl/src/TGLViewer.cxx
@@ -1,4 +1,4 @@
-// @(#)root/gl:$Name:  $:$Id: TGLViewer.cxx,v 1.52 2006/08/23 14:39:40 brun Exp $
+// @(#)root/gl:$Name:  $:$Id: TGLViewer.cxx,v 1.53 2006/08/23 15:32:48 brun Exp $
 // Author:  Richard Maunder  25/05/2005
 
 /*************************************************************************
@@ -98,6 +98,7 @@ TGLViewer::TGLViewer(TVirtualPad * pad, Int_t x, Int_t y,
    fAction(kCameraNone), fLastPos(0,0), fActiveButtonID(0),
    fDrawFlags(TGLDrawFlags::kFill, TGLDrawFlags::kLODHigh),
    fRedrawTimer(0),
+   fClearColor(1),
    fLightState(kLightMask), // All on
    fAxesType(kAxesNone),
    fReferenceOn(kFALSE),
@@ -111,6 +112,7 @@ TGLViewer::TGLViewer(TVirtualPad * pad, Int_t x, Int_t y,
    fGLWindow(0),
    fGLDevice(-1),
    fPadEditor(0),
+   fIgnoreSizesOnUpdate(kFALSE),
    fResetCamerasOnUpdate(kTRUE),
    fResetCamerasOnNextUpdate(kFALSE),
    fResetCameraOnDoubleClick(kTRUE)
@@ -145,6 +147,7 @@ TGLViewer::TGLViewer(TVirtualPad * pad) :
    fAction(kCameraNone), fLastPos(0,0), fActiveButtonID(0),
    fDrawFlags(TGLDrawFlags::kFill, TGLDrawFlags::kLODHigh),
    fRedrawTimer(0),
+   fClearColor(1),
    fLightState(kLightMask), // All on
    fAxesType(kAxesNone),
    fReferenceOn(kFALSE),
@@ -158,6 +161,7 @@ TGLViewer::TGLViewer(TVirtualPad * pad) :
    fGLWindow(0),
    fGLDevice(fPad->GetGLDevice()),
    fPadEditor(0),
+   fIgnoreSizesOnUpdate(kFALSE),
    fResetCamerasOnUpdate(kTRUE),
    fResetCamerasOnNextUpdate(kFALSE),
    fResetCameraOnDoubleClick(kTRUE)
@@ -502,8 +506,8 @@ Int_t TGLViewer::AddObject(UInt_t physicalID, const TBuffer3D & buffer, Bool_t *
             if (!box.IsEmpty()) {
                // Test transformed box with camera
                box.Transform(TGLMatrix(buffer.fLocalMaster));
-               Bool_t ofInterest = CurrentCamera().OfInterest
-                  (box, logical ? logical->IgnoreSizeForOfInterest() : kTRUE);
+               Bool_t ignoreSize = fIgnoreSizesOnUpdate || !logical || logical->IgnoreSizeForOfInterest();
+               Bool_t ofInterest = CurrentCamera().OfInterest(box, ignoreSize);
 
                // For external PID request children if physical of interest
                if (addChildren &&!fInternalPIDs) {
@@ -885,6 +889,21 @@ void TGLViewer::ResetCurrentCamera()
    CurrentCamera().Reset();
 }
 
+//______________________________________________________________________________
+void TGLViewer::UpdateScene()
+{
+   // Force a scene update.
+   // Code segments taken from protected RebuildScene().
+
+   // We are going to rebuild the scene - ensure any pending redraw timer cancelled now
+   fRedrawTimer->Stop();
+
+   // Pretend the update request came from outside.
+   fInternalRebuild = kFALSE;
+
+   fPad->Paint();
+}
+
 //______________________________________________________________________________
 void TGLViewer::SetupLights()
 {
@@ -1137,18 +1156,13 @@ void TGLViewer::PreDraw()
       InitGL();
    }
 
-
-   if (fGLDevice != -1) {
-      //Clear color must be canvas's background color
-      Color_t ci = gPad->GetFillColor();
-      TColor *color = gROOT->GetColor(ci);
-      Float_t sc[3] = {1.f, 1.f, 1.f};
-
-      if (color)
-         color->GetRGB(sc[0], sc[1], sc[2]);
-
-      glClearColor(sc[0], sc[1], sc[2], 1.);
-   }
+   // For embedded gl clear color must be pad's background color.
+   Color_t ci = (fGLDevice != -1) ? gPad->GetFillColor() : fClearColor;
+   TColor *color = gROOT->GetColor(ci);
+   Float_t sc[3] = {1.f, 1.f, 1.f};
+   if (color)
+      color->GetRGB(sc[0], sc[1], sc[2]);
+   glClearColor(sc[0], sc[1], sc[2], 1.);
 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -1798,7 +1812,12 @@ Bool_t TGLViewer::HandleButton(Event_t * event)
                   if (!fContextMenu) {
                      fContextMenu = new TContextMenu("glcm", "GL Viewer Context Menu");
                   }
-                  selected->InvokeContextMenu(*fContextMenu, event->fX, event->fY);
+                  Int_t    x, y;
+                  Window_t childdum;
+                  gVirtualX->TranslateCoordinates(fGLWindow->GetId(),
+				  gClient->GetDefaultRoot()->GetId(),
+				  event->fX, event->fY, x, y, childdum);
+                  selected->InvokeContextMenu(*fContextMenu, x, y);
                   // MT-TODO: Find a way to request redraw after dialog has finished.
                }
             } else {
@@ -1916,16 +1935,28 @@ Bool_t TGLViewer::HandleKey(Event_t *event)
    case kKey_R:
    case kKey_r:
       fDrawFlags.SetStyle(TGLDrawFlags::kFill);
+      if (fClearColor == 0) {
+         fClearColor = 1; // Black
+         RefreshPadEditor(this);
+      }
       redraw = kTRUE;
       break;
    case kKey_W:
    case kKey_w:
       fDrawFlags.SetStyle(TGLDrawFlags::kWireFrame);
+      if (fClearColor == 0) {
+         fClearColor = 1; // Black
+         RefreshPadEditor(this);
+      }
       redraw = kTRUE;
       break;
    case kKey_T:
    case kKey_t:
       fDrawFlags.SetStyle(TGLDrawFlags::kOutline);
+      if (fClearColor == 1) {
+         fClearColor = 0; // White
+         RefreshPadEditor(this);
+      }
       redraw = kTRUE;
       break;
    case kKey_V:
diff --git a/gl/src/TGLViewerEditor.cxx b/gl/src/TGLViewerEditor.cxx
index 2a33e3375460679d5a4b9c2b584708b33d7a3aa2..256a8955a7d173ea8c258756d971ec72f9a25ccb 100644
--- a/gl/src/TGLViewerEditor.cxx
+++ b/gl/src/TGLViewerEditor.cxx
@@ -3,9 +3,11 @@
 #include "TGedEditor.h"
 #include "TGNumberEntry.h"
 #include "TGButtonGroup.h"
+#include "TGColorSelect.h"
 #include "TVirtualGL.h"
 #include "TG3DLine.h"
 #include "TGButton.h"
+#include "TColor.h"
 #include "TString.h"
 #include "TGLabel.h"
 #include "TClass.h"
@@ -32,6 +34,12 @@ TGLViewerEditor::TGLViewerEditor(const TGWindow *p,  Int_t width, Int_t height,
    fBottomLight(0),
    fLeftLight(0),
    fFrontLight(0),
+   fClearColor(0),
+   fIgnoreSizesOnUpdate(0),
+   fResetCamerasOnUpdate(0),
+   fResetCameraOnDoubleClick(0),
+   fUpdateScene(0),
+   fCameraHome(0),
    fAxesContainer(0),
    fAxesNone(0),
    fAxesEdge(0),
@@ -78,6 +86,13 @@ void TGLViewerEditor::ConnectSignals2Slots()
    fLeftLight->Connect("Clicked()", "TGLViewerEditor", this, "DoButton()");
    fFrontLight->Connect("Clicked()", "TGLViewerEditor", this, "DoButton()");
 
+   fClearColor->Connect("ColorSelected(Pixel_t)", "TGLViewerEditor", this, "DoClearColor(Pixel_t)");
+   fIgnoreSizesOnUpdate->Connect("Toggled(Bool_t)", "TGLViewerEditor", this, "DoIgnoreSizesOnUpdate()");
+   fResetCamerasOnUpdate->Connect("Toggled(Bool_t)", "TGLViewerEditor", this, "DoResetCamerasOnUpdate()");
+   fResetCameraOnDoubleClick->Connect("Toggled(Bool_t)", "TGLViewerEditor", this, "DoResetCameraOnDoubleClick()");
+   fUpdateScene->Connect("Pressed()", "TGLViewerEditor", this, "DoUpdateScene()");
+   fCameraHome->Connect("Pressed()", "TGLViewerEditor", this, "DoCameraHome()");
+
    fAxesContainer->Connect("Pressed(Int_t)", "TGLViewerEditor", this, "UpdateViewerGuides()");
    fReferenceOn->Connect("Clicked()", "TGLViewerEditor", this, "UpdateViewerGuides()");
    fReferencePosX->Connect("ValueSet(Long_t)", "TGLViewerEditor", this, "UpdateViewerGuides()");
@@ -131,6 +146,11 @@ void TGLViewerEditor::SetModel(TObject* obj)
 
    if(ls & TGLViewer::kLightFront)
       fFrontLight->SetState(kButtonDown);
+
+   fClearColor->SetColor(TColor::Number2Pixel(fViewer->GetClearColor()), kFALSE);
+   fIgnoreSizesOnUpdate->SetState(fViewer->GetIgnoreSizesOnUpdate() ? kButtonDown : kButtonUp);
+   fResetCamerasOnUpdate->SetState(fViewer->GetResetCamerasOnUpdate() ? kButtonDown : kButtonUp);
+   fResetCameraOnDoubleClick->SetState(fViewer->GetResetCameraOnDoubleClick() ? kButtonDown : kButtonUp);
 }
 
 //______________________________________________________________________________
@@ -141,6 +161,58 @@ void TGLViewerEditor::DoButton()
    fViewer->ToggleLight(TGLViewer::ELight(((TGButton *) gTQSender)->WidgetId()));
 }
 
+//______________________________________________________________________________
+void TGLViewerEditor::DoClearColor(Pixel_t color)
+{
+   // Clear-color was changed.
+
+   fViewer->SetClearColor(Color_t(TColor::GetColor(color)));
+   fViewer->RequestDraw();
+}
+
+//______________________________________________________________________________
+void TGLViewerEditor::DoIgnoreSizesOnUpdate()
+{
+   // ResetCamerasOnUpdate was toggled.
+
+   fViewer->SetIgnoreSizesOnUpdate(fIgnoreSizesOnUpdate->IsOn());
+   if (fIgnoreSizesOnUpdate->IsOn())
+      fViewer->UpdateScene();
+}
+
+//______________________________________________________________________________
+void TGLViewerEditor::DoResetCamerasOnUpdate()
+{
+   // ResetCamerasOnUpdate was toggled.
+
+   fViewer->SetResetCamerasOnUpdate(fResetCamerasOnUpdate->IsOn());
+}
+
+//______________________________________________________________________________
+void TGLViewerEditor::DoResetCameraOnDoubleClick()
+{
+   // ResetCameraOnDoubleClick was toggled.
+
+   fViewer->SetResetCameraOnDoubleClick(fResetCameraOnDoubleClick->IsOn());
+}
+
+//______________________________________________________________________________
+void TGLViewerEditor::DoUpdateScene()
+{
+   // ResetCameraOnDoubleClick was toggled.
+
+   fViewer->UpdateScene();
+}
+
+//______________________________________________________________________________
+void TGLViewerEditor::DoCameraHome()
+{
+   // ResetCameraOnDoubleClick was toggled.
+
+   fViewer->ResetCurrentCamera();
+   fViewer->RequestDraw();
+}
+
 //______________________________________________________________________________
 void TGLViewerEditor::UpdateViewerGuides()
 {
@@ -184,6 +256,30 @@ void TGLViewerEditor::CreateLightsTab()
    fLightFrame->AddFrame(fBottomLight);
    fLightFrame->AddFrame(fLeftLight);
    fLightFrame->AddFrame(fFrontLight);
+
+   {
+      TGHorizontalFrame* hf = new TGHorizontalFrame(this);
+      TGLabel* lab = new TGLabel(hf, "Clear color");
+      hf->AddFrame(lab, new TGLayoutHints(kLHintsLeft|kLHintsBottom, 1, 12, 1, 3));
+      fClearColor = new TGColorSelect(hf, 0, -1);
+      hf->AddFrame(fClearColor, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
+      AddFrame(hf, new TGLayoutHints(kLHintsLeft, 2, 1, 1, 1));
+   }
+
+   MakeTitle("Update behaviour");
+   fIgnoreSizesOnUpdate  = new TGCheckButton(this, "Ignore sizes");
+   fIgnoreSizesOnUpdate->SetToolTipText("Ignore bounding-box sizes on scene update");
+   AddFrame(fIgnoreSizesOnUpdate, new TGLayoutHints(kLHintsLeft, 4, 1, 1, 1));
+   fResetCamerasOnUpdate = new TGCheckButton(this, "Reset on update");
+   fResetCamerasOnUpdate->SetToolTipText("Reset camera on scene update");
+   AddFrame(fResetCamerasOnUpdate, new TGLayoutHints(kLHintsLeft, 4, 1, 1, 1));
+   fResetCameraOnDoubleClick = new TGCheckButton(this, "Reset on dbl-click");
+   fResetCameraOnDoubleClick->SetToolTipText("Reset cameras on double-click");
+   AddFrame(fResetCameraOnDoubleClick, new TGLayoutHints(kLHintsLeft, 4, 1, 1, 1));
+   fUpdateScene = new TGTextButton(this, "Update Scene");
+   AddFrame(fUpdateScene, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 4, 1, 1, 1));
+   fCameraHome = new TGTextButton(this, "Camera Home");
+   AddFrame(fCameraHome, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 4, 1, 1, 1));
 }
 
 //______________________________________________________________________________