Browse Source

Fixed incorrect content size calculation when content contained an image
More work on new UI

BearishSun 10 years ago
parent
commit
ddba923fbf

+ 9 - 6
BansheeEditor/Include/BsBuiltinEditorResources.h

@@ -215,14 +215,17 @@ namespace BansheeEngine
 
 
 		static const WString TabBarBackgroundTex;
 		static const WString TabBarBackgroundTex;
 
 
-		static const WString WindowCloseButtonNormal;
-		static const WString WindowCloseButtonHover;
+		static const WString CloseButtonNormalTex;
+		static const WString CloseButtonHoverTex;
+		static const WString CloseButtonActiveTex;
 
 
-		static const WString WindowMinButtonNormal;
-		static const WString WindowMinButtonHover;
+		static const WString MinButtonNormalTex;
+		static const WString MinButtonHoverTex;
+		static const WString MinButtonActiveTex;
 
 
-		static const WString WindowMaxButtonNormal;
-		static const WString WindowMaxButtonHover;
+		static const WString MaxButtonNormalTex;
+		static const WString MaxButtonHoverTex;
+		static const WString MaxButtonActiveTex;
 
 
 		static const WString TabButtonNormalTex;
 		static const WString TabButtonNormalTex;
 		static const WString TabButtonFocusedTex;
 		static const WString TabButtonFocusedTex;

+ 29 - 28
BansheeEditor/Source/BsBuiltinEditorResources.cpp

@@ -147,14 +147,17 @@ namespace BansheeEngine
 	const WString BuiltinEditorResources::WindowFrameNormal = L"WindowFrameNormal.png";
 	const WString BuiltinEditorResources::WindowFrameNormal = L"WindowFrameNormal.png";
 	const WString BuiltinEditorResources::WindowFrameFocused = L"WindowFrameFocused.png";
 	const WString BuiltinEditorResources::WindowFrameFocused = L"WindowFrameFocused.png";
 
 
-	const WString BuiltinEditorResources::WindowCloseButtonNormal = L"WindowCloseBtnNormal.psd";
-	const WString BuiltinEditorResources::WindowCloseButtonHover = L"WindowCloseBtnHover.psd";
+	const WString BuiltinEditorResources::CloseButtonNormalTex = L"CloseButtonNormal.png";
+	const WString BuiltinEditorResources::CloseButtonHoverTex = L"CloseButtonHover.png";
+	const WString BuiltinEditorResources::CloseButtonActiveTex = L"CloseButtonActive.png";
 
 
-	const WString BuiltinEditorResources::WindowMinButtonNormal = L"WindowMinBtnNormal.psd"; 
-	const WString BuiltinEditorResources::WindowMinButtonHover = L"WindowMinBtnHover.psd"; 
+	const WString BuiltinEditorResources::MinButtonNormalTex = L"MinimizeButtonNormal.png"; 
+	const WString BuiltinEditorResources::MinButtonHoverTex = L"MinimizeButtonHover.png"; 
+	const WString BuiltinEditorResources::MinButtonActiveTex = L"MinimizeButtonActive.png";
 
 
-	const WString BuiltinEditorResources::WindowMaxButtonNormal = L"WindowMaxBtnNormal.psd";
-	const WString BuiltinEditorResources::WindowMaxButtonHover = L"WindowMaxBtnHover.psd";
+	const WString BuiltinEditorResources::MaxButtonNormalTex = L"MaximizeButtonNormal.png";
+	const WString BuiltinEditorResources::MaxButtonHoverTex = L"MaximizeButtonHover.png";
+	const WString BuiltinEditorResources::MaxButtonActiveTex = L"MaximizeButtonActive.png";
 
 
 	const WString BuiltinEditorResources::TabBarBackgroundTex = L"TabBarBackground.png";
 	const WString BuiltinEditorResources::TabBarBackgroundTex = L"TabBarBackground.png";
 
 
@@ -240,7 +243,7 @@ namespace BansheeEngine
 	const WString BuiltinEditorResources::XButtonNormalTex = L"XBtnNormal.psd";
 	const WString BuiltinEditorResources::XButtonNormalTex = L"XBtnNormal.psd";
 	const WString BuiltinEditorResources::XButtonHoverTex = L"XBtnHover.psd";
 	const WString BuiltinEditorResources::XButtonHoverTex = L"XBtnHover.psd";
 
 
-	const WString BuiltinEditorResources::StatusBarBgTex = L"StatusBarBg.psd";
+	const WString BuiltinEditorResources::StatusBarBgTex = L"StatusBarBackground.png";
 	const WString BuiltinEditorResources::ScrollAreaBgTex = L"ScrollAreaBg.png";
 	const WString BuiltinEditorResources::ScrollAreaBgTex = L"ScrollAreaBg.png";
 
 
 	/************************************************************************/
 	/************************************************************************/
@@ -566,37 +569,37 @@ namespace BansheeEngine
 
 
 		// Window minimize button
 		// Window minimize button
 		GUIElementStyle winMinButtonStyle;
 		GUIElementStyle winMinButtonStyle;
-		winMinButtonStyle.normal.texture = getGUITexture(WindowMinButtonNormal);
-		winMinButtonStyle.hover.texture = getGUITexture(WindowMinButtonHover);
-		winMinButtonStyle.active.texture = winMinButtonStyle.hover.texture;
+		winMinButtonStyle.normal.texture = getGUITexture(MinButtonNormalTex);
+		winMinButtonStyle.hover.texture = getGUITexture(MinButtonHoverTex);
+		winMinButtonStyle.active.texture = getGUITexture(MinButtonActiveTex);
 		winMinButtonStyle.fixedHeight = true;
 		winMinButtonStyle.fixedHeight = true;
 		winMinButtonStyle.fixedWidth = true;
 		winMinButtonStyle.fixedWidth = true;
-		winMinButtonStyle.height = 7;
-		winMinButtonStyle.width = 8;
+		winMinButtonStyle.height = 14;
+		winMinButtonStyle.width = 14;
 
 
 		skin->setStyle("WinMinimizeBtn", winMinButtonStyle);
 		skin->setStyle("WinMinimizeBtn", winMinButtonStyle);
 
 
 		// Window maximize button
 		// Window maximize button
 		GUIElementStyle winMaxButtonStyle;
 		GUIElementStyle winMaxButtonStyle;
-		winMaxButtonStyle.normal.texture = getGUITexture(WindowMaxButtonNormal);
-		winMaxButtonStyle.hover.texture = getGUITexture(WindowMaxButtonHover);
-		winMaxButtonStyle.active.texture = winMaxButtonStyle.hover.texture;
+		winMaxButtonStyle.normal.texture = getGUITexture(MaxButtonNormalTex);
+		winMaxButtonStyle.hover.texture = getGUITexture(MaxButtonHoverTex);
+		winMaxButtonStyle.active.texture = getGUITexture(MaxButtonActiveTex);
 		winMaxButtonStyle.fixedHeight = true;
 		winMaxButtonStyle.fixedHeight = true;
 		winMaxButtonStyle.fixedWidth = true;
 		winMaxButtonStyle.fixedWidth = true;
-		winMaxButtonStyle.height = 8;
-		winMaxButtonStyle.width = 8;
+		winMaxButtonStyle.height = 14;
+		winMaxButtonStyle.width = 14;
 
 
 		skin->setStyle("WinMaximizeBtn", winMaxButtonStyle);
 		skin->setStyle("WinMaximizeBtn", winMaxButtonStyle);
 
 
 		// Window close button
 		// Window close button
 		GUIElementStyle winCloseButtonStyle;
 		GUIElementStyle winCloseButtonStyle;
-		winCloseButtonStyle.normal.texture = getGUITexture(WindowCloseButtonNormal);
-		winCloseButtonStyle.hover.texture = getGUITexture(WindowCloseButtonHover);
-		winCloseButtonStyle.active.texture = winCloseButtonStyle.hover.texture;
+		winCloseButtonStyle.normal.texture = getGUITexture(CloseButtonNormalTex);
+		winCloseButtonStyle.hover.texture = getGUITexture(CloseButtonHoverTex);
+		winCloseButtonStyle.active.texture = getGUITexture(CloseButtonActiveTex);
 		winCloseButtonStyle.fixedHeight = true;
 		winCloseButtonStyle.fixedHeight = true;
 		winCloseButtonStyle.fixedWidth = true;
 		winCloseButtonStyle.fixedWidth = true;
-		winCloseButtonStyle.height = 7;
-		winCloseButtonStyle.width = 8;
+		winCloseButtonStyle.height = 14;
+		winCloseButtonStyle.width = 14;
 
 
 		skin->setStyle("WinCloseBtn", winCloseButtonStyle);
 		skin->setStyle("WinCloseBtn", winCloseButtonStyle);
 
 
@@ -1465,8 +1468,8 @@ namespace BansheeEngine
 		/* 								STATUS BAR                      		*/
 		/* 								STATUS BAR                      		*/
 		/************************************************************************/
 		/************************************************************************/
 		GUIElementStyle statusBarBgStyle;
 		GUIElementStyle statusBarBgStyle;
-		statusBarBgStyle.fixedHeight = true;
-		statusBarBgStyle.height = 13;
+		statusBarBgStyle.height = 16;
+		statusBarBgStyle.border.top = 2;
 		statusBarBgStyle.normal.texture = getGUITexture(StatusBarBgTex);
 		statusBarBgStyle.normal.texture = getGUITexture(StatusBarBgTex);
 
 
 		skin->setStyle(GUIStatusBar::getGUIBackgroundTypeName(), statusBarBgStyle);
 		skin->setStyle(GUIStatusBar::getGUIBackgroundTypeName(), statusBarBgStyle);
@@ -1474,9 +1477,8 @@ namespace BansheeEngine
 		GUIElementStyle statusBarMessageBtnStyle;
 		GUIElementStyle statusBarMessageBtnStyle;
 		statusBarMessageBtnStyle.font = font;
 		statusBarMessageBtnStyle.font = font;
 		statusBarMessageBtnStyle.fontSize = DefaultFontSize;
 		statusBarMessageBtnStyle.fontSize = DefaultFontSize;
-		statusBarMessageBtnStyle.fixedWidth = false;
 		statusBarMessageBtnStyle.fixedHeight = true;
 		statusBarMessageBtnStyle.fixedHeight = true;
-		statusBarMessageBtnStyle.height = 13;
+		statusBarMessageBtnStyle.height = 16;
 		statusBarMessageBtnStyle.minWidth = 10;
 		statusBarMessageBtnStyle.minWidth = 10;
 		statusBarMessageBtnStyle.textHorzAlign = THA_Left;
 		statusBarMessageBtnStyle.textHorzAlign = THA_Left;
 		statusBarMessageBtnStyle.textVertAlign = TVA_Center;
 		statusBarMessageBtnStyle.textVertAlign = TVA_Center;
@@ -1485,8 +1487,7 @@ namespace BansheeEngine
 		skin->setStyle(GUIStatusBar::getGUIMessageTypeName(), statusBarMessageBtnStyle);
 		skin->setStyle(GUIStatusBar::getGUIMessageTypeName(), statusBarMessageBtnStyle);
 
 
 		GUIElementStyle statusBarStyle;
 		GUIElementStyle statusBarStyle;
-		statusBarStyle.fixedHeight = true;
-		statusBarStyle.height = 13;
+		statusBarStyle.height = 16;
 
 
 		statusBarStyle.subStyles[GUIStatusBar::getGUIBackgroundTypeName()] = GUIStatusBar::getGUIBackgroundTypeName();
 		statusBarStyle.subStyles[GUIStatusBar::getGUIBackgroundTypeName()] = GUIStatusBar::getGUIBackgroundTypeName();
 		statusBarStyle.subStyles[GUIStatusBar::getGUIMessageTypeName()] = GUIStatusBar::getGUIMessageTypeName();
 		statusBarStyle.subStyles[GUIStatusBar::getGUIMessageTypeName()] = GUIStatusBar::getGUIMessageTypeName();

+ 4 - 1
BansheeEditor/Source/BsGUIStatusBar.cpp

@@ -29,7 +29,10 @@ namespace BansheeEngine
 		mBackground = GUITexture::create(GUIOptions(GUIOption::flexibleWidth()), getSubStyleName(getGUIBackgroundTypeName()));
 		mBackground = GUITexture::create(GUIOptions(GUIOption::flexibleWidth()), getSubStyleName(getGUIBackgroundTypeName()));
 		mMessage = GUIButton::create(HString(L""), GUIOptions(GUIOption::flexibleWidth()), getSubStyleName(getGUIMessageTypeName()));
 		mMessage = GUIButton::create(HString(L""), GUIOptions(GUIOption::flexibleWidth()), getSubStyleName(getGUIMessageTypeName()));
 
 
-		GUILayoutX* horzLayout = mPanel->addNewElement<GUILayoutX>();
+		GUILayoutY* vertLayout = mPanel->addNewElement<GUILayoutY>();
+		vertLayout->addNewElement<GUIFixedSpace>(3);
+		GUILayoutX* horzLayout = vertLayout->addNewElement<GUILayoutX>();
+
 		horzLayout->addNewElement<GUIFixedSpace>(10);
 		horzLayout->addNewElement<GUIFixedSpace>(10);
 		horzLayout->addElement(mMessage);
 		horzLayout->addElement(mMessage);
 		horzLayout->addNewElement<GUIFixedSpace>(20);
 		horzLayout->addNewElement<GUIFixedSpace>(20);

+ 1 - 1
BansheeEditor/Source/BsGUITabbedTitleBar.cpp

@@ -34,7 +34,7 @@ namespace BansheeEngine
 			mBackgroundStyle = "TitleBarBackground";
 			mBackgroundStyle = "TitleBarBackground";
 
 
 		if(mMaximizeBtnStyle == StringUtil::BLANK)
 		if(mMaximizeBtnStyle == StringUtil::BLANK)
-			mMaximizeBtnStyle = "WinMinimizeBtn";
+			mMaximizeBtnStyle = "WinMaximizeBtn";
 
 
 		if(mCloseBtnStyle == StringUtil::BLANK)
 		if(mCloseBtnStyle == StringUtil::BLANK)
 			mCloseBtnStyle = "WinCloseBtn";
 			mCloseBtnStyle = "WinCloseBtn";

+ 1 - 1
BansheeEditor/Source/BsMainEditorWindow.cpp

@@ -56,7 +56,7 @@ namespace BansheeEngine
 		UINT32 menuBarHeight = 15;
 		UINT32 menuBarHeight = 15;
 		mMenuBar->setArea(1, 1, widgetWidth, menuBarHeight);
 		mMenuBar->setArea(1, 1, widgetWidth, menuBarHeight);
 
 
-		UINT32 statusBarHeight = 20;
+		UINT32 statusBarHeight = 21;
 		UINT32 dockHeight = (UINT32)std::max(0, (INT32)widgetHeight - (INT32)(menuBarHeight + statusBarHeight));
 		UINT32 dockHeight = (UINT32)std::max(0, (INT32)widgetHeight - (INT32)(menuBarHeight + statusBarHeight));
 		mDockManager->setArea(1, menuBarHeight + 1, widgetWidth, dockHeight);
 		mDockManager->setArea(1, menuBarHeight + 1, widgetWidth, dockHeight);
 
 

+ 8 - 5
BansheeEngine/Source/BsGUIHelper.cpp

@@ -18,15 +18,18 @@ namespace BansheeEngine
 	{
 	{
 		Vector2I textContentBounds = calcOptimalContentsSize((const WString&)content.getText(), style, dimensions);
 		Vector2I textContentBounds = calcOptimalContentsSize((const WString&)content.getText(), style, dimensions);
 
 
-		UINT32 contentWidth = style.margins.left + style.margins.right + style.contentOffset.left + style.contentOffset.right;
-		UINT32 contentHeight = style.margins.top + style.margins.bottom + style.contentOffset.top + style.contentOffset.bottom;
+		Vector2I imageSize;
+		imageSize.x = style.margins.left + style.margins.right + style.contentOffset.left + style.contentOffset.right;
+		imageSize.y = style.margins.top + style.margins.bottom + style.contentOffset.top + style.contentOffset.bottom;
 		if(content.getImage() != nullptr)
 		if(content.getImage() != nullptr)
 		{
 		{
-			contentWidth += content.getImage()->getWidth();
-			contentHeight += content.getImage()->getHeight();
+			imageSize.x += content.getImage()->getWidth();
+			imageSize.y += content.getImage()->getHeight();
+
+			imageSize = dimensions.calculateSizeRange(imageSize).optimal;
 		}
 		}
 
 
-		return Vector2I(std::max((UINT32)textContentBounds.x, contentWidth), std::max((UINT32)textContentBounds.y, contentHeight));
+		return Vector2I(std::max((UINT32)textContentBounds.x, (UINT32)imageSize.x), std::max((UINT32)textContentBounds.y, (UINT32)imageSize.y));
 	}
 	}
 
 
 	Vector2I GUIHelper::calcOptimalContentsSize(const WString& text, const GUIElementStyle& style, const GUIDimensions& dimensions)
 	Vector2I GUIHelper::calcOptimalContentsSize(const WString& text, const GUIElementStyle& style, const GUIDimensions& dimensions)