Bug 1181395 - Avoid runtime conversion or copy of names of window classes on Windows. r=jimm

--HG--
extra : source : 9ba468db37a17a3f39191b8802283e88589e4135
This commit is contained in:
Xidorn Quan 2015-07-09 08:00:33 +10:00
Родитель 5c9cd6704d
Коммит d54d12611a
4 изменённых файлов: 10 добавлений и 16 удалений

Просмотреть файл

@ -173,8 +173,6 @@ nsUXThemeData::UpdateTitlebarInfo(HWND aWnd)
// Query a temporary, visible window with command buttons to get
// the right metrics.
nsAutoString className;
className.AssignLiteral(kClassNameTemp);
WNDCLASSW wc;
wc.style = 0;
wc.lpfnWndProc = ::DefWindowProcW;
@ -185,7 +183,7 @@ nsUXThemeData::UpdateTitlebarInfo(HWND aWnd)
wc.hCursor = nullptr;
wc.hbrBackground = nullptr;
wc.lpszMenuName = nullptr;
wc.lpszClassName = className.get();
wc.lpszClassName = kClassNameTemp;
::RegisterClassW(&wc);
// Create a transparent descendant of the window passed in. This
@ -193,7 +191,7 @@ nsUXThemeData::UpdateTitlebarInfo(HWND aWnd)
// Note the parent (browser) window is usually still hidden, we
// don't want to display it, so we can't query it directly.
HWND hWnd = CreateWindowExW(WS_EX_LAYERED,
className.get(), L"",
kClassNameTemp, L"",
WS_OVERLAPPEDWINDOW,
0, 0, 0, 0, aWnd, nullptr,
nsToolkit::mDllInstance, nullptr);

Просмотреть файл

@ -245,9 +245,6 @@ BYTE nsWindow::sLastMouseButton = 0;
// Trim heap on minimize. (initialized, but still true.)
int nsWindow::sTrimOnMinimize = 2;
// Default value for general window class (used when the pref is the empty string).
const char* nsWindow::sDefaultMainWindowClass = kClassNameGeneral;
TriStateBool nsWindow::sHasBogusPopupsDropShadowOnMultiMonitor = TRI_UNKNOWN;
DWORD nsWindow::sFirstEventTime = 0;
@ -540,7 +537,7 @@ nsWindow::Create(nsIWidget *aParent,
}
}
nsAutoString className;
nsString className;
if (aInitData->mDropShadow) {
GetWindowPopupClass(className);
} else {
@ -2929,7 +2926,7 @@ nsWindow::MakeFullScreen(bool aFullScreen, nsIScreen* aTargetScreen)
// Return some native data according to aDataType
void* nsWindow::GetNativeData(uint32_t aDataType)
{
nsAutoString className;
nsString className;
switch (aDataType) {
case NS_NATIVE_TMP_WINDOW:
GetWindowClass(className);
@ -7562,7 +7559,7 @@ void nsWindow::GetMainWindowClass(nsAString& aClass)
NS_PRECONDITION(aClass.IsEmpty(), "aClass should be empty string");
nsresult rv = Preferences::GetString("ui.window_class_override", &aClass);
if (NS_FAILED(rv) || aClass.IsEmpty()) {
aClass.AssignASCII(sDefaultMainWindowClass);
aClass.AssignLiteral(kClassNameGeneral);
}
}

Просмотреть файл

@ -499,7 +499,6 @@ protected:
static bool sJustGotActivate;
static bool sIsInMouseCapture;
static int sTrimOnMinimize;
static const char* sDefaultMainWindowClass;
// Always use the helper method to read this property. See bug 603793.
static TriStateBool sHasBogusPopupsDropShadowOnMultiMonitor;

Просмотреть файл

@ -213,11 +213,11 @@ typedef enum
* touchpad scrolling or screen readers.
*/
const uint32_t kMaxClassNameLength = 40;
const char kClassNameHidden[] = "MozillaHiddenWindowClass";
const char kClassNameGeneral[] = "MozillaWindowClass";
const char kClassNameDialog[] = "MozillaDialogClass";
const char kClassNameDropShadow[] = "MozillaDropShadowWindowClass";
const char kClassNameTemp[] = "MozillaTempWindowClass";
const wchar_t kClassNameHidden[] = L"MozillaHiddenWindowClass";
const wchar_t kClassNameGeneral[] = L"MozillaWindowClass";
const wchar_t kClassNameDialog[] = L"MozillaDialogClass";
const wchar_t kClassNameDropShadow[] = L"MozillaDropShadowWindowClass";
const wchar_t kClassNameTemp[] = L"MozillaTempWindowClass";
/**************************************************************
*