Browse Source

Merge pull request #1078 from Areloch/NilsUI_Updates_GuiClassTweaks

Various GUI class tweaks for Nils' UI work
Brian Roberts 2 years ago
parent
commit
f7d06dba80

+ 22 - 7
Engine/source/gui/buttons/guiIconButtonCtrl.cpp

@@ -68,11 +68,12 @@ ConsoleDocClass( GuiIconButtonCtrl,
     " makeIconSquare = \"1\";\n"
     " textLocation = \"Bottom\";\n"
     " textMargin = \"-2\";\n"
-   "  autoSize = \"0\";\n"
-   "  text = \"Lag Icon\";\n"
-   "  textID = \"\"STR_LAG\"\";\n"
-   "  buttonType = \"PushButton\";\n"
-   "  profile = \"GuiIconButtonProfile\";\n"
+    " bitmapMargin = \"0\";\n"
+    " autoSize = \"0\";\n"
+    " text = \"Lag Icon\";\n"
+    " textID = \"\"STR_LAG\"\";\n"
+    " buttonType = \"PushButton\";\n"
+    " profile = \"GuiIconButtonProfile\";\n"
    "};\n"
    "@endtsexample\n\n"
 
@@ -96,6 +97,8 @@ GuiIconButtonCtrl::GuiIconButtonCtrl()
 
    mAutoSize = false;
 
+   mBitmapMargin = 0;
+
    setExtent(140, 30);
 }
 
@@ -134,6 +137,8 @@ void GuiIconButtonCtrl::initPersistFields()
                                                                                  "Options are 0 (None), 1 (Bottom), 2 (Right), 3 (Top), 4 (Left), 5 (Center).\n");
    addField( "textMargin",       TypeS32,       Offset( mTextMargin, GuiIconButtonCtrl ),"Margin between the icon and the text.\n");
    addField( "autoSize",         TypeBool,      Offset( mAutoSize, GuiIconButtonCtrl ),"If true, the text and icon will be automatically sized to the size of the control.\n");
+   addField( "bitmapMargin",     TypeS32,       Offset( mBitmapMargin, GuiIconButtonCtrl), "Margin between the icon and the border.\n");
+
    Parent::initPersistFields();
 }
 
@@ -299,10 +304,16 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
       // Render the normal bitmap
       drawer->clearBitmapModulation();
 
+      // Size of the bitmap
+      Point2I textureSize(mBitmap->getWidth(), mBitmap->getHeight());
+
+      // Reduce the size with the margin (if set)
+      textureSize.x = textureSize.x - (mBitmapMargin * 2);
+      textureSize.y = textureSize.y - (mBitmapMargin * 2);
+
       // Maintain the bitmap size or fill the button?
       if ( !mFitBitmapToButton )
       {
-         Point2I textureSize(mBitmap->getWidth(), mBitmap->getHeight() );
          iconRect.set( offset + mButtonMargin, textureSize );
 
          if ( mIconLocation == IconLocRight )    
@@ -326,7 +337,11 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
       } 
       else
       {
-         iconRect.set( offset + mButtonMargin, getExtent() - (Point2I(mAbs(mButtonMargin.x), mAbs(mButtonMargin.y)) * 2) );
+         // adding offset with the bitmap margin next to the button margin
+         Point2I bitMapOffset(mBitmapMargin, mBitmapMargin);
+
+         // set the offset
+         iconRect.set( offset + mButtonMargin + bitMapOffset, getExtent() - (Point2I(mAbs(mButtonMargin.x - (mBitmapMargin * 2)), mAbs(mButtonMargin.y - (mBitmapMargin * 2))) * 2) );
          
          if ( mMakeIconSquare )
          {

+ 3 - 0
Engine/source/gui/buttons/guiIconButtonCtrl.h

@@ -49,6 +49,9 @@ protected:
    S32               mTextLocation;
    S32               mTextMargin;
    Point2I           mButtonMargin;
+
+   /// Margin between the icon and the button border
+   S32               mBitmapMargin;
    
    /// Make the bitmap fill the button extent.
    bool mFitBitmapToButton;

+ 12 - 4
Engine/source/gui/containers/guiWindowCtrl.cpp

@@ -68,6 +68,8 @@ IMPLEMENT_CALLBACK( GuiWindowCtrl, onRestore, void, (), (),
    "Called when the window is restored from minimized, maximized, or collapsed state." );
 IMPLEMENT_CALLBACK(GuiWindowCtrl, onResize, void, (S32 posX, S32 posY, S32 width, S32 height), (0, 0, 0, 0),
    "Called when the window is resized in a regular manner by mouse manipulation.");
+IMPLEMENT_CALLBACK(GuiWindowCtrl, onMouseDragged, void, (), (),
+   "Called when the height has changed.");
 
 
 //-----------------------------------------------------------------------------
@@ -87,7 +89,8 @@ GuiWindowCtrl::GuiWindowCtrl()
       mCollapseGroup(-1),
       mCollapseGroupNum(-1),
       mIsCollapsed(false),
-      mIsMouseResizing(false)
+      mIsMouseResizing(false),
+      mButtonOffset(0, 3)
 {
    // mTitleHeight will change in instanciation most likely...
    mTitleHeight = 24;
@@ -154,6 +157,8 @@ void GuiWindowCtrl::initPersistFields()
          "Script code to execute when the window is closed." );
       addField( "edgeSnap",          TypeBool,         Offset( mEdgeSnap,GuiWindowCtrl ),
          "If true, the window will snap to the edges of other windows when moved close to them." );
+      addField( "buttonOffset",      TypePoint2I,       Offset (mButtonOffset, GuiWindowCtrl),
+         "Margin between window edge and the button(s).");
          
    endGroup( "Window" );
 
@@ -1019,6 +1024,9 @@ void GuiWindowCtrl::onMouseDragged(const GuiEvent &event)
    }
    else // Normal window sizing functionality
       resize(newPosition, newExtent);
+
+   // Add a callback for the GUI scripts
+   onMouseDragged_callback();
 }
 
 //-----------------------------------------------------------------------------
@@ -1409,7 +1417,7 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
       }
 
       drawUtil->clearBitmapModulation();
-      drawUtil->drawBitmapSR(mTextureObject, offset + mCloseButton.point, mBitmapBounds[bmp]);
+      drawUtil->drawBitmapSR(mTextureObject, mButtonOffset + offset + mCloseButton.point, mBitmapBounds[bmp]);
    }
 
    // Draw the maximize button
@@ -1428,7 +1436,7 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
       }
 
       drawUtil->clearBitmapModulation();
-      drawUtil->drawBitmapSR( mTextureObject, offset + mMaximizeButton.point, mBitmapBounds[bmp] );
+      drawUtil->drawBitmapSR( mTextureObject, mButtonOffset + offset + mMaximizeButton.point, mBitmapBounds[bmp] );
    }
 
    // Draw the minimize button
@@ -1447,7 +1455,7 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
       }
 
       drawUtil->clearBitmapModulation();
-      drawUtil->drawBitmapSR( mTextureObject, offset + mMinimizeButton.point, mBitmapBounds[bmp] );
+      drawUtil->drawBitmapSR( mTextureObject, mButtonOffset + offset + mMinimizeButton.point, mBitmapBounds[bmp] );
    }
 
    if( !mMinimized )

+ 3 - 0
Engine/source/gui/containers/guiWindowCtrl.h

@@ -124,6 +124,8 @@ class GuiWindowCtrl : public GuiContainer
       
       bool mCanDock; ///< Show a docking button on the title bar?
       bool mEdgeSnap; ///< Should this window snap to other windows edges?
+
+      Point2I mButtonOffset;
             
       /// @}
       
@@ -202,6 +204,7 @@ class GuiWindowCtrl : public GuiContainer
       DECLARE_CALLBACK( void, onCollapse, () );
       DECLARE_CALLBACK( void, onRestore, () );
       DECLARE_CALLBACK(void, onResize, (S32 posX, S32 posY, S32 width, S32 height));
+      DECLARE_CALLBACK(void, onMouseDragged, ());
       
       /// @}
 

+ 1 - 1
Engine/source/gui/controls/guiSliderCtrl.cpp

@@ -412,7 +412,7 @@ void GuiSliderCtrl::onRender(Point2I offset, const RectI &updateRect)
          PrimBuild::end();
          // TODO: it would be nice, if the primitive builder were a little smarter,
          // so that we could change colors midstream.
-         PrimBuild::color4f(0.9f, 0.9f, 0.9f, 1.0f);
+         PrimBuild::color4f(0.6f, 0.6f, 0.6f, 1.0f);
          PrimBuild::begin( GFXLineList, ( mTicks + 2 ) * 2 );
          // tick marks
          for (U32 t = 0; t <= (mTicks+1); t++)

+ 1 - 1
Engine/source/gui/controls/guiTextEditSliderBitmapCtrl.cpp

@@ -415,7 +415,7 @@ void GuiTextEditSliderBitmapCtrl::onRender(Point2I offset, const RectI &updateRe
 	
 	// Draw the line that splits the number and bitmaps
 	GFX->getDrawUtil()->drawLine(Point2I(offset.x + getWidth() - 14 -2, offset.y + 1 ),
-		Point2I(arrowUpStart.x -2, arrowUpStart.y + getExtent().y),
+		Point2I(arrowUpStart.x -2, arrowUpStart.y + getExtent().y + 2),
 		mProfile->mBorderColor);
 
 	GFX->getDrawUtil()->clearBitmapModulation();

+ 6 - 6
Engine/source/gui/controls/guiTextEditSliderCtrl.cpp

@@ -360,12 +360,12 @@ void GuiTextEditSliderCtrl::onRender(Point2I offset, const RectI &updateRect)
    GFXVertexBufferHandle<GFXVertexPCT> verts(GFX, 6, GFXBufferTypeVolatile);
    verts.lock();
 
-   verts[0].color.set( 0, 0, 0 );
-	verts[1].color.set( 0, 0, 0 );
-	verts[2].color.set( 0, 0, 0 );
-	verts[3].color.set( 0, 0, 0 );
-	verts[4].color.set( 0, 0, 0 );
-	verts[5].color.set( 0, 0, 0 );
+    verts[0].color.set(128, 128, 128);
+	verts[1].color.set(128, 128, 128);
+	verts[2].color.set(128, 128, 128);
+	verts[3].color.set(128, 128, 128);
+	verts[4].color.set(128, 128, 128);
+	verts[5].color.set(128, 128, 128);
 
    if(mTextAreaHit == ArrowUp)
    {

+ 3 - 3
Engine/source/gui/editor/guiEditCtrl.cpp

@@ -2873,7 +2873,7 @@ class GuiEditorRuler : public GuiControl
       
       void onRender(Point2I offset, const RectI &updateRect)
       {
-         GFX->getDrawUtil()->drawRectFill(updateRect, ColorI::WHITE);
+         GFX->getDrawUtil()->drawRectFill(updateRect, ColorI::DARK);
          
          Point2I choffset(0,0);
          if( mRefCtrl != NULL )
@@ -2893,7 +2893,7 @@ class GuiEditorRuler : public GuiControl
                      start = 4;
                   if(!(pos % 100))
                      start = 1;
-                  GFX->getDrawUtil()->drawLine(x, offset.y + start, x, offset.y + 10, ColorI::BLACK);
+                  GFX->getDrawUtil()->drawLine(x, offset.y + start, x, offset.y + 10, ColorI::LIGHT);
                }
             }
          }
@@ -2911,7 +2911,7 @@ class GuiEditorRuler : public GuiControl
                      start = 4;
                   if(!(pos % 100))
                      start = 1;
-                  GFX->getDrawUtil()->drawLine(offset.x + start, y, offset.x + 10, y, ColorI::BLACK);
+                  GFX->getDrawUtil()->drawLine(offset.x + start, y, offset.x + 10, y, ColorI::LIGHT);
                }
             }
          }

+ 2 - 2
Engine/source/gui/editor/guiMenuBar.cpp

@@ -1100,8 +1100,8 @@ GuiMenuBar::GuiMenuBar()
    mHorizontalMargin = 6; // Default number of pixels on the left and right side of a manu's text
    mVerticalMargin = 1;   // Default number of pixels on the top and bottom of a menu's text
    mBitmapMargin = 2;     // Default number of pixels between a menu's bitmap and text
-
-   mMenubarHeight = 20;
+   
+   mMenubarHeight = 24;
 
    //  Added:
    mouseDownSubmenu = NULL;