summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorRichard Linden <none@none>2011-11-28 12:51:15 -0800
committerRichard Linden <none@none>2011-11-28 12:51:15 -0800
commit20221c8e77824068d4a54885f5c57ace1c9660a2 (patch)
tree8b09fa03102129fe21b96320a2f3071b15f6998e /indra/newview
parent8a442d5edb9074fa76856fc739b362a7374bc1cf (diff)
EXP-1485 FIX -- Viewer should have a minimum size
moved min size logic into LLWindow
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/llappviewer.cpp30
-rw-r--r--indra/newview/llfloaterwindowsize.cpp35
-rw-r--r--indra/newview/llfloaterwindowsize.h22
-rw-r--r--indra/newview/llviewerfloaterreg.cpp2
-rw-r--r--indra/newview/llviewerprecompiledheaders.h3
-rw-r--r--indra/newview/llviewerwindow.cpp70
-rw-r--r--indra/newview/llviewerwindow.h19
7 files changed, 89 insertions, 92 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 9b8f5c5961..106b272767 100755
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2861,22 +2861,20 @@ bool LLAppViewer::initWindow()
// always start windowed
BOOL ignorePixelDepth = gSavedSettings.getBOOL("IgnorePixelDepth");
- // clamp to minimum window size
- U32 min_window_width=gSavedSettings.getU32("MinWindowWidth");
- U32 window_width=gSavedSettings.getU32("WindowWidth");
- if ( window_width < min_window_width )
- window_width=min_window_width;
-
- U32 min_window_height=gSavedSettings.getU32("MinWindowHeight");
- U32 window_height=gSavedSettings.getU32("WindowHeight");
- if ( window_height < min_window_height )
- window_height=min_window_height;
-
- gViewerWindow = new LLViewerWindow(gWindowTitle,
- VIEWER_WINDOW_CLASSNAME,
- gSavedSettings.getS32("WindowX"), gSavedSettings.getS32("WindowY"),
- window_width, window_height,
- gSavedSettings.getBOOL("WindowFullScreen"), ignorePixelDepth);
+ LLViewerWindow::Params window_params;
+ window_params
+ .title(gWindowTitle)
+ .name(VIEWER_WINDOW_CLASSNAME)
+ .x(gSavedSettings.getS32("WindowX"))
+ .y(gSavedSettings.getS32("WindowY"))
+ .width(gSavedSettings.getU32("WindowWidth"))
+ .height(gSavedSettings.getU32("WindowHeight"))
+ .min_width(gSavedSettings.getU32("MinWindowWidth"))
+ .min_height(gSavedSettings.getU32("MinWindowHeight"))
+ .fullscreen(gSavedSettings.getBOOL("WindowFullScreen"))
+ .ignore_pixel_depth(ignorePixelDepth);
+
+ gViewerWindow = new LLViewerWindow(window_params);
LL_INFOS("AppInit") << "gViewerwindow created." << LL_ENDL;
diff --git a/indra/newview/llfloaterwindowsize.cpp b/indra/newview/llfloaterwindowsize.cpp
index a70f2af11a..ec161018b8 100644
--- a/indra/newview/llfloaterwindowsize.cpp
+++ b/indra/newview/llfloaterwindowsize.cpp
@@ -58,33 +58,12 @@ bool extractWindowSizeFromString(const std::string& instr, U32 *width, U32 *heig
}
-///----------------------------------------------------------------------------
-/// Class LLFloaterWindowSize
-///----------------------------------------------------------------------------
-class LLFloaterWindowSize
-: public LLFloater
-{
- friend class LLFloaterReg;
-private:
- LLFloaterWindowSize(const LLSD& key);
- virtual ~LLFloaterWindowSize();
-
-public:
- /*virtual*/ BOOL postBuild();
- void initWindowSizeControls();
- void onClickSet();
- void onClickCancel();
-};
-
-
LLFloaterWindowSize::LLFloaterWindowSize(const LLSD& key)
: LLFloater(key)
-{
-}
+{}
LLFloaterWindowSize::~LLFloaterWindowSize()
-{
-}
+{}
BOOL LLFloaterWindowSize::postBuild()
{
@@ -145,13 +124,3 @@ void LLFloaterWindowSize::onClickCancel()
{
closeFloater();
}
-
-///----------------------------------------------------------------------------
-/// LLFloaterWindowSizeUtil
-///----------------------------------------------------------------------------
-void LLFloaterWindowSizeUtil::registerFloater()
-{
- LLFloaterReg::add("window_size", "floater_window_size.xml",
- &LLFloaterReg::build<LLFloaterWindowSize>);
-
-}
diff --git a/indra/newview/llfloaterwindowsize.h b/indra/newview/llfloaterwindowsize.h
index 40f1a25bb3..a71e5e273c 100644
--- a/indra/newview/llfloaterwindowsize.h
+++ b/indra/newview/llfloaterwindowsize.h
@@ -26,10 +26,24 @@
#ifndef LLFLOATERWINDOWSIZE_H
#define LLFLOATERWINDOWSIZE_H
-// Allow user to set the window size for filming tutorials, machinima, etc
-namespace LLFloaterWindowSizeUtil
+#include "llfloater.h"
+
+///----------------------------------------------------------------------------
+/// Class LLFloaterWindowSize
+///----------------------------------------------------------------------------
+class LLFloaterWindowSize
+ : public LLFloater
{
- void registerFloater();
-}
+ friend class LLFloaterReg;
+private:
+ LLFloaterWindowSize(const LLSD& key);
+ virtual ~LLFloaterWindowSize();
+
+public:
+ /*virtual*/ BOOL postBuild();
+ void initWindowSizeControls();
+ void onClickSet();
+ void onClickCancel();
+};
#endif
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 0ec8cc1d4e..acbc5f8fb6 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -302,7 +302,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("web_content", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create);
LLFloaterReg::add("whitelist_entry", "floater_whitelist_entry.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWhiteListEntry>);
- LLFloaterWindowSizeUtil::registerFloater();
+ LLFloaterReg::add("window_size", "floater_window_size.xml", &LLFloaterReg::build<LLFloaterWindowSize>);
LLFloaterReg::add("world_map", "floater_world_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWorldMap>);
// *NOTE: Please keep these alphabetized for easier merges
diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h
index 12f6a0dd1c..f738b84bb9 100644
--- a/indra/newview/llviewerprecompiledheaders.h
+++ b/indra/newview/llviewerprecompiledheaders.h
@@ -124,4 +124,7 @@
// Library includes from llmessage project
#include "llcachename.h"
+// Library includes from llxuixml
+#include "llinitparam.h"
+
#endif
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 140cbb4e04..f24bab29a6 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -838,6 +838,20 @@ void LLViewerWindow::updateDebugText()
// LLViewerWindow
//
+LLViewerWindow::Params::Params()
+: title("title"),
+ name("name"),
+ x("x"),
+ y("y"),
+ width("width"),
+ height("height"),
+ min_width("min_width"),
+ min_height("min_height"),
+ fullscreen("fullscreen", false),
+ ignore_pixel_depth("ignore_pixel_depth", false)
+{}
+
+
BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK mask, LLMouseHandler::EClickType clicktype, BOOL down)
{
const char* buttonname = "";
@@ -1531,18 +1545,13 @@ std::string LLViewerWindow::translateString(const char* tag,
//
// Classes
//
-LLViewerWindow::LLViewerWindow(
- const std::string& title, const std::string& name,
- S32 x, S32 y,
- S32 width, S32 height,
- BOOL fullscreen, BOOL ignore_pixel_depth) // fullscreen is no longer used
- :
- mWindow(NULL),
+LLViewerWindow::LLViewerWindow(const Params& p)
+: mWindow(NULL),
mActive(true),
mUIVisible(true),
- mWindowRectRaw(0, height, width, 0),
- mWindowRectScaled(0, height, width, 0),
- mWorldViewRectRaw(0, height, width, 0),
+ mWindowRectRaw(0, p.height, p.width, 0),
+ mWindowRectScaled(0, p.height, p.width, 0),
+ mWorldViewRectRaw(0, p.height, p.width, 0),
mLeftMouseDown(FALSE),
mMiddleMouseDown(FALSE),
mRightMouseDown(FALSE),
@@ -1578,12 +1587,12 @@ LLViewerWindow::LLViewerWindow(
// create window
mWindow = LLWindowManager::createWindow(this,
- title, name, x, y, width, height, 0,
- fullscreen,
+ p.title, p.name, p.x, p.y, p.width, p.height, 0,
+ p.fullscreen,
gHeadlessClient,
gSavedSettings.getBOOL("DisableVerticalSync"),
!gHeadlessClient,
- ignore_pixel_depth,
+ p.ignore_pixel_depth,
gSavedSettings.getBOOL("RenderDeferred") ? 0 : gSavedSettings.getU32("RenderFSAASamples")); //don't use window level anti-aliasing if FBOs are enabled
if (NULL == mWindow)
@@ -1610,10 +1619,11 @@ LLViewerWindow::LLViewerWindow(
LL_WARNS("Window") << " Someone took over my signal/exception handler (post createWindow)!" << LL_ENDL;
}
+ mWindow->setMinSize(p.min_width, p.min_height);
LLCoordScreen scr;
mWindow->getSize(&scr);
- if(fullscreen && ( scr.mX!=width || scr.mY!=height))
+ if(p.fullscreen && ( scr.mX!=p.width || scr.mY!=p.height))
{
llwarns << "Fullscreen has forced us in to a different resolution now using "<<scr.mX<<" x "<<scr.mY<<llendl;
gSavedSettings.setS32("FullScreenWidth",scr.mX);
@@ -2157,21 +2167,11 @@ void LLViewerWindow::reshape(S32 width, S32 height)
BOOL maximized = mWindow->getMaximized();
gSavedSettings.setBOOL("WindowMaximized", maximized);
- LLCoordScreen window_size;
- if (!maximized
- && mWindow->getSize(&window_size))
+ if (!maximized)
{
U32 min_window_width=gSavedSettings.getU32("MinWindowWidth");
- if ( window_size.mX < min_window_width )
- window_size.mX=min_window_width;
- gSavedSettings.setU32("WindowWidth", window_size.mX);
-
U32 min_window_height=gSavedSettings.getU32("MinWindowHeight");
- if ( window_size.mY < min_window_height )
- window_size.mY=min_window_height;
- gSavedSettings.setU32("WindowHeight", window_size.mY);
-
- // tell the OS specific window code about min windoow size
+ // tell the OS specific window code about min window size
mWindow->setMinSize(min_window_width, min_window_height);
}
@@ -4099,25 +4099,21 @@ void LLViewerWindow::resetSnapshotLoc()
sSnapshotDir.clear();
}
-static S32 BORDERHEIGHT = 0;
-static S32 BORDERWIDTH = 0;
-
// static
void LLViewerWindow::movieSize(S32 new_width, S32 new_height)
{
- LLCoordScreen size;
+ LLCoordWindow size;
gViewerWindow->getWindow()->getSize(&size);
- if ( (size.mX != new_width + BORDERWIDTH)
- ||(size.mY != new_height + BORDERHEIGHT))
+ if ( size.mX != new_width
+ || size.mY != new_height)
{
// use actual display dimensions, not virtual UI dimensions
S32 x = gViewerWindow->getWindowWidthRaw();
S32 y = gViewerWindow->getWindowHeightRaw();
- BORDERWIDTH = size.mX - x;
- BORDERHEIGHT = size.mY- y;
- LLCoordScreen new_size(new_width + BORDERWIDTH,
- new_height + BORDERHEIGHT);
- gViewerWindow->getWindow()->setSize(new_size);
+ LLCoordWindow new_size(new_width, new_height);
+ LLCoordScreen screen_size;
+ gViewerWindow->getWindow()->convertCoords(new_size, &screen_size);
+ gViewerWindow->getWindow()->setSize(screen_size);
}
}
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 0cb7f82b58..6efcaeaf18 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -44,6 +44,7 @@
#include "llstat.h"
#include "llmousehandler.h"
#include "llhandle.h"
+#include "llinitparam.h"
#include <boost/function.hpp>
#include <boost/signals2.hpp>
@@ -133,7 +134,23 @@ public:
//
// CREATORS
//
- LLViewerWindow(const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, BOOL fullscreen, BOOL ignore_pixel_depth);
+ struct Params : public LLInitParam::Block<Params>
+ {
+ Mandatory<std::string> title,
+ name;
+ Mandatory<S32> x,
+ y,
+ width,
+ height,
+ min_width,
+ min_height;
+ Optional<bool> fullscreen,
+ ignore_pixel_depth;
+
+ Params();
+ };
+
+ LLViewerWindow(const Params& p);
virtual ~LLViewerWindow();
void shutdownViews();