Bringing in-line with V2. mbstowcs->MultiByteToWideChar, ancient comment removal, fullscreen behavior check...
This commit is contained in:
@@ -2841,8 +2841,16 @@ void LLSplashScreenWin32::updateImpl(const std::string& mesg)
|
||||
{
|
||||
if (!mWindow) return;
|
||||
|
||||
WCHAR w_mesg[1024];
|
||||
mbstowcs(w_mesg, mesg.c_str(), 1024);
|
||||
int output_str_len = MultiByteToWideChar(CP_UTF8, 0, mesg.c_str(), mesg.length(), NULL, 0);
|
||||
if( output_str_len>1024 )
|
||||
return;
|
||||
|
||||
WCHAR w_mesg[1025];//big enought to keep null terminatos
|
||||
|
||||
MultiByteToWideChar (CP_UTF8, 0, mesg.c_str(), mesg.length(), w_mesg, output_str_len);
|
||||
|
||||
//looks like MultiByteToWideChar didn't add null terminator to converted string, see EXT-4858
|
||||
w_mesg[output_str_len] = 0;
|
||||
|
||||
SendDlgItemMessage(mWindow,
|
||||
666, // HACK: text id
|
||||
@@ -2970,78 +2978,6 @@ void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )
|
||||
sei.lpFile = url_utf16.c_str();
|
||||
ShellExecuteEx( &sei );
|
||||
|
||||
//// TODO: LEAVING OLD CODE HERE SO I DON'T BONE OTHER MERGES
|
||||
//// DELETE THIS ONCE THE MERGES ARE DONE
|
||||
|
||||
// Figure out the user's default web browser
|
||||
// HKEY_CLASSES_ROOT\http\shell\open\command
|
||||
/*
|
||||
std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command";
|
||||
WCHAR reg_path_wstr[256];
|
||||
mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) );
|
||||
|
||||
HKEY key;
|
||||
WCHAR browser_open_wstr[1024];
|
||||
DWORD buffer_length = 1024;
|
||||
RegOpenKeyEx(HKEY_CLASSES_ROOT, reg_path_wstr, 0, KEY_QUERY_VALUE, &key);
|
||||
RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE)browser_open_wstr, &buffer_length);
|
||||
RegCloseKey(key);
|
||||
|
||||
// Convert to STL string
|
||||
LLWString browser_open_wstring = utf16str_to_wstring(browser_open_wstr);
|
||||
|
||||
if (browser_open_wstring.length() < 2)
|
||||
{
|
||||
LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
|
||||
// Extract the process that's supposed to be launched
|
||||
LLWString browser_executable;
|
||||
if (browser_open_wstring[0] == '"')
|
||||
{
|
||||
// executable is quoted, find the matching quote
|
||||
size_t quote_pos = browser_open_wstring.find('"', 1);
|
||||
// copy out the string including both quotes
|
||||
browser_executable = browser_open_wstring.substr(0, quote_pos+1);
|
||||
}
|
||||
else
|
||||
{
|
||||
// executable not quoted, find a space
|
||||
size_t space_pos = browser_open_wstring.find(' ', 1);
|
||||
browser_executable = browser_open_wstring.substr(0, space_pos);
|
||||
}
|
||||
|
||||
LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL;
|
||||
LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL;
|
||||
|
||||
// Convert URL to wide string for Windows API
|
||||
// Assume URL is UTF8, as can come from scripts
|
||||
LLWString url_wstring = utf8str_to_wstring(escaped_url);
|
||||
llutf16string url_utf16 = wstring_to_utf16str(url_wstring);
|
||||
|
||||
// Convert executable and path to wide string for Windows API
|
||||
llutf16string browser_exec_utf16 = wstring_to_utf16str(browser_executable);
|
||||
|
||||
// ShellExecute returns HINSTANCE for backwards compatiblity.
|
||||
// MS docs say to cast to int and compare to 32.
|
||||
HWND our_window = NULL;
|
||||
LPCWSTR directory_wstr = NULL;
|
||||
int retval = (int) ShellExecute(our_window, // Flawfinder: ignore
|
||||
L"open",
|
||||
browser_exec_utf16.c_str(),
|
||||
url_utf16.c_str(),
|
||||
directory_wstr,
|
||||
SW_SHOWNORMAL);
|
||||
if (retval > 32)
|
||||
{
|
||||
LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -686,11 +686,12 @@ BOOL LLViewerWindow::handleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask
|
||||
llinfos << "Left Mouse Down not handled by view" << llendl;
|
||||
}
|
||||
|
||||
// Do not allow tool manager to handle mouseclicks if we have disconnected
|
||||
if (gDisconnected)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
if(LLToolMgr::getInstance()->getCurrentTool()->handleMouseDown( x, y, mask ) )
|
||||
{
|
||||
// This is necessary to force clicks in the world to cause edit
|
||||
@@ -1499,6 +1500,15 @@ LLViewerWindow::LLViewerWindow(
|
||||
LL_WARNS("Window") << " Someone took over my signal/exception handler (post createWindow)!" << LL_ENDL;
|
||||
}
|
||||
|
||||
LLCoordScreen scr;
|
||||
mWindow->getSize(&scr);
|
||||
|
||||
if(fullscreen && ( scr.mX!=width || scr.mY!=height))
|
||||
{
|
||||
llwarns << "Fullscreen has forced us in to a different resolution now using "<<scr.mX<<" x "<<scr.mY<<llendl;
|
||||
gSavedSettings.setS32("FullScreenWidth",scr.mX);
|
||||
gSavedSettings.setS32("FullScreenHeight",scr.mY);
|
||||
}
|
||||
|
||||
if (NULL == mWindow)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user