Merge branch 'SL-15999' of ssh://bitbucket.org/lindenlab/viewer into SL-15999

meow-7.2.2
Brad Payne (Vir Linden) 2021-09-29 16:50:57 +01:00
commit 19154bec15
9 changed files with 73 additions and 5 deletions

View File

@ -137,6 +137,12 @@ BOOL LLWindow::canDelete()
return TRUE;
}
//virtual
void LLWindow::setTitle(const std::string title)
{
// the action happens in the platform specific impl
}
// virtual
void LLWindow::incBusyCount()
{

View File

@ -86,6 +86,13 @@ public:
virtual void showCursorFromMouseMove() = 0;
virtual void hideCursorUntilMouseMove() = 0;
// Provide a way to set the Viewer window title after the
// windows has been created. The initial use case for this
// is described in SL-16102 (update window title with agent
// name, location etc. for non-interactive viewer) but it
// may also be useful in other cases.
virtual void setTitle(const std::string title);
// These two functions create a way to make a busy cursor instead
// of an arrow when someone's busy doing something. Draw an
// arrow/hour if busycount > 0.

View File

@ -1811,6 +1811,13 @@ void LLWindowWin32::moveWindow( const LLCoordScreen& position, const LLCoordScre
MoveWindow(mWindowHandle, position.mX, position.mY, size.mX, size.mY, TRUE);
}
void LLWindowWin32::setTitle(const std::string title)
{
// TODO: Do we need to use the wide string version of this call
// to support non-ascii usernames (and region names??)
SetWindowTextA(mWindowHandle, title.c_str());
}
BOOL LLWindowWin32::setCursorPosition(const LLCoordWindow position)
{
mMousePositionModified = TRUE;

View File

@ -58,7 +58,8 @@ public:
/*virtual*/ BOOL setSizeImpl(LLCoordScreen size);
/*virtual*/ BOOL setSizeImpl(LLCoordWindow size);
/*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL);
/*virtual*/ BOOL setCursorPosition(LLCoordWindow position);
/*virtual*/ void setTitle(const std::string title);
/*virtual*/ BOOL setCursorPosition(LLCoordWindow position);
/*virtual*/ BOOL getCursorPosition(LLCoordWindow *position);
/*virtual*/ void showCursor();
/*virtual*/ void hideCursor();

View File

@ -16666,6 +16666,17 @@
<key>Value</key>
<integer>1</integer>
</map>
<key>UpdateAppWindowTitleBar</key>
<map>
<key>Comment</key>
<string>Updates the application window title bar with brief information about user/location</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
</map>
</llsd>

View File

@ -2632,9 +2632,10 @@ bool LLAppViewer::initConfiguration()
disableCrashlogger();
}
gNonInteractive = gSavedSettings.getBOOL("NonInteractive");
// Handle initialization from settings.
// Start up the debugging console before handling other options.
if (gSavedSettings.getBOOL("ShowConsoleWindow"))
if (gSavedSettings.getBOOL("ShowConsoleWindow") && !gNonInteractive)
{
initConsole();
}
@ -2755,7 +2756,6 @@ bool LLAppViewer::initConfiguration()
}
}
gNonInteractive = gSavedSettings.getBOOL("NonInteractive");
if (gNonInteractive)
{
tempSetControl("SLURLPassToOtherInstance", "FALSE");

View File

@ -39,6 +39,11 @@
#include "llviewerregion.h"
#include "llworldmap.h"
#include "llagentui.h"
#include "llwindow.h"
#include "llviewerwindow.h"
#include "llavatarname.h"
#include "llavatarnamecache.h"
//////////////////////////////////////////////////////////////////////////////
// LLTeleportHistoryItem
@ -174,6 +179,28 @@ void LLTeleportHistory::updateCurrentLocation(const LLVector3d& new_pos)
if (!mGotInitialUpdate)
mGotInitialUpdate = true;
// update Viewer window title with username and region name
// if we are in "non-interactive mode" (SL-15999) or the debug
// setting to allow it is enabled (may be useful in other situations)
if (gNonInteractive || gSavedSettings.getBOOL("UpdateAppWindowTitleBar"))
{
LLAvatarName av_name;
if (LLAvatarNameCache::get(gAgent.getID(), &av_name))
{
if (gAgent.getRegion() && gViewerWindow && gViewerWindow->getWindow())
{
std::string region = gAgent.getRegion()->getName();
std::string username = av_name.getUserName();
// this first pass simply displays username and region name
// but could easily be extended to include other details like
// X/Y/Z location within a region etc.
std::string new_title = STRINGIZE(username << " @ " << region);
gViewerWindow->getWindow()->setTitle(new_title);
}
}
}
// Signal the interesting party that we've changed.
onHistoryChanged();
}

View File

@ -124,7 +124,8 @@ void display_startup()
if ( !gViewerWindow
|| !gViewerWindow->getActive()
|| !gViewerWindow->getWindow()->getVisible()
|| gViewerWindow->getWindow()->getMinimized() )
|| gViewerWindow->getWindow()->getMinimized()
|| gNonInteractive)
{
return;
}
@ -309,7 +310,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
// Attempting to draw into a minimized window causes a GL error. JC
if ( !gViewerWindow->getActive()
|| !gViewerWindow->getWindow()->getVisible()
|| gViewerWindow->getWindow()->getMinimized() )
|| gViewerWindow->getWindow()->getMinimized()
|| gNonInteractive)
{
// Clean up memory the pools may have allocated
if (rebuild)

View File

@ -2195,6 +2195,13 @@ void LLViewerWindow::initBase()
void LLViewerWindow::initWorldUI()
{
if (gNonInteractive)
{
gIMMgr = LLIMMgr::getInstance();
gFloaterView->pushVisibleAll(FALSE);
return;
}
S32 height = mRootView->getRect().getHeight();
S32 width = mRootView->getRect().getWidth();
LLRect full_window(0, height, width, 0);