170852 patch by yokoyama@netscape.com r=shanjian sr=roc+moz Remove #ifdef MOZ_UNICODE and MOZ_AIMM (no makefile changes yet)
This commit is contained in:
Родитель
3163d8de5b
Коммит
32b722c132
|
@ -3517,16 +3517,8 @@ nsresult nsMsgCompose::AttachmentPrettyName(const char* url, PRUnichar** _retval
|
|||
char * leafName = fileSpec.GetLeafName();
|
||||
if (leafName && *leafName)
|
||||
{
|
||||
#ifdef MOZ_UNICODE
|
||||
/* file URL is now in UTF-8 */
|
||||
*_retval = ToNewUnicode(NS_ConvertUTF8toUCS2(leafName));
|
||||
#else
|
||||
nsAutoString tempStr;
|
||||
nsresult rv = ConvertToUnicode(nsMsgI18NFileSystemCharset(), leafName, tempStr);
|
||||
if (NS_FAILED(rv))
|
||||
tempStr.AssignWithConversion(leafName);
|
||||
*_retval = ToNewUnicode(tempStr);
|
||||
#endif /* MOZ_UNICODE */
|
||||
/* file URL is now in UTF-8 */
|
||||
*_retval = ToNewUnicode(NS_ConvertUTF8toUCS2(leafName));
|
||||
nsCRT::free(leafName);
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
|
@ -174,7 +174,6 @@ PRBool nsButton::OnResize(nsRect &aWindowRect)
|
|||
return PR_FALSE;
|
||||
}
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// return the window class name and initialize the class if needed
|
||||
|
@ -184,7 +183,6 @@ LPCWSTR nsButton::WindowClassW()
|
|||
{
|
||||
return L"BUTTON";
|
||||
}
|
||||
#endif /* MOZ_UNICODE */
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
|
|
|
@ -77,9 +77,7 @@ public:
|
|||
protected:
|
||||
nsString mLabel;
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
virtual LPCWSTR WindowClassW();
|
||||
#endif /* MOZ_UNICODE */
|
||||
virtual LPCTSTR WindowClass();
|
||||
virtual DWORD WindowStyle();
|
||||
virtual DWORD WindowExStyle();
|
||||
|
|
|
@ -199,7 +199,6 @@ PRBool nsCheckButton::OnResize(nsRect &aWindowRect)
|
|||
return PR_FALSE;
|
||||
}
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// return the window class name and initialize the class if needed
|
||||
|
@ -209,7 +208,6 @@ LPCWSTR nsCheckButton::WindowClassW()
|
|||
{
|
||||
return L"BUTTON";
|
||||
}
|
||||
#endif /* MOZ_UNICODE */
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
|
|
|
@ -80,9 +80,7 @@ public:
|
|||
protected:
|
||||
PRBool mState;
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
virtual LPCWSTR WindowClassW();
|
||||
#endif /* MOZ_UNICODE */
|
||||
virtual LPCTSTR WindowClass();
|
||||
virtual DWORD WindowStyle();
|
||||
virtual DWORD WindowExStyle();
|
||||
|
|
|
@ -176,7 +176,6 @@ PRBool nsLabel::OnResize(nsRect &aWindowRect)
|
|||
return PR_FALSE;
|
||||
}
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// return the window class name and initialize the class if needed
|
||||
|
@ -186,7 +185,6 @@ LPCWSTR nsLabel::WindowClassW()
|
|||
{
|
||||
return L"STATIC";
|
||||
}
|
||||
#endif /* MOZ_UNICODE */
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
|
|
|
@ -81,9 +81,7 @@ public:
|
|||
protected:
|
||||
nsLabelAlignment mAlignment;
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
virtual LPCWSTR WindowClassW();
|
||||
#endif /* MOZ_UNICODE */
|
||||
virtual LPCTSTR WindowClass();
|
||||
virtual DWORD WindowStyle();
|
||||
virtual DWORD WindowExStyle();
|
||||
|
|
|
@ -176,7 +176,6 @@ nsTextHelper::~nsTextHelper()
|
|||
{
|
||||
}
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// return the window class name and initialize the class if needed
|
||||
|
@ -186,7 +185,6 @@ LPCWSTR nsTextHelper::WindowClassW()
|
|||
{
|
||||
return(L"EDIT");
|
||||
}
|
||||
#endif /* MOZ_UNICODE */
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
|
|
|
@ -68,9 +68,7 @@ public:
|
|||
|
||||
NS_IMETHOD PreCreateWidget(nsWidgetInitData *aInitData);
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
virtual LPCWSTR WindowClassW();
|
||||
#endif /* MOZ_UNICODE */
|
||||
virtual LPCTSTR WindowClass();
|
||||
virtual DWORD WindowStyle();
|
||||
virtual PRBool AutoErase();
|
||||
|
|
|
@ -179,7 +179,6 @@ PRBool nsTextWidget::OnResize(nsRect &aWindowRect)
|
|||
return PR_FALSE;
|
||||
}
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// return the window class name and initialize the class if needed
|
||||
|
@ -189,7 +188,6 @@ LPCWSTR nsTextWidget::WindowClassW()
|
|||
{
|
||||
return(nsTextHelper::WindowClassW());
|
||||
}
|
||||
#endif /* MOZ_UNICODE */
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
|
|
|
@ -75,9 +75,7 @@ public:
|
|||
|
||||
|
||||
protected:
|
||||
#ifdef MOZ_UNICODE
|
||||
virtual LPCWSTR WindowClassW();
|
||||
#endif /* MOZ_UNICODE */
|
||||
virtual LPCTSTR WindowClass();
|
||||
virtual DWORD WindowStyle();
|
||||
virtual DWORD WindowExStyle();
|
||||
|
|
|
@ -47,9 +47,7 @@
|
|||
#include <unknwn.h>
|
||||
|
||||
#include "nsWidgetsCID.h"
|
||||
#ifdef MOZ_AIMM
|
||||
#include "aimm.h"
|
||||
#endif
|
||||
|
||||
static NS_DEFINE_IID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID);
|
||||
|
||||
|
@ -98,13 +96,8 @@ BOOL PeekKeyAndIMEMessage(LPMSG msg, HWND hwnd)
|
|||
{
|
||||
MSG msg1, msg2, *lpMsg;
|
||||
BOOL b1, b2;
|
||||
#ifdef MOZ_UNICODE
|
||||
b1 = nsToolkit::mPeekMessage(&msg1, NULL, WM_KEYFIRST, WM_IME_KEYLAST, PM_NOREMOVE);
|
||||
b2 = nsToolkit::mPeekMessage(&msg2, NULL, WM_IME_SETCONTEXT, WM_IME_KEYUP, PM_NOREMOVE);
|
||||
#else
|
||||
b1 = ::PeekMessage(&msg1, NULL, WM_KEYFIRST, WM_IME_KEYLAST, PM_NOREMOVE);
|
||||
b2 = ::PeekMessage(&msg2, NULL, WM_IME_SETCONTEXT, WM_IME_KEYUP, PM_NOREMOVE);
|
||||
#endif /* MOZ_UNICODE */
|
||||
if (b1 || b2) {
|
||||
if (b1 && b2) {
|
||||
if (msg1.time < msg2.time)
|
||||
|
@ -115,11 +108,7 @@ BOOL PeekKeyAndIMEMessage(LPMSG msg, HWND hwnd)
|
|||
lpMsg = &msg1;
|
||||
else
|
||||
lpMsg = &msg2;
|
||||
#ifdef MOZ_UNICODE
|
||||
return nsToolkit::mPeekMessage(msg, hwnd, lpMsg->message, lpMsg->message, PM_REMOVE);
|
||||
#else
|
||||
return ::PeekMessage(msg, hwnd, lpMsg->message, lpMsg->message, PM_REMOVE);
|
||||
#endif /* MOZ_UNICODE */
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -144,25 +133,13 @@ NS_METHOD nsAppShell::Run(void)
|
|||
// Give priority to system messages (in particular keyboard, mouse,
|
||||
// timer, and paint messages).
|
||||
if (PeekKeyAndIMEMessage(&msg, NULL) ||
|
||||
#ifdef MOZ_UNICODE
|
||||
nsToolkit::mPeekMessage(&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) ||
|
||||
nsToolkit::mPeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
|
||||
#else
|
||||
::PeekMessage(&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) ||
|
||||
::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
|
||||
#endif /* MOZ_UNICODE */
|
||||
keepGoing = (msg.message != WM_QUIT);
|
||||
|
||||
if (keepGoing != 0) {
|
||||
//#ifdef MOZ_AIMM // not need?
|
||||
// if (!nsToolkit::gAIMMMsgPumpOwner || (nsToolkit::gAIMMMsgPumpOwner->OnTranslateMessage(&msg) != S_OK))
|
||||
//#endif
|
||||
TranslateMessage(&msg);
|
||||
#ifdef MOZ_UNICODE
|
||||
nsToolkit::mDispatchMessage(&msg);
|
||||
#else
|
||||
::DispatchMessage(&msg);
|
||||
#endif /* MOZ_UNICODE */
|
||||
if (mDispatchListener)
|
||||
mDispatchListener->AfterDispatch();
|
||||
}
|
||||
|
@ -174,11 +151,7 @@ NS_METHOD nsAppShell::Run(void)
|
|||
do {
|
||||
timerManager->FireNextIdleTimer();
|
||||
timerManager->HasIdleTimers(&hasTimers);
|
||||
#ifdef MOZ_UNICODE
|
||||
} while (hasTimers && !nsToolkit::mPeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE));
|
||||
#else
|
||||
} while (hasTimers && !::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE));
|
||||
#endif
|
||||
} else {
|
||||
|
||||
if (!gKeepGoing) {
|
||||
|
@ -223,13 +196,8 @@ nsAppShell::GetNativeEvent(PRBool &aRealEvent, void *&aEvent)
|
|||
// Give priority to system messages (in particular keyboard, mouse,
|
||||
// timer, and paint messages).
|
||||
if (PeekKeyAndIMEMessage(&msg, NULL) ||
|
||||
#ifdef MOZ_UNICODE
|
||||
nsToolkit::mPeekMessage(&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) ||
|
||||
nsToolkit::mPeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
|
||||
#else
|
||||
::PeekMessage(&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) ||
|
||||
::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
|
||||
#endif /* MOZ_UNICODE */
|
||||
gotMessage = true;
|
||||
} else {
|
||||
PRBool hasTimers;
|
||||
|
@ -238,11 +206,7 @@ nsAppShell::GetNativeEvent(PRBool &aRealEvent, void *&aEvent)
|
|||
do {
|
||||
timerManager->FireNextIdleTimer();
|
||||
timerManager->HasIdleTimers(&hasTimers);
|
||||
#ifdef MOZ_UNICODE
|
||||
} while (hasTimers && !nsToolkit::mPeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE));
|
||||
#else
|
||||
} while (hasTimers && !::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE));
|
||||
#endif /* MOZ_UNICODE */
|
||||
} else {
|
||||
// Block and wait for any posted application message
|
||||
::WaitMessage();
|
||||
|
@ -256,9 +220,6 @@ nsAppShell::GetNativeEvent(PRBool &aRealEvent, void *&aEvent)
|
|||
printf("-> %d", msg.message);
|
||||
#endif
|
||||
|
||||
//#ifdef MOZ_AIMM // not need?
|
||||
// if (!nsToolkit::gAIMMMsgPumpOwner || (nsToolkit::gAIMMMsgPumpOwner->OnTranslateMessage(&msg) != S_OK))
|
||||
//#endif
|
||||
TranslateMessage(&msg);
|
||||
aEvent = &msg;
|
||||
aRealEvent = PR_TRUE;
|
||||
|
@ -267,11 +228,7 @@ nsAppShell::GetNativeEvent(PRBool &aRealEvent, void *&aEvent)
|
|||
|
||||
nsresult nsAppShell::DispatchNativeEvent(PRBool aRealEvent, void *aEvent)
|
||||
{
|
||||
#ifdef MOZ_UNICODE
|
||||
nsToolkit::mDispatchMessage((MSG *)aEvent);
|
||||
#else
|
||||
DispatchMessage((MSG *)aEvent);
|
||||
#endif /* MOZ_UNICODE */
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -43,18 +43,14 @@
|
|||
#include <commdlg.h>
|
||||
#include <cderr.h>
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
#include "nsString.h"
|
||||
#include "nsToolkit.h"
|
||||
#endif // MOZ_UNICODE
|
||||
|
||||
static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsFilePicker, nsIFilePicker)
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
nsString nsFilePicker::mLastUsedUnicodeDirectory;
|
||||
#endif
|
||||
char nsFilePicker::mLastUsedDirectory[MAX_PATH+1] = { 0 };
|
||||
|
||||
#define MAX_EXTENSION_LENGTH 10
|
||||
|
@ -90,7 +86,6 @@ nsFilePicker::~nsFilePicker()
|
|||
// Show - Display the file dialog
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
#ifdef MOZ_UNICODE
|
||||
NS_IMETHODIMP nsFilePicker::ShowW(PRInt16 *aReturnVal)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aReturnVal);
|
||||
|
@ -333,308 +328,24 @@ NS_IMETHODIMP nsFilePicker::ShowW(PRInt16 *aReturnVal)
|
|||
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_IMETHODIMP nsFilePicker::Show(PRInt16 *aReturnVal)
|
||||
#ifdef MOZ_UNICODE
|
||||
{
|
||||
return ShowW(aReturnVal);
|
||||
}
|
||||
#else
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aReturnVal);
|
||||
|
||||
// suppress blur event
|
||||
if (mParentWidget) {
|
||||
nsWindow *parent = NS_STATIC_CAST(nsWindow *, mParentWidget);
|
||||
parent->SuppressBlurEvents(PR_TRUE);
|
||||
}
|
||||
|
||||
PRBool result = PR_FALSE;
|
||||
char fileBuffer[MAX_PATH+1] = "";
|
||||
char *converted = ConvertToFileSystemCharset(mDefault.get());
|
||||
if (nsnull == converted) {
|
||||
mDefault.ToCString(fileBuffer,MAX_PATH);
|
||||
}
|
||||
else {
|
||||
PL_strncpyz(fileBuffer, converted, MAX_PATH+1);
|
||||
nsMemory::Free( converted );
|
||||
}
|
||||
|
||||
char htmExt[] = "html";
|
||||
|
||||
char *title = ConvertToFileSystemCharset(mTitle.get());
|
||||
if (nsnull == title)
|
||||
title = ToNewCString(mTitle);
|
||||
nsCAutoString initialDir;
|
||||
mDisplayDirectory->GetNativePath(initialDir);
|
||||
// If no display directory, re-use the last one.
|
||||
if(initialDir.IsEmpty()) {
|
||||
// Allocate copy of last used dir.
|
||||
initialDir = mLastUsedDirectory;
|
||||
}
|
||||
|
||||
mFile.SetLength(0);
|
||||
|
||||
if (mMode == modeGetFolder) {
|
||||
|
||||
char dirBuffer[MAX_PATH+1];
|
||||
PL_strncpy(dirBuffer, initialDir.get(), MAX_PATH);
|
||||
BROWSEINFO browserInfo;
|
||||
browserInfo.hwndOwner = (HWND)
|
||||
(mParentWidget ? mParentWidget->GetNativeData(NS_NATIVE_WINDOW) : 0);
|
||||
browserInfo.pidlRoot = nsnull;
|
||||
browserInfo.pszDisplayName = (LPSTR)dirBuffer;
|
||||
browserInfo.lpszTitle = title;
|
||||
browserInfo.ulFlags = BIF_RETURNONLYFSDIRS;//BIF_STATUSTEXT | BIF_RETURNONLYFSDIRS;
|
||||
browserInfo.lpfn = nsnull;
|
||||
browserInfo.lParam = nsnull;
|
||||
browserInfo.iImage = nsnull;
|
||||
|
||||
// XXX UNICODE support is needed here --> DONE
|
||||
LPITEMIDLIST list = ::SHBrowseForFolder(&browserInfo);
|
||||
if (list != NULL) {
|
||||
result = ::SHGetPathFromIDList(list, (LPSTR)fileBuffer);
|
||||
if (result) {
|
||||
mFile.Append(fileBuffer);
|
||||
}
|
||||
|
||||
// free PIDL
|
||||
LPMALLOC pMalloc = NULL;
|
||||
::SHGetMalloc(&pMalloc);
|
||||
if(pMalloc) {
|
||||
pMalloc->Free(list);
|
||||
pMalloc->Release();
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
OPENFILENAME ofn;
|
||||
memset(&ofn, 0, sizeof(ofn));
|
||||
|
||||
ofn.lStructSize = sizeof(ofn);
|
||||
|
||||
char extensionBuffer[MAX_EXTENSION_LENGTH+1] = "";
|
||||
|
||||
PRInt32 l = (mFilterList.Length()+2)*2;
|
||||
char *filterBuffer = (char*) nsMemory::Alloc(l);
|
||||
int len = WideCharToMultiByte(CP_ACP, 0,
|
||||
mFilterList.get(),
|
||||
mFilterList.Length(),
|
||||
filterBuffer,
|
||||
l, NULL, NULL);
|
||||
filterBuffer[len] = '\0';
|
||||
filterBuffer[len+1] = '\0';
|
||||
|
||||
if (!initialDir.IsEmpty()) {
|
||||
ofn.lpstrInitialDir = initialDir.get();
|
||||
}
|
||||
|
||||
ofn.lpstrTitle = title;
|
||||
ofn.lpstrFilter = filterBuffer;
|
||||
ofn.nFilterIndex = mSelectedType;
|
||||
ofn.hwndOwner = (HWND)
|
||||
(mParentWidget ? mParentWidget->GetNativeData(NS_NATIVE_WINDOW) : 0);
|
||||
ofn.lpstrFile = fileBuffer;
|
||||
ofn.nMaxFile = MAX_PATH;
|
||||
|
||||
ofn.Flags = OFN_NOCHANGEDIR | OFN_SHAREAWARE | OFN_LONGNAMES | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
|
||||
|
||||
if (!mDefaultExtension.IsEmpty()) {
|
||||
// Someone was cool and told us what to do
|
||||
char *convertedExt = ConvertToFileSystemCharset(mDefaultExtension.get());
|
||||
if (!convertedExt) {
|
||||
mDefaultExtension.ToCString(extensionBuffer, MAX_EXTENSION_LENGTH);
|
||||
}
|
||||
else {
|
||||
PL_strncpyz(extensionBuffer, convertedExt, MAX_EXTENSION_LENGTH+1);
|
||||
nsMemory::Free( convertedExt );
|
||||
}
|
||||
ofn.lpstrDefExt = extensionBuffer;
|
||||
}
|
||||
else {
|
||||
// Get file extension from suggested filename
|
||||
// to detect if we are saving an html file
|
||||
//XXX: nsIFile SHOULD HAVE A GetExtension() METHOD!
|
||||
PRInt32 extIndex = mDefault.RFind(".");
|
||||
if ( extIndex >= 0) {
|
||||
nsAutoString ext;
|
||||
mDefault.Right(ext, mDefault.Length() - extIndex);
|
||||
// Should we test for ".cgi", ".asp", ".jsp" and other
|
||||
// "generated" html pages?
|
||||
|
||||
if ( ext.EqualsIgnoreCase(".htm") ||
|
||||
ext.EqualsIgnoreCase(".html") ||
|
||||
ext.EqualsIgnoreCase(".shtml") ) {
|
||||
// This is supposed to append ".htm" if user doesn't supply an extension
|
||||
//XXX Actually, behavior is sort of weird:
|
||||
// often appends ".html" even if you have an extension
|
||||
// It obeys your extension if you put quotes around name
|
||||
ofn.lpstrDefExt = htmExt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mMode == modeOpen) {
|
||||
// FILE MUST EXIST!
|
||||
ofn.Flags |= OFN_FILEMUSTEXIST;
|
||||
result = ::GetOpenFileName(&ofn);
|
||||
}
|
||||
else if (mMode == modeOpenMultiple) {
|
||||
ofn.Flags |= OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_EXPLORER;
|
||||
result = ::GetOpenFileName(&ofn);
|
||||
}
|
||||
else if (mMode == modeSave) {
|
||||
ofn.Flags |= OFN_NOREADONLYRETURN | OFN_PATHMUSTEXIST;
|
||||
result = ::GetSaveFileName(&ofn);
|
||||
if (!result) {
|
||||
// Error, find out what kind.
|
||||
if (::GetLastError() == ERROR_INVALID_PARAMETER ||
|
||||
::CommDlgExtendedError() == FNERR_INVALIDFILENAME) {
|
||||
// probably the default file name is too long or contains illegal characters!
|
||||
// Try again, without a starting file name.
|
||||
ofn.lpstrFile[0] = 0;
|
||||
result = ::GetSaveFileName(&ofn);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
NS_ASSERTION(0, "Only load, save and getFolder are supported modes");
|
||||
}
|
||||
|
||||
// Remember what filter type the user selected
|
||||
mSelectedType = (PRInt16)ofn.nFilterIndex;
|
||||
|
||||
// Clean up filter buffers
|
||||
if (filterBuffer)
|
||||
nsMemory::Free( filterBuffer );
|
||||
|
||||
// Set user-selected location of file or directory
|
||||
if (result == PR_TRUE) {
|
||||
// I think it also needs a conversion here (to unicode since appending to nsString)
|
||||
// but doing that generates garbage file name, weird.
|
||||
if (mMode == modeOpenMultiple) {
|
||||
nsresult rv = NS_NewISupportsArray(getter_AddRefs(mFiles));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
// from msdn.microsoft.com, "Open and Save As Dialog Boxes" section:
|
||||
// If you specify OFN_EXPLORER,
|
||||
// The directory and file name strings are NULL separated,
|
||||
// with an extra NULL character after the last file name.
|
||||
// This format enables the Explorer-style dialog boxes
|
||||
// to return long file names that include spaces.
|
||||
char *current = fileBuffer;
|
||||
|
||||
nsCAutoString dirName(current);
|
||||
// sometimes dirName contains a trailing slash
|
||||
// and sometimes it doesn't.
|
||||
if (current[dirName.Length() - 1] != '\\')
|
||||
dirName += '\\';
|
||||
|
||||
while (current && *current && *(current + strlen(current) + 1)) {
|
||||
current = current + strlen(current) + 1;
|
||||
|
||||
nsCOMPtr<nsILocalFile> file = do_CreateInstance("@mozilla.org/file/local;1", &rv);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
rv = file->InitWithNativePath(dirName + nsDependentCString(current));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
rv = mFiles->AppendElement(file);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
}
|
||||
|
||||
// handle the case where the user selected just one
|
||||
// file. according to msdn.microsoft.com:
|
||||
// If you specify OFN_ALLOWMULTISELECT and the user selects
|
||||
// only one file, the lpstrFile string does not have
|
||||
// a separator between the path and file name.
|
||||
if (current && *current && (current == fileBuffer)) {
|
||||
nsCOMPtr<nsILocalFile> file = do_CreateInstance("@mozilla.org/file/local;1", &rv);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
rv = file->InitWithNativePath(nsDependentCString(current));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
rv = mFiles->AppendElement(file);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
}
|
||||
}
|
||||
else {
|
||||
mFile.Append(fileBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (title)
|
||||
nsMemory::Free( title );
|
||||
|
||||
if (result) {
|
||||
PRInt16 returnOKorReplace = returnOK;
|
||||
|
||||
// Remember last used directory.
|
||||
nsCOMPtr<nsILocalFile> file(do_CreateInstance("@mozilla.org/file/local;1"));
|
||||
NS_ENSURE_TRUE(file, NS_ERROR_FAILURE);
|
||||
|
||||
file->InitWithNativePath(mFile);
|
||||
nsCOMPtr<nsIFile> dir;
|
||||
if (NS_SUCCEEDED(file->GetParent(getter_AddRefs(dir)))) {
|
||||
nsCOMPtr<nsILocalFile> localDir(do_QueryInterface(dir));
|
||||
if (localDir) {
|
||||
nsCAutoString newDir;
|
||||
localDir->GetNativePath(newDir);
|
||||
if(!newDir.IsEmpty())
|
||||
PL_strncpyz(mLastUsedDirectory, newDir.get(), MAX_PATH+1);
|
||||
// Update mDisplayDirectory with this directory, also.
|
||||
// Some callers rely on this.
|
||||
mDisplayDirectory->InitWithNativePath( nsDependentCString(mLastUsedDirectory) );
|
||||
}
|
||||
}
|
||||
|
||||
if (mMode == modeSave) {
|
||||
// Windows does not return resultReplace,
|
||||
// we must check if file already exists
|
||||
PRBool exists = PR_FALSE;
|
||||
file->Exists(&exists);
|
||||
if (exists)
|
||||
returnOKorReplace = returnReplace;
|
||||
}
|
||||
*aReturnVal = returnOKorReplace;
|
||||
}
|
||||
else {
|
||||
*aReturnVal = returnCancel;
|
||||
}
|
||||
if (mParentWidget) {
|
||||
nsWindow *parent = NS_STATIC_CAST(nsWindow *, mParentWidget);
|
||||
parent->SuppressBlurEvents(PR_FALSE);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_IMETHODIMP nsFilePicker::GetFile(nsILocalFile **aFile)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aFile);
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
if (mUnicodeFile.IsEmpty())
|
||||
return NS_OK;
|
||||
#else
|
||||
if (mFile.IsEmpty())
|
||||
return NS_OK;
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsILocalFile> file(do_CreateInstance("@mozilla.org/file/local;1"));
|
||||
|
||||
NS_ENSURE_TRUE(file, NS_ERROR_FAILURE);
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
file->InitWithPath(mUnicodeFile);
|
||||
#else
|
||||
file->InitWithNativePath(mFile);
|
||||
#endif
|
||||
|
||||
NS_ADDREF(*aFile = file);
|
||||
|
||||
|
@ -646,11 +357,7 @@ NS_IMETHODIMP nsFilePicker::GetFileURL(nsIFileURL **aFileURL)
|
|||
{
|
||||
nsCOMPtr<nsILocalFile> file(do_CreateInstance("@mozilla.org/file/local;1"));
|
||||
NS_ENSURE_TRUE(file, NS_ERROR_FAILURE);
|
||||
#ifdef MOZ_UNICODE
|
||||
file->InitWithPath(mUnicodeFile);
|
||||
#else
|
||||
file->InitWithNativePath(mFile);
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
NS_NewFileURI(getter_AddRefs(uri), file);
|
||||
|
|
|
@ -59,9 +59,7 @@ public:
|
|||
NS_IMETHOD GetFileURL(nsIFileURL * *aFileURL);
|
||||
NS_IMETHOD GetFiles(nsISimpleEnumerator **aFiles);
|
||||
NS_IMETHOD Show(PRInt16 *aReturnVal);
|
||||
#ifdef MOZ_UNICODE
|
||||
NS_IMETHOD ShowW(PRInt16 *aReturnVal);
|
||||
#endif
|
||||
NS_IMETHOD AppendFilter(const PRUnichar *aTitle, const PRUnichar *aFilter) ;
|
||||
|
||||
protected:
|
||||
|
@ -89,11 +87,8 @@ protected:
|
|||
PRInt16 mSelectedType;
|
||||
nsCOMPtr <nsISupportsArray> mFiles;
|
||||
static char mLastUsedDirectory[];
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
nsString mUnicodeFile;
|
||||
static nsString mLastUsedUnicodeDirectory;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif // nsFilePicker_h__
|
||||
|
|
|
@ -1,565 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.1 (the "License"); you may not use this file except in
|
||||
* compliance with the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the NPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsScrollbar.h"
|
||||
#include "nsToolkit.h"
|
||||
#include "nsGUIEvent.h"
|
||||
#include <windows.h>
|
||||
#include "nsUnitConversion.h"
|
||||
|
||||
|
||||
NS_IMPL_ADDREF(nsScrollbar)
|
||||
NS_IMPL_RELEASE(nsScrollbar)
|
||||
|
||||
nsScrollbar::InitializationState nsScrollbar::sScrollbarInited = nsScrollbar::eNotInitialized;
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsScrollbar constructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsScrollbar::nsScrollbar(PRBool aIsVertical) : nsWindow(), nsIScrollbar()
|
||||
{
|
||||
mPositionFlag = (aIsVertical) ? SBS_VERT : SBS_HORZ;
|
||||
mScaleFactor = 1.0f;
|
||||
mLineIncrement = 0;
|
||||
mBackground = ::GetSysColor(COLOR_SCROLLBAR);
|
||||
|
||||
//prevent resource leaks..
|
||||
if (mBrush)
|
||||
::DeleteObject(mBrush);
|
||||
|
||||
mBrush = ::CreateSolidBrush(NSRGB_2_COLOREF(mBackground));
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsScrollbar destructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsScrollbar::~nsScrollbar()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Query interface implementation
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsresult nsScrollbar::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
{
|
||||
nsresult result = nsWindow::QueryInterface(aIID, aInstancePtr);
|
||||
|
||||
static NS_DEFINE_IID(kInsScrollbarIID, NS_ISCROLLBAR_IID);
|
||||
if (result == NS_NOINTERFACE && aIID.Equals(kInsScrollbarIID)) {
|
||||
*aInstancePtr = (void*) ((nsIScrollbar*)this);
|
||||
NS_ADDREF_THIS();
|
||||
result = NS_OK;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Define the range settings
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsScrollbar::SetMaxRange(PRUint32 aEndRange)
|
||||
{
|
||||
if (aEndRange > 32767)
|
||||
mScaleFactor = aEndRange / 32767.0f;
|
||||
if (mWnd) {
|
||||
VERIFY(::SetScrollRange(mWnd, SB_CTL, 0, NSToIntRound(aEndRange / mScaleFactor), TRUE));
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Return the range settings
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRUint32 nsScrollbar::GetMaxRange(PRUint32& aRange)
|
||||
{
|
||||
int startRange, endRange;
|
||||
if (mWnd) {
|
||||
VERIFY(::GetScrollRange(mWnd, SB_CTL, &startRange, &endRange));
|
||||
}
|
||||
aRange = (PRUint32)NSToIntRound(endRange * mScaleFactor);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Set the thumb position
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsScrollbar::SetPosition(PRUint32 aPos)
|
||||
{
|
||||
::SetScrollPos(mWnd, SB_CTL, NSToIntRound(aPos / mScaleFactor), TRUE);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Get the current thumb position.
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRUint32 nsScrollbar::GetPosition(PRUint32& aPosition)
|
||||
{
|
||||
aPosition = (PRUint32)NSToIntRound(::GetScrollPos(mWnd, SB_CTL) * mScaleFactor);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Set the thumb size
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsScrollbar::SetThumbSize(PRUint32 aSize)
|
||||
{
|
||||
if (mWnd) {
|
||||
SCROLLINFO si;
|
||||
si.cbSize = sizeof(SCROLLINFO);
|
||||
si.fMask = SIF_PAGE;
|
||||
si.nPage = NSToIntRound(aSize / mScaleFactor);
|
||||
::SetScrollInfo(mWnd, SB_CTL, &si, TRUE);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Get the thumb size
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsScrollbar::GetThumbSize(PRUint32& aSize)
|
||||
{
|
||||
if (mWnd) {
|
||||
SCROLLINFO si;
|
||||
si.cbSize = sizeof(SCROLLINFO);
|
||||
si.fMask = SIF_PAGE;
|
||||
VERIFY(::GetScrollInfo(mWnd, SB_CTL, &si));
|
||||
aSize = (PRUint32)NSToIntRound(si.nPage * mScaleFactor);
|
||||
}
|
||||
else
|
||||
{
|
||||
aSize = 0;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Set the line increment for this scrollbar
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsScrollbar::SetLineIncrement(PRUint32 aSize)
|
||||
{
|
||||
mLineIncrement = NSToIntRound(aSize / mScaleFactor);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Get the line increment for this scrollbar
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsScrollbar::GetLineIncrement(PRUint32& aSize)
|
||||
{
|
||||
aSize = (PRUint32)NSToIntRound(mLineIncrement * mScaleFactor);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Set all scrolling parameters
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsScrollbar::SetParameters(PRUint32 aMaxRange, PRUint32 aThumbSize,
|
||||
PRUint32 aPosition, PRUint32 aLineIncrement)
|
||||
{
|
||||
if (aMaxRange > 32767)
|
||||
mScaleFactor = aMaxRange / 32767.0f;
|
||||
|
||||
if (mWnd) {
|
||||
SCROLLINFO si;
|
||||
si.cbSize = sizeof(SCROLLINFO);
|
||||
si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE;
|
||||
si.nPage = NSToIntRound(aThumbSize / mScaleFactor);
|
||||
si.nPos = NSToIntRound(aPosition / mScaleFactor);
|
||||
si.nMin = 0;
|
||||
si.nMax = NSToIntRound(aMaxRange / mScaleFactor);
|
||||
::SetScrollInfo(mWnd, SB_CTL, &si, TRUE);
|
||||
}
|
||||
|
||||
mLineIncrement = NSToIntRound(aLineIncrement / mScaleFactor);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// paint message. Don't send the paint out
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsScrollbar::OnPaint()
|
||||
{
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
|
||||
PRBool nsScrollbar::OnResize(nsRect &aWindowRect)
|
||||
{
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Deal with scrollbar messages (actually implemented only in nsScrollbar)
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsScrollbar::OnScroll(UINT scrollCode, int cPos)
|
||||
{
|
||||
PRBool result = PR_TRUE;
|
||||
int newPosition;
|
||||
|
||||
switch (scrollCode) {
|
||||
|
||||
// scroll one line right or down
|
||||
// SB_LINERIGHT and SB_LINEDOWN are actually the same value
|
||||
//case SB_LINERIGHT:
|
||||
case SB_LINEDOWN:
|
||||
{
|
||||
newPosition = ::GetScrollPos(mWnd, SB_CTL) + mLineIncrement;
|
||||
|
||||
PRUint32 range;
|
||||
PRUint32 size;
|
||||
GetMaxRange(range);
|
||||
GetThumbSize(size);
|
||||
PRUint32 max = range - size;
|
||||
|
||||
if (newPosition > (int)max)
|
||||
newPosition = (int)max;
|
||||
|
||||
// if an event callback is registered, give it the chance
|
||||
// to change the increment
|
||||
if (mEventCallback) {
|
||||
nsScrollbarEvent event;
|
||||
event.message = NS_SCROLLBAR_LINE_NEXT;
|
||||
event.widget = (nsWindow*)this;
|
||||
DWORD pos = ::GetMessagePos();
|
||||
POINT cpos;
|
||||
cpos.x = LOWORD(pos);
|
||||
cpos.y = HIWORD(pos);
|
||||
::ScreenToClient(mWnd, &cpos);
|
||||
event.point.x = cpos.x;
|
||||
event.point.y = cpos.y;
|
||||
event.time = ::GetMessageTime();
|
||||
event.position = (PRUint32)NSToIntRound(newPosition * mScaleFactor);
|
||||
|
||||
result = ConvertStatus((*mEventCallback)(&event));
|
||||
newPosition = NSToIntRound(event.position / mScaleFactor);
|
||||
}
|
||||
|
||||
::SetScrollPos(mWnd, SB_CTL, newPosition, TRUE);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// scroll one line left or up
|
||||
//case SB_LINELEFT:
|
||||
case SB_LINEUP:
|
||||
{
|
||||
newPosition = ::GetScrollPos(mWnd, SB_CTL) - mLineIncrement;
|
||||
if (newPosition < 0)
|
||||
newPosition = 0;
|
||||
|
||||
// if an event callback is registered, give it the chance
|
||||
// to change the decrement
|
||||
if (mEventCallback) {
|
||||
nsScrollbarEvent event;
|
||||
event.message = NS_SCROLLBAR_LINE_PREV;
|
||||
event.widget = (nsWindow*)this;
|
||||
DWORD pos = ::GetMessagePos();
|
||||
POINT cpos;
|
||||
cpos.x = LOWORD(pos);
|
||||
cpos.y = HIWORD(pos);
|
||||
::ScreenToClient(mWnd, &cpos);
|
||||
event.point.x = cpos.x;
|
||||
event.point.y = cpos.y;
|
||||
event.time = ::GetMessageTime();
|
||||
event.position = (PRUint32)NSToIntRound(newPosition * mScaleFactor);
|
||||
|
||||
result = ConvertStatus((*mEventCallback)(&event));
|
||||
newPosition = NSToIntRound(event.position / mScaleFactor);
|
||||
}
|
||||
|
||||
::SetScrollPos(mWnd, SB_CTL, newPosition, TRUE);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// Scrolls one page right or down
|
||||
// case SB_PAGERIGHT:
|
||||
case SB_PAGEDOWN:
|
||||
{
|
||||
SCROLLINFO si;
|
||||
si.cbSize = sizeof(SCROLLINFO);
|
||||
si.fMask = SIF_PAGE;
|
||||
VERIFY(::GetScrollInfo(mWnd, SB_CTL, &si));
|
||||
|
||||
newPosition = ::GetScrollPos(mWnd, SB_CTL) + si.nPage;
|
||||
|
||||
PRUint32 range;
|
||||
PRUint32 size;
|
||||
GetMaxRange(range);
|
||||
GetThumbSize(size);
|
||||
PRUint32 max = range - size;
|
||||
|
||||
|
||||
if (newPosition > (int)max)
|
||||
newPosition = (int)max;
|
||||
|
||||
// if an event callback is registered, give it the chance
|
||||
// to change the increment
|
||||
if (mEventCallback) {
|
||||
nsScrollbarEvent event;
|
||||
event.message = NS_SCROLLBAR_PAGE_NEXT;
|
||||
event.widget = (nsWindow*)this;
|
||||
DWORD pos = ::GetMessagePos();
|
||||
POINT cpos;
|
||||
cpos.x = LOWORD(pos);
|
||||
cpos.y = HIWORD(pos);
|
||||
::ScreenToClient(mWnd, &cpos);
|
||||
event.point.x = cpos.x;
|
||||
event.point.y = cpos.y;
|
||||
event.time = ::GetMessageTime();
|
||||
event.position = (PRUint32)NSToIntRound(newPosition * mScaleFactor);;
|
||||
|
||||
|
||||
result = ConvertStatus((*mEventCallback)(&event));
|
||||
newPosition = NSToIntRound(event.position / mScaleFactor);
|
||||
}
|
||||
|
||||
::SetScrollPos(mWnd, SB_CTL, newPosition, TRUE);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// Scrolls one page left or up.
|
||||
//case SB_PAGELEFT:
|
||||
case SB_PAGEUP:
|
||||
{
|
||||
SCROLLINFO si;
|
||||
si.cbSize = sizeof(SCROLLINFO);
|
||||
si.fMask = SIF_PAGE;
|
||||
VERIFY(::GetScrollInfo(mWnd, SB_CTL, &si));
|
||||
|
||||
newPosition = ::GetScrollPos(mWnd, SB_CTL) - si.nPage;
|
||||
if (newPosition < 0)
|
||||
newPosition = 0;
|
||||
|
||||
// if an event callback is registered, give it the chance
|
||||
// to change the increment
|
||||
if (mEventCallback) {
|
||||
nsScrollbarEvent event;
|
||||
event.message = NS_SCROLLBAR_PAGE_PREV;
|
||||
event.widget = (nsWindow*)this;
|
||||
DWORD pos = ::GetMessagePos();
|
||||
POINT cpos;
|
||||
cpos.x = LOWORD(pos);
|
||||
cpos.y = HIWORD(pos);
|
||||
::ScreenToClient(mWnd, &cpos);
|
||||
event.point.x = cpos.x;
|
||||
event.point.y = cpos.y;
|
||||
event.time = ::GetMessageTime();
|
||||
event.position = (PRUint32)NSToIntRound(newPosition * mScaleFactor);
|
||||
|
||||
result = ConvertStatus((*mEventCallback)(&event));
|
||||
newPosition = NSToIntRound(event.position / mScaleFactor);
|
||||
}
|
||||
|
||||
::SetScrollPos(mWnd, SB_CTL, newPosition - 10, TRUE);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// Scrolls to the absolute position. The current position is specified by
|
||||
// the cPos parameter.
|
||||
case SB_THUMBPOSITION:
|
||||
case SB_THUMBTRACK:
|
||||
{
|
||||
newPosition = cPos;
|
||||
|
||||
// if an event callback is registered, give it the chance
|
||||
// to change the increment
|
||||
if (mEventCallback) {
|
||||
nsScrollbarEvent event;
|
||||
event.message = NS_SCROLLBAR_POS;
|
||||
event.widget = (nsWindow*)this;
|
||||
DWORD pos = ::GetMessagePos();
|
||||
POINT cpos;
|
||||
cpos.x = LOWORD(pos);
|
||||
cpos.y = HIWORD(pos);
|
||||
::ScreenToClient(mWnd, &cpos);
|
||||
event.point.x = cpos.x;
|
||||
event.point.y = cpos.y;
|
||||
event.time = ::GetMessageTime();
|
||||
event.position = (PRUint32)NSToIntRound(newPosition * mScaleFactor);
|
||||
|
||||
result = ConvertStatus((*mEventCallback)(&event));
|
||||
newPosition = NSToIntRound(event.position / mScaleFactor);
|
||||
}
|
||||
|
||||
::SetScrollPos(mWnd, SB_CTL, newPosition, TRUE);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// return the window class name and initialize the class if needed
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
LPCTSTR nsScrollbar::WindowClass()
|
||||
{
|
||||
static const LPCTSTR subclassedScrollBar = "MozillaScrollBar";
|
||||
static const LPCTSTR classicScrollBarClass = "SCROLLBAR";
|
||||
|
||||
if (eNotInitialized == sScrollbarInited) {
|
||||
sScrollbarInited = eInitFailed;
|
||||
// get the class info for scroll bars
|
||||
WNDCLASS scrollBarClass;
|
||||
if (GetClassInfo(nsToolkit::mDllInstance,
|
||||
classicScrollBarClass, &scrollBarClass)) {
|
||||
// modify the class name, leave everything else as it is
|
||||
scrollBarClass.lpszClassName = subclassedScrollBar;
|
||||
if (::RegisterClassA(&scrollBarClass))
|
||||
sScrollbarInited = eInitSucceeded;
|
||||
}
|
||||
}
|
||||
|
||||
if (eInitSucceeded == sScrollbarInited)
|
||||
return subclassedScrollBar;
|
||||
return classicScrollBarClass;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// return window styles
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
DWORD nsScrollbar::WindowStyle()
|
||||
{
|
||||
return mPositionFlag | WS_CHILD | WS_CLIPSIBLINGS;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// return window extended styles
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
DWORD nsScrollbar::WindowExStyle()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// get position/dimensions
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
NS_METHOD nsScrollbar::GetBounds(nsRect &aRect)
|
||||
{
|
||||
return nsWindow::GetBounds(aRect);
|
||||
}
|
||||
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// return the window class name and initialize the class if needed
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
LPCWSTR nsScrollbar::WindowClassW()
|
||||
{
|
||||
static const LPCWSTR subclassedScrollBar = L"MozillaScrollBar";
|
||||
static const LPCWSTR classicScrollBarClass = L"SCROLLBAR";
|
||||
|
||||
if (eNotInitialized == sScrollbarInited) {
|
||||
sScrollbarInited = eInitFailed;
|
||||
// get the class info for scroll bars
|
||||
WNDCLASSW scrollBarClass;
|
||||
if (GetClassInfoW(nsToolkit::mDllInstance,
|
||||
classicScrollBarClass, &scrollBarClass)) {
|
||||
// modify the class name, leave everything else as it is
|
||||
scrollBarClass.lpszClassName = subclassedScrollBar;
|
||||
if (::RegisterClassW(&scrollBarClass))
|
||||
sScrollbarInited = eInitSucceeded;
|
||||
}
|
||||
}
|
||||
|
||||
if (eInitSucceeded == sScrollbarInited)
|
||||
return subclassedScrollBar;
|
||||
return classicScrollBarClass;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,104 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.1 (the "License"); you may not use this file except in
|
||||
* compliance with the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the NPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef nsScrollbar_h__
|
||||
#define nsScrollbar_h__
|
||||
|
||||
#include "nsdefs.h"
|
||||
#include "nsWindow.h"
|
||||
#include "nsSwitchToUIThread.h"
|
||||
|
||||
#include "nsIScrollbar.h"
|
||||
|
||||
/**
|
||||
* Native WIN32 scrollbar wrapper.
|
||||
*/
|
||||
|
||||
class nsScrollbar : public nsWindow,
|
||||
public nsIScrollbar
|
||||
{
|
||||
|
||||
public:
|
||||
nsScrollbar(PRBool aIsVertical);
|
||||
virtual ~nsScrollbar();
|
||||
|
||||
// nsISupports
|
||||
NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr);
|
||||
NS_IMETHOD_(nsrefcnt) AddRef(void);
|
||||
NS_IMETHOD_(nsrefcnt) Release(void);
|
||||
|
||||
// nsIScrollBar implementation
|
||||
NS_IMETHOD SetMaxRange(PRUint32 aEndRange);
|
||||
NS_IMETHOD GetMaxRange(PRUint32& aMaxRange);
|
||||
NS_IMETHOD SetPosition(PRUint32 aPos);
|
||||
NS_IMETHOD GetPosition(PRUint32& aPos);
|
||||
NS_IMETHOD SetThumbSize(PRUint32 aSize);
|
||||
NS_IMETHOD GetThumbSize(PRUint32& aSize);
|
||||
NS_IMETHOD SetLineIncrement(PRUint32 aSize);
|
||||
NS_IMETHOD GetLineIncrement(PRUint32& aSize);
|
||||
NS_IMETHOD SetParameters(PRUint32 aMaxRange, PRUint32 aThumbSize,
|
||||
PRUint32 aPosition, PRUint32 aLineIncrement);
|
||||
|
||||
virtual PRBool OnPaint();
|
||||
virtual PRBool OnScroll(UINT scrollCode, int cPos);
|
||||
virtual PRBool OnResize(nsRect &aWindowRect);
|
||||
NS_IMETHOD GetBounds(nsRect &aRect);
|
||||
|
||||
protected:
|
||||
|
||||
virtual LPCTSTR WindowClass();
|
||||
#ifdef MOZ_UNICODE
|
||||
virtual LPCWSTR WindowClassW();
|
||||
#endif /* MOZ_UNICODE */
|
||||
virtual DWORD WindowStyle();
|
||||
virtual DWORD WindowExStyle();
|
||||
|
||||
private:
|
||||
DWORD mPositionFlag;
|
||||
int mLineIncrement;
|
||||
float mScaleFactor;
|
||||
|
||||
enum InitializationState
|
||||
{
|
||||
eNotInitialized,
|
||||
eInitFailed,
|
||||
eInitSucceeded
|
||||
};
|
||||
static InitializationState sScrollbarInited;
|
||||
};
|
||||
|
||||
#endif // nsButton_h__
|
|
@ -44,12 +44,10 @@
|
|||
#include "nsIServiceManager.h"
|
||||
#include "nsIEventQueueService.h"
|
||||
#include "nsIEventQueue.h"
|
||||
#ifdef MOZ_AIMM
|
||||
// objbase.h must be declared before initguid.h to use the |DEFINE_GUID|'s in aimm.h
|
||||
#include <objbase.h>
|
||||
#include <initguid.h>
|
||||
#include "aimm.h"
|
||||
#endif
|
||||
|
||||
// unknwn.h is needed to build with WIN32_LEAN_AND_MEAN
|
||||
#include <unknwn.h>
|
||||
|
@ -81,8 +79,6 @@ PRBool nsToolkit::mUseImeApiW = PR_FALSE;
|
|||
PRBool nsToolkit::mW2KXP_CP936 = PR_FALSE;
|
||||
PRBool nsToolkit::mIsWinXP = PR_FALSE;
|
||||
|
||||
#ifdef MOZ_AIMM
|
||||
|
||||
DEFINE_GUID(IID_IActiveIMMApp,
|
||||
0x08c0e040, 0x62d1, 0x11d1, 0x93, 0x26, 0x0, 0x60, 0xb0, 0x67, 0xb8, 0x6e);
|
||||
|
||||
|
@ -94,7 +90,6 @@ DEFINE_GUID(IID_IActiveIMMMessagePumpOwner,
|
|||
|
||||
IActiveIMMApp* nsToolkit::gAIMMApp = NULL;
|
||||
PRInt32 nsToolkit::gAIMMCount = 0;
|
||||
#endif
|
||||
|
||||
nsWindow *MouseTrailer::mCaptureWindow = NULL;
|
||||
nsWindow *MouseTrailer::mHoldMouse = NULL;
|
||||
|
@ -183,7 +178,6 @@ LRESULT CALLBACK DetectWindowMove(int code, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
|
||||
#include "nsWindowAPI.h"
|
||||
|
||||
|
@ -508,18 +502,14 @@ NS_UnregisterClass nsToolkit::mUnregisterClass = nsUnregisterClass;
|
|||
NS_SHGetPathFromIDList nsToolkit::mSHGetPathFromIDList = nsSHGetPathFromIDList;
|
||||
NS_SHBrowseForFolder nsToolkit::mSHBrowseForFolder = nsSHBrowseForFolder;
|
||||
|
||||
#endif /* MOZ_UNICODE */
|
||||
|
||||
void RunPump(void* arg)
|
||||
{
|
||||
ThreadInitInfo *info = (ThreadInitInfo*)arg;
|
||||
::PR_EnterMonitor(info->monitor);
|
||||
|
||||
#ifdef MOZ_AIMM
|
||||
// Start Active Input Method Manager on this thread
|
||||
if(nsToolkit::gAIMMApp)
|
||||
nsToolkit::gAIMMApp->Activate(TRUE);
|
||||
#endif
|
||||
|
||||
// do registration and creation in this thread
|
||||
info->toolkit->CreateInternalWindow(PR_GetCurrentThread());
|
||||
|
@ -533,17 +523,10 @@ void RunPump(void* arg)
|
|||
|
||||
// Process messages
|
||||
MSG msg;
|
||||
#ifdef MOZ_UNICODE
|
||||
while (nsToolkit::mGetMessage(&msg, NULL, 0, 0)) {
|
||||
TranslateMessage(&msg);
|
||||
nsToolkit::mDispatchMessage(&msg);
|
||||
}
|
||||
#else
|
||||
while (GetMessage(&msg, NULL, 0, 0)) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
@ -556,7 +539,6 @@ nsToolkit::nsToolkit()
|
|||
mGuiThread = NULL;
|
||||
mDispatchWnd = 0;
|
||||
|
||||
#ifdef MOZ_AIMM
|
||||
//
|
||||
// Initialize COM since create Active Input Method Manager object
|
||||
//
|
||||
|
@ -567,7 +549,6 @@ nsToolkit::nsToolkit()
|
|||
::CoCreateInstance(CLSID_CActiveIMM, NULL, CLSCTX_INPROC_SERVER, IID_IActiveIMMApp, (void**) &nsToolkit::gAIMMApp);
|
||||
|
||||
nsToolkit::gAIMMCount++;
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_STATIC_COMPONENT_LIBS
|
||||
nsToolkit::Startup(GetModuleHandle(NULL));
|
||||
|
@ -584,7 +565,6 @@ nsToolkit::~nsToolkit()
|
|||
{
|
||||
NS_PRECONDITION(::IsWindow(mDispatchWnd), "Invalid window handle");
|
||||
|
||||
#ifdef MOZ_AIMM
|
||||
nsToolkit::gAIMMCount--;
|
||||
|
||||
if (!nsToolkit::gAIMMCount) {
|
||||
|
@ -595,7 +575,6 @@ nsToolkit::~nsToolkit()
|
|||
}
|
||||
::CoUninitialize();
|
||||
}
|
||||
#endif
|
||||
|
||||
// Destroy the Dispatch Window
|
||||
::DestroyWindow(mDispatchWnd);
|
||||
|
@ -645,7 +624,6 @@ nsToolkit::Startup(HMODULE hModule)
|
|||
|
||||
nsToolkit::mIsNT = (osversion.dwPlatformId == VER_PLATFORM_WIN32_NT);
|
||||
if (nsToolkit::mIsNT) {
|
||||
#ifdef MOZ_UNICODE
|
||||
// For Windows 9x base OS nsFoo is already pointing to A functions
|
||||
// However on NT base OS we should point them to respective W functions
|
||||
nsToolkit::mDefWindowProc = DefWindowProcW;
|
||||
|
@ -673,7 +651,6 @@ nsToolkit::Startup(HMODULE hModule)
|
|||
if (!nsToolkit::mSHBrowseForFolder)
|
||||
nsToolkit::mSHBrowseForFolder = &nsSHBrowseForFolder;
|
||||
}
|
||||
#endif /* MOZ_UNICODE */
|
||||
nsToolkit::mUseImeApiW = PR_TRUE;
|
||||
// XXX Hack for stopping the crash (125573)
|
||||
if (osversion.dwMajorVersion == 5 && (osversion.dwMinorVersion == 0 || osversion.dwMinorVersion == 1)) {
|
||||
|
@ -690,12 +667,7 @@ nsToolkit::Startup(HMODULE hModule)
|
|||
//
|
||||
// register the internal window class
|
||||
//
|
||||
#ifdef MOZ_UNICODE
|
||||
WNDCLASSW wc;
|
||||
#else
|
||||
WNDCLASS wc;
|
||||
#endif /* MOZ_UNICODE */
|
||||
|
||||
wc.style = CS_GLOBALCLASS;
|
||||
wc.lpfnWndProc = nsToolkit::WindowProc;
|
||||
wc.cbClsExtra = 0;
|
||||
|
@ -705,13 +677,8 @@ nsToolkit::Startup(HMODULE hModule)
|
|||
wc.hCursor = NULL;
|
||||
wc.hbrBackground = NULL;
|
||||
wc.lpszMenuName = NULL;
|
||||
#ifdef MOZ_UNICODE
|
||||
wc.lpszClassName = L"nsToolkitClass";
|
||||
VERIFY(nsToolkit::mRegisterClass(&wc));
|
||||
#else
|
||||
wc.lpszClassName = "nsToolkitClass";
|
||||
VERIFY(::RegisterClass(&wc));
|
||||
#endif /* MOZ_UNICODE */
|
||||
}
|
||||
|
||||
|
||||
|
@ -815,13 +782,9 @@ NS_METHOD nsToolkit::Init(PRThread *aThread)
|
|||
// Store the thread ID of the thread containing the message pump.
|
||||
// If no thread is provided create one
|
||||
if (NULL != aThread) {
|
||||
|
||||
#ifdef MOZ_AIMM
|
||||
// Start Active Input Method Manager on this thread
|
||||
if(nsToolkit::gAIMMApp)
|
||||
nsToolkit::gAIMMApp->Activate(TRUE);
|
||||
#endif
|
||||
|
||||
CreateInternalWindow(aThread);
|
||||
} else {
|
||||
// create a thread where the message pump will run
|
||||
|
@ -874,19 +837,13 @@ LRESULT CALLBACK nsToolkit::WindowProc(HWND hWnd, UINT msg, WPARAM wParam,
|
|||
|
||||
}
|
||||
|
||||
#ifdef MOZ_AIMM
|
||||
if(nsToolkit::gAIMMApp) {
|
||||
LRESULT lResult;
|
||||
if (nsToolkit::gAIMMApp->OnDefWindowProc(hWnd, msg, wParam, lParam, &lResult) == S_OK)
|
||||
return lResult;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
return nsToolkit::mDefWindowProc(hWnd, msg, wParam, lParam);
|
||||
#else
|
||||
return ::DefWindowProc(hWnd, msg, wParam, lParam);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -41,13 +41,9 @@
|
|||
#include "nsdefs.h"
|
||||
#include "nsIToolkit.h"
|
||||
|
||||
#ifdef MOZ_AIMM
|
||||
struct IActiveIMMApp;
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
#include "nsWindowAPI.h"
|
||||
#endif
|
||||
|
||||
struct MethodInfo;
|
||||
class nsIEventQueue;
|
||||
|
@ -106,13 +102,10 @@ public:
|
|||
static void Startup(HINSTANCE hModule);
|
||||
static void Shutdown();
|
||||
|
||||
#ifdef MOZ_AIMM
|
||||
// Active Input Method support
|
||||
static IActiveIMMApp *gAIMMApp;
|
||||
static PRInt32 gAIMMCount;
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
// Ansi API support
|
||||
static HMODULE mShell32Module;
|
||||
static NS_DefWindowProc mDefWindowProc;
|
||||
|
@ -131,7 +124,6 @@ public:
|
|||
static NS_UnregisterClass mUnregisterClass;
|
||||
static NS_SHGetPathFromIDList mSHGetPathFromIDList;
|
||||
static NS_SHBrowseForFolder mSHBrowseForFolder;
|
||||
#endif
|
||||
};
|
||||
|
||||
#define WM_CALLMETHOD (WM_USER+1)
|
||||
|
|
|
@ -93,9 +93,7 @@
|
|||
#endif
|
||||
|
||||
#include <imm.h>
|
||||
#ifdef MOZ_AIMM
|
||||
#include "aimm.h"
|
||||
#endif // MOZ_AIMM
|
||||
|
||||
#include "nsNativeDragTarget.h"
|
||||
#include "nsIRollupListener.h"
|
||||
|
@ -269,8 +267,6 @@ static PRBool is_vk_down(int vk)
|
|||
// Macro for Active Input Method Manager (AIMM) support.
|
||||
// Use AIMM method instead of Win32 Imm APIs.
|
||||
//
|
||||
#ifdef MOZ_AIMM
|
||||
|
||||
#define NS_IMM_GETCOMPOSITIONSTRING(hIMC, dwIndex, pBuf, dwBufLen, compStrLen) \
|
||||
{ \
|
||||
compStrLen = 0; \
|
||||
|
@ -439,99 +435,6 @@ static PRBool is_vk_down(int vk)
|
|||
} \
|
||||
}
|
||||
|
||||
#else /* !MOZ_AIMM */
|
||||
|
||||
#define NS_IMM_GETCOMPOSITIONSTRING(hIMC, dwIndex, pBuf, dwBufLen, compStrLen) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
compStrLen = theIMM.GetCompositionStringA(hIMC, dwIndex, pBuf, dwBufLen); \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETCOMPOSITIONSTRINGW(hIMC, dwIndex, pBuf, dwBufLen, compStrLen) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
compStrLen = theIMM.GetCompositionStringW(hIMC, dwIndex, pBuf, dwBufLen); \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETCONTEXT(hWnd, hIMC) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
hIMC = theIMM.GetContext(hWnd); \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETCONVERSIONSTATUS(hIMC, lpfdwConversion, lpfdwSentence) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.GetConversionStatus(hIMC, (lpfdwConversion), (lpfdwSentence)); \
|
||||
}
|
||||
|
||||
#define NS_IMM_RELEASECONTEXT(hWnd, hIMC) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.ReleaseContext(hWnd, hIMC); \
|
||||
}
|
||||
|
||||
#define NS_IMM_NOTIFYIME(hIMC, dwAction, dwIndex, dwValue) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.NotifyIME(hIMC, dwAction, dwIndex, dwValue); \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCANDIDATEWINDOW(hIMC, candForm) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetCandidateWindow(hIMC, candForm); \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCOMPOSITIONWINDOW(hIMC, compForm) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetCompositionWindow(hIMC, compForm); \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETCOMPOSITIONFONT(hIMC, lf) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.GetCompositionFont(hIMC, lf); \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETCOMPOSITIONFONTW(hIMC, lf) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.GetCompositionFontW(hIMC, lf); \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCOMPOSITIONFONT(hIMC, lf) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetCompositionFont(hIMC, lf); \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCOMPOSITIONFONTW(hIMC, lf) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetCompositionFontW(hIMC, lf); \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCONVERSIONSTATUS(hIMC, lpfdwConversion, lpfdwSentence) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetConversionStatus(hIMC, (lpfdwConversion), (lpfdwSentence)); \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETPROPERTY(hKL, dwIndex, dwProp) \
|
||||
{ \
|
||||
nsIMM& theIMM = nsIMM::LoadModule(); \
|
||||
dwProp = (DWORD)theIMM.GetProperty(hKL, dwIndex); \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETDEFAULTIMEWND(hWnd, phDefWnd) \
|
||||
{ \
|
||||
nsIMM& theIMM = nsIMM::LoadModule(); \
|
||||
*(phDefWnd) = theIMM.GetDefaultIMEWnd(hWnd); \
|
||||
}
|
||||
#endif /* MOZ_AIMM */
|
||||
|
||||
//
|
||||
// for reconversion define
|
||||
//
|
||||
|
@ -744,21 +647,12 @@ static nsAttentionTimerMonitor *gAttentionTimerMonitor = 0;
|
|||
|
||||
BOOL CALLBACK nsWindow::BroadcastMsgToChildren(HWND aWnd, LPARAM aMsg)
|
||||
{
|
||||
#ifdef MOZ_UNICODE
|
||||
LONG proc = nsToolkit::mGetWindowLong(aWnd, GWL_WNDPROC);
|
||||
if (proc == (LONG)&nsWindow::WindowProc) {
|
||||
// its one of our windows so go ahead and send a message to it
|
||||
WNDPROC winProc = (WNDPROC)nsToolkit::mGetWindowLong(aWnd, GWL_WNDPROC);
|
||||
nsToolkit::mCallWindowProc(winProc, aWnd, aMsg, 0, 0);
|
||||
}
|
||||
#else
|
||||
LONG proc = ::GetWindowLong(aWnd, GWL_WNDPROC);
|
||||
if (proc == (LONG)&nsWindow::WindowProc) {
|
||||
// its one of our windows so go ahead and send a message to it
|
||||
WNDPROC winProc = (WNDPROC)GetWindowLong(aWnd, GWL_WNDPROC);
|
||||
::CallWindowProc(winProc, aWnd, aMsg, 0, 0);
|
||||
}
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -1418,11 +1312,7 @@ LRESULT CALLBACK nsWindow::WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM
|
|||
// why we are hitting this assert
|
||||
if (nsnull == someWindow) {
|
||||
NS_ASSERTION(someWindow, "someWindow is null, cannot call any CallWindowProc");
|
||||
#ifdef MOZ_UNICODE
|
||||
return nsToolkit::mDefWindowProc(hWnd, msg, wParam, lParam);
|
||||
#else
|
||||
return ::DefWindowProc(hWnd, msg, wParam, lParam);
|
||||
#endif
|
||||
}
|
||||
|
||||
// hold on to the window for the life of this method, in case it gets
|
||||
|
@ -1449,25 +1339,14 @@ LRESULT CALLBACK nsWindow::WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM
|
|||
}
|
||||
|
||||
#if defined(STRICT)
|
||||
#ifdef MOZ_UNICODE
|
||||
return nsToolkit::mCallWindowProc((WNDPROC)someWindow->GetPrevWindowProc(), hWnd,
|
||||
msg, wParam, lParam);
|
||||
#else
|
||||
return ::CallWindowProc((WNDPROC)someWindow->GetPrevWindowProc(), hWnd,
|
||||
msg, wParam, lParam);
|
||||
#endif
|
||||
#else
|
||||
#ifdef MOZ_UNICODE
|
||||
return nsToolkit::mCallWindowProc((FARPROC)someWindow->GetPrevWindowProc(), hWnd,
|
||||
msg, wParam, lParam);
|
||||
#else
|
||||
return ::CallWindowProc((FARPROC)someWindow->GetPrevWindowProc(), hWnd,
|
||||
msg, wParam, lParam);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef MOZ_AIMM
|
||||
//
|
||||
// Default Window proceduer for AIMM support.
|
||||
//
|
||||
|
@ -1479,13 +1358,8 @@ LRESULT CALLBACK nsWindow::DefaultWindowProc(HWND hWnd, UINT msg, WPARAM wParam,
|
|||
if (nsToolkit::gAIMMApp->OnDefWindowProc(hWnd, msg, wParam, lParam, &lResult) == S_OK)
|
||||
return lResult;
|
||||
}
|
||||
#ifdef MOZ_UNICODE
|
||||
return nsToolkit::mDefWindowProc(hWnd, msg, wParam, lParam);
|
||||
#else
|
||||
return ::DefWindowProc(hWnd, msg, wParam, lParam);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
static BOOL CALLBACK DummyDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
|
||||
return FALSE;
|
||||
|
@ -1606,7 +1480,6 @@ nsresult nsWindow::StandardWindowCreate(nsIWidget *aParent,
|
|||
(DLGPROC)DummyDialogProc,
|
||||
NULL);
|
||||
} else {
|
||||
#ifdef MOZ_UNICODE
|
||||
mWnd = nsToolkit::mCreateWindowEx(extendedStyle,
|
||||
aInitData && aInitData->mDropShadow ?
|
||||
WindowPopupClassW() : WindowClassW(),
|
||||
|
@ -1620,21 +1493,6 @@ nsresult nsWindow::StandardWindowCreate(nsIWidget *aParent,
|
|||
NULL,
|
||||
nsToolkit::mDllInstance,
|
||||
NULL);
|
||||
#else
|
||||
mWnd = ::CreateWindowEx(extendedStyle,
|
||||
aInitData && aInitData->mDropShadow ?
|
||||
WindowPopupClass() : WindowClass(),
|
||||
"",
|
||||
style,
|
||||
aRect.x,
|
||||
aRect.y,
|
||||
aRect.width,
|
||||
GetHeight(aRect.height),
|
||||
parent,
|
||||
NULL,
|
||||
nsToolkit::mDllInstance,
|
||||
NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
VERIFY(mWnd);
|
||||
|
@ -1668,7 +1526,6 @@ PRBool nsWindow::SetWin32ContentType()
|
|||
|
||||
nsContentType newContentType = mContentType;
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
if (newContentType == eContentTypeInherit) {
|
||||
HWND parentWnd = mWnd;
|
||||
newContentType = eContentTypeUI; // default if we're the root
|
||||
|
@ -1678,17 +1535,6 @@ PRBool nsWindow::SetWin32ContentType()
|
|||
}
|
||||
nsContentType oldContentType = (nsContentType)nsToolkit::mGetWindowLong(mWnd, GWL_ID);
|
||||
nsToolkit::mSetWindowLong(mWnd, GWL_ID, (PRInt32)newContentType);
|
||||
#else
|
||||
if (newContentType == eContentTypeInherit) {
|
||||
HWND parentWnd = mWnd;
|
||||
newContentType = eContentTypeUI; // default if we're the root
|
||||
if ((parentWnd = ::GetParent(parentWnd)) != 0) {
|
||||
newContentType = (nsContentType)nsToolkit::GetWindowLong(parentWnd, GWL_ID);
|
||||
}
|
||||
}
|
||||
nsContentType oldContentType = (nsContentType)nsToolkit::GetWindowLong(mWnd, GWL_ID);
|
||||
nsToolkit::SetWindowLong(mWnd, GWL_ID, (PRInt32)newContentType);
|
||||
#endif
|
||||
|
||||
return oldContentType != newContentType;
|
||||
}
|
||||
|
@ -2001,11 +1847,7 @@ NS_METHOD nsWindow::ModalEventFilter(PRBool aRealEvent, void *aEvent,
|
|||
// if not, accept events for any window that hasn't been
|
||||
// disabled.
|
||||
if (!acceptEvent) {
|
||||
#ifdef MOZ_UNICODE
|
||||
LONG proc = nsToolkit::mGetWindowLong(msgWindow, GWL_WNDPROC);
|
||||
#else
|
||||
LONG proc = ::GetWindowLong(msgWindow, GWL_WNDPROC);
|
||||
#endif /* MOZ_UNICODE */
|
||||
if (proc == (LONG)&nsWindow::WindowProc) {
|
||||
nsWindow *msgWin = GetNSWindowPtr(msgWindow);
|
||||
msgWin->IsEnabled(&acceptEvent);
|
||||
|
@ -2474,11 +2316,7 @@ NS_METHOD nsWindow::SetFont(const nsFont &aFont)
|
|||
HFONT hfont = (HFONT)fontHandle;
|
||||
|
||||
// Draw in the new font
|
||||
#ifdef MOZ_UNICODE
|
||||
nsToolkit::mSendMessage(mWnd, WM_SETFONT, (WPARAM)hfont, (LPARAM)0);
|
||||
#else
|
||||
::SendMessage(mWnd, WM_SETFONT, (WPARAM)hfont, (LPARAM)0);
|
||||
#endif
|
||||
NS_RELEASE(metrics);
|
||||
|
||||
return NS_OK;
|
||||
|
@ -2640,13 +2478,8 @@ NS_IMETHODIMP nsWindow::HideWindowChrome(PRBool aShouldHide)
|
|||
|
||||
DWORD style, exStyle;
|
||||
if (aShouldHide) {
|
||||
#ifdef MOZ_UNICODE
|
||||
DWORD tempStyle = nsToolkit::mGetWindowLong(hwnd, GWL_STYLE);
|
||||
DWORD tempExStyle = nsToolkit::mGetWindowLong(hwnd, GWL_EXSTYLE);
|
||||
#else
|
||||
DWORD tempStyle = ::GetWindowLong(hwnd, GWL_STYLE);
|
||||
DWORD tempExStyle = ::GetWindowLong(hwnd, GWL_EXSTYLE);
|
||||
#endif /* MOZ_UNICODE */
|
||||
|
||||
style = WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX;
|
||||
exStyle = 0;
|
||||
|
@ -2656,26 +2489,16 @@ NS_IMETHODIMP nsWindow::HideWindowChrome(PRBool aShouldHide)
|
|||
}
|
||||
else {
|
||||
if (!mOldStyle || !mOldExStyle) {
|
||||
#ifdef MOZ_UNICODE
|
||||
mOldStyle = nsToolkit::mGetWindowLong(hwnd, GWL_STYLE);
|
||||
mOldExStyle = nsToolkit::mGetWindowLong(hwnd, GWL_EXSTYLE);
|
||||
#else
|
||||
mOldStyle = ::GetWindowLong(hwnd, GWL_STYLE);
|
||||
mOldExStyle = ::GetWindowLong(hwnd, GWL_EXSTYLE);
|
||||
#endif /* MOZ_UNICODE */
|
||||
}
|
||||
|
||||
style = mOldStyle;
|
||||
exStyle = mOldExStyle;
|
||||
}
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
nsToolkit::mSetWindowLong(hwnd, GWL_STYLE, style);
|
||||
nsToolkit::mSetWindowLong(hwnd, GWL_EXSTYLE, exStyle);
|
||||
#else
|
||||
::SetWindowLong(hwnd, GWL_STYLE, style);
|
||||
::SetWindowLong(hwnd, GWL_EXSTYLE, exStyle);
|
||||
#endif
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -3226,23 +3049,17 @@ BOOL nsWindow::OnChar( UINT mbcsCharCode, UINT virtualKeyCode, bool isMultiByte
|
|||
}
|
||||
else
|
||||
{ // 0x20 - SPACE, 0x3D - EQUALS
|
||||
#ifdef MOZ_UNICODE
|
||||
if(mbcsCharCode < 0x20 || (virtualKeyCode == 0x3D && mIsControlDown))
|
||||
#else
|
||||
if(virtualKeyCode < 0x20 || (virtualKeyCode == 0x3D && mIsControlDown))
|
||||
#endif /* MOZ_UNICODE */
|
||||
{
|
||||
uniChar = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef MOZ_UNICODE
|
||||
if (nsToolkit::mIsNT) {
|
||||
uniChar = mbcsCharCode;
|
||||
}
|
||||
else
|
||||
{
|
||||
#endif /* MOZ_UNICODE */
|
||||
char charToConvert[3];
|
||||
size_t length;
|
||||
|
||||
|
@ -3271,9 +3088,7 @@ BOOL nsWindow::OnChar( UINT mbcsCharCode, UINT virtualKeyCode, bool isMultiByte
|
|||
}
|
||||
::MultiByteToWideChar(gCurrentKeyboardCP,MB_PRECOMPOSED,charToConvert,length,
|
||||
&uniChar, 1);
|
||||
#ifdef MOZ_UNICODE
|
||||
}
|
||||
#endif /* MOZ_UNICODE */
|
||||
virtualKeyCode = 0;
|
||||
}
|
||||
}
|
||||
|
@ -3756,11 +3571,7 @@ static nsresult HeapDump(const char *filename, const char *heading)
|
|||
|
||||
BOOL CALLBACK nsWindow::DispatchStarvedPaints(HWND aWnd, LPARAM aMsg)
|
||||
{
|
||||
#ifdef MOZ_UNICODE
|
||||
LONG proc = nsToolkit::mGetWindowLong(aWnd, GWL_WNDPROC);
|
||||
#else
|
||||
LONG proc = ::GetWindowLong(aWnd, GWL_WNDPROC);
|
||||
#endif /* MOZ_UNICODE */
|
||||
if (proc == (LONG)&nsWindow::WindowProc) {
|
||||
// its one of our windows so check to see if it has a
|
||||
// invalidated rect. If it does. Dispatch a synchronous
|
||||
|
@ -4321,17 +4132,10 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
|||
break;
|
||||
|
||||
case WM_KILLFOCUS:
|
||||
#ifdef MOZ_UNICODE
|
||||
WCHAR className[19];
|
||||
nsToolkit::mGetClassName((HWND)wParam, className, 19);
|
||||
if(wcscmp(className, WindowClassW()))
|
||||
isMozWindowTakingFocus = PR_FALSE;
|
||||
#else
|
||||
char className[19];
|
||||
::GetClassName((HWND)wParam, className, 19);
|
||||
if(strcmp(className, WindowClass()))
|
||||
isMozWindowTakingFocus = PR_FALSE;
|
||||
#endif
|
||||
if(gJustGotDeactivate) {
|
||||
gJustGotDeactivate = PR_FALSE;
|
||||
result = DispatchFocus(NS_DEACTIVATE, isMozWindowTakingFocus);
|
||||
|
@ -4432,18 +4236,10 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
|||
|
||||
if (pl.showCmd == SW_SHOWMINIMIZED) {
|
||||
// Deactivate
|
||||
#ifdef MOZ_UNICODE
|
||||
WCHAR className[19];
|
||||
nsToolkit::mGetClassName((HWND)wParam, className, 19);
|
||||
if(wcscmp(className, WindowClassW()))
|
||||
isMozWindowTakingFocus = PR_FALSE;
|
||||
#else
|
||||
char className[19];
|
||||
::GetClassName((HWND)wParam, className, 19);
|
||||
if(strcmp(className, WindowClass()))
|
||||
isMozWindowTakingFocus = PR_FALSE;
|
||||
#endif
|
||||
|
||||
gJustGotDeactivate = PR_FALSE;
|
||||
result = DispatchFocus(NS_DEACTIVATE, isMozWindowTakingFocus);
|
||||
} else if (pl.showCmd == SW_SHOWNORMAL){
|
||||
|
@ -4695,11 +4491,7 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
|||
break;
|
||||
}
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
LONG proc = nsToolkit::mGetWindowLong(destWnd, GWL_WNDPROC);
|
||||
#else
|
||||
LONG proc = ::GetWindowLong(destWnd, GWL_WNDPROC);
|
||||
#endif /* MOZ_UNICODE */
|
||||
if (proc != (LONG)&nsWindow::WindowProc) {
|
||||
// Some other app, or a plugin window.
|
||||
// Windows directs WM_MOUSEWHEEL to the focused window.
|
||||
|
@ -4818,7 +4610,6 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
|||
|
||||
#define CS_XP_DROPSHADOW 0x00020000
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
LPCWSTR nsWindow::WindowClassW()
|
||||
{
|
||||
const LPCWSTR className = L"MozillaWindowClass";
|
||||
|
@ -4828,11 +4619,7 @@ LPCWSTR nsWindow::WindowClassW()
|
|||
|
||||
// wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
|
||||
wc.style = CS_DBLCLKS;
|
||||
#ifdef MOZ_AIMM
|
||||
wc.lpfnWndProc = nsWindow::DefaultWindowProc;
|
||||
#else
|
||||
wc.lpfnWndProc = nsToolkit::nsDefWindowProc;
|
||||
#endif
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = nsToolkit::mDllInstance;
|
||||
|
@ -4843,11 +4630,9 @@ LPCWSTR nsWindow::WindowClassW()
|
|||
wc.lpszClassName = className;
|
||||
|
||||
nsWindow::sIsRegistered = nsToolkit::mRegisterClass(&wc);
|
||||
#ifdef MOZ_AIMM
|
||||
// Call FilterClientWindows method since it enables ActiveIME on CJK Windows
|
||||
if(nsToolkit::gAIMMApp)
|
||||
nsToolkit::gAIMMApp->FilterClientWindows((ATOM*)&nsWindow::sIsRegistered,1);
|
||||
#endif // MOZ_AIMM
|
||||
}
|
||||
|
||||
return className;
|
||||
|
@ -4860,11 +4645,7 @@ LPCWSTR nsWindow::WindowPopupClassW()
|
|||
if (!nsWindow::sIsPopupClassRegistered) {
|
||||
WNDCLASSW wc;
|
||||
wc.style = CS_DBLCLKS | CS_XP_DROPSHADOW;
|
||||
#ifdef MOZ_AIMM
|
||||
wc.lpfnWndProc = nsWindow::DefaultWindowProc;
|
||||
#else
|
||||
wc.lpfnWndProc = nsToolkit::nsDefWindowProc;
|
||||
#endif
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = nsToolkit::mDllInstance;
|
||||
|
@ -4888,83 +4669,26 @@ LPCWSTR nsWindow::WindowPopupClassW()
|
|||
|
||||
LPCTSTR nsWindow::WindowClass()
|
||||
{
|
||||
return (NS_ConvertUCS2toUTF8(WindowClassW()).get());
|
||||
// Call into the wide version to make sure things get
|
||||
// registered properly.
|
||||
WindowClassW();
|
||||
|
||||
// XXX: The class name used here must be kept in sync with
|
||||
// the classname used in WindowClassW();
|
||||
return "MozillaWindowClass";
|
||||
}
|
||||
|
||||
LPCTSTR nsWindow::WindowPopupClass()
|
||||
{
|
||||
return (NS_ConvertUCS2toUTF8(WindowPopupClassW()).get());
|
||||
// Call into the wide version to make sure things get
|
||||
// registered properly.
|
||||
WindowPopupClassW();
|
||||
|
||||
// XXX: The class name used here must be kept in sync with
|
||||
// the classname used in WindowPopupClassW();
|
||||
return "MozillaDropShadowWindowClass";
|
||||
}
|
||||
|
||||
#else
|
||||
LPCTSTR nsWindow::WindowClass()
|
||||
{
|
||||
const LPCTSTR className = "MozillaWindowClass";
|
||||
|
||||
if (!nsWindow::sIsRegistered) {
|
||||
WNDCLASS wc;
|
||||
|
||||
// wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
|
||||
wc.style = CS_DBLCLKS;
|
||||
#ifdef MOZ_AIMM
|
||||
wc.lpfnWndProc = nsWindow::DefaultWindowProc;
|
||||
#else
|
||||
wc.lpfnWndProc = ::DefWindowProc;
|
||||
#endif
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = nsToolkit::mDllInstance;
|
||||
wc.hIcon = ::LoadIcon(::GetModuleHandle(NULL), IDI_APPLICATION);
|
||||
wc.hCursor = NULL;
|
||||
wc.hbrBackground = mBrush;
|
||||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = className;
|
||||
|
||||
nsWindow::sIsRegistered = ::RegisterClass(&wc);
|
||||
#ifdef MOZ_AIMM
|
||||
// Call FilterClientWindows method since it enables ActiveIME on CJK Windows
|
||||
if(nsToolkit::gAIMMApp)
|
||||
nsToolkit::gAIMMApp->FilterClientWindows((ATOM*)&nsWindow::sIsRegistered,1);
|
||||
#endif // MOZ_AIMM
|
||||
}
|
||||
|
||||
return className;
|
||||
}
|
||||
|
||||
LPCTSTR nsWindow::WindowPopupClass()
|
||||
{
|
||||
const LPCTSTR className = "MozillaDropShadowWindowClass";
|
||||
|
||||
if (!nsWindow::sIsPopupClassRegistered) {
|
||||
WNDCLASS wc;
|
||||
wc.style = CS_DBLCLKS | CS_XP_DROPSHADOW;
|
||||
#ifdef MOZ_AIMM
|
||||
wc.lpfnWndProc = nsWindow::DefaultWindowProc;
|
||||
#else
|
||||
wc.lpfnWndProc = ::DefWindowProc;
|
||||
#endif
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = nsToolkit::mDllInstance;
|
||||
wc.hIcon = ::LoadIcon(::GetModuleHandle(NULL), IDI_APPLICATION);
|
||||
wc.hCursor = NULL;
|
||||
wc.hbrBackground = mBrush;
|
||||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = className;
|
||||
|
||||
nsWindow::sIsPopupClassRegistered = ::RegisterClass(&wc);
|
||||
if (!nsWindow::sIsPopupClassRegistered) {
|
||||
// For older versions of Win32 (i.e., not XP), the registration will
|
||||
// fail, so we have to re-register without the CS_XP_DROPSHADOW flag.
|
||||
wc.style = CS_DBLCLKS;
|
||||
nsWindow::sIsPopupClassRegistered = ::RegisterClass(&wc);
|
||||
}
|
||||
}
|
||||
|
||||
return className;
|
||||
}
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// return nsWindow styles
|
||||
|
@ -5081,30 +4805,21 @@ void nsWindow::SubclassWindow(BOOL bState)
|
|||
|
||||
if (bState) {
|
||||
// change the nsWindow proc
|
||||
#ifdef MOZ_UNICODE
|
||||
if (mUnicodeWidget)
|
||||
mPrevWndProc = (WNDPROC)nsToolkit::mSetWindowLong(mWnd, GWL_WNDPROC,
|
||||
(LONG)nsWindow::WindowProc);
|
||||
else
|
||||
mPrevWndProc = (WNDPROC)::SetWindowLong(mWnd, GWL_WNDPROC,
|
||||
(LONG)nsWindow::WindowProc);
|
||||
#else
|
||||
mPrevWndProc = (WNDPROC)::SetWindowLong(mWnd, GWL_WNDPROC,
|
||||
(LONG)nsWindow::WindowProc);
|
||||
#endif
|
||||
NS_ASSERTION(mPrevWndProc, "Null standard window procedure");
|
||||
// connect the this pointer to the nsWindow handle
|
||||
SetNSWindowPtr(mWnd, this);
|
||||
}
|
||||
else {
|
||||
#ifdef MOZ_UNICODE
|
||||
if (mUnicodeWidget)
|
||||
nsToolkit::mSetWindowLong(mWnd, GWL_WNDPROC, (LONG)mPrevWndProc);
|
||||
else
|
||||
::SetWindowLong(mWnd, GWL_WNDPROC, (LONG)mPrevWndProc);
|
||||
#else
|
||||
::SetWindowLong(mWnd, GWL_WNDPROC, (LONG)mPrevWndProc);
|
||||
#endif
|
||||
SetNSWindowPtr(mWnd, NULL);
|
||||
mPrevWndProc = NULL;
|
||||
}
|
||||
|
@ -5746,11 +5461,7 @@ NS_METHOD nsWindow::SetTitle(const nsString& aTitle)
|
|||
{
|
||||
char* title = GetACPString(aTitle);
|
||||
if (title) {
|
||||
#ifdef MOZ_UNICODE
|
||||
nsToolkit::mSendMessage(mWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)(LPCWSTR)PromiseFlatString(aTitle).get());
|
||||
#else
|
||||
::SendMessage(mWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)(LPCTSTR)title);
|
||||
#endif
|
||||
delete [] title;
|
||||
}
|
||||
return NS_OK;
|
||||
|
@ -5824,11 +5535,7 @@ NS_METHOD nsWindow::SetIcon(const nsAString& anIconSpec)
|
|||
|
||||
if ( bigIcon ) {
|
||||
LRESULT rv = 0;
|
||||
#ifdef MOZ_UNICODE
|
||||
rv = nsToolkit::mSendMessage(mWnd, WM_SETICON, (WPARAM)ICON_BIG, (LPARAM)bigIcon);
|
||||
#else
|
||||
rv = ::SendMessage(mWnd, WM_SETICON, (WPARAM)ICON_BIG, (LPARAM)bigIcon);
|
||||
#endif
|
||||
}
|
||||
#ifdef DEBUG_law
|
||||
else {
|
||||
|
@ -5838,11 +5545,7 @@ NS_METHOD nsWindow::SetIcon(const nsAString& anIconSpec)
|
|||
#endif
|
||||
if ( smallIcon ) {
|
||||
LRESULT rv = 0;
|
||||
#ifdef MOZ_UNICODE
|
||||
rv = nsToolkit::mSendMessage(mWnd, WM_SETICON, (WPARAM)ICON_SMALL, (LPARAM)smallIcon);
|
||||
#else
|
||||
rv = ::SendMessage(mWnd, WM_SETICON, (WPARAM)ICON_SMALL, (LPARAM)smallIcon);
|
||||
#endif
|
||||
}
|
||||
#ifdef DEBUG_law
|
||||
else {
|
||||
|
@ -6246,12 +5949,10 @@ BOOL nsWindow::OnIMEChar(BYTE aByte1, BYTE aByte2, LPARAM aKeyState)
|
|||
size_t length;
|
||||
int err = 0;
|
||||
|
||||
#ifdef MOZ_UNICODE
|
||||
if (nsToolkit::mIsNT) {
|
||||
uniChar = MAKEWORD(aByte2, aByte1);
|
||||
}
|
||||
else {
|
||||
#endif /* MOZ_UNICODE */
|
||||
if (aByte1) {
|
||||
charToConvert[0] = aByte1;
|
||||
charToConvert[1] = aByte2;
|
||||
|
@ -6263,9 +5964,7 @@ BOOL nsWindow::OnIMEChar(BYTE aByte1, BYTE aByte2, LPARAM aKeyState)
|
|||
}
|
||||
err = ::MultiByteToWideChar(gCurrentKeyboardCP, MB_PRECOMPOSED, charToConvert, length,
|
||||
&uniChar, 1);
|
||||
#ifdef MOZ_UNICODE
|
||||
}
|
||||
#endif /* MOZ_UNICODE */
|
||||
|
||||
#ifdef DEBUG_IME
|
||||
if (!err) {
|
||||
|
@ -6898,11 +6597,7 @@ nsWindow::HandleMouseActionOfIME(int aAction, POINT *ptPos)
|
|||
// send MS_MSIME_MOUSE message to default IME window.
|
||||
HWND imeWnd;
|
||||
NS_IMM_GETDEFAULTIMEWND(mWnd, &imeWnd);
|
||||
#ifdef MOZ_UNICODE
|
||||
if (nsToolkit::mSendMessage(imeWnd, nsWindow::uWM_MSIME_MOUSE, MAKELONG(MAKEWORD(aAction, positioning), offset), (LPARAM) hIMC) == 1)
|
||||
#else
|
||||
if (::SendMessage(imeWnd, nsWindow::uWM_MSIME_MOUSE, MAKELONG(MAKEWORD(aAction, positioning), offset), (LPARAM) hIMC) == 1)
|
||||
#endif
|
||||
IsHandle = PR_TRUE;
|
||||
}
|
||||
NS_IMM_RELEASECONTEXT(mWnd, hIMC);
|
||||
|
|
|
@ -431,10 +431,8 @@ protected:
|
|||
// Allow Derived classes to modify the height that is passed
|
||||
// when the window is created or resized.
|
||||
virtual PRInt32 GetHeight(PRInt32 aProposedHeight);
|
||||
#ifdef MOZ_UNICODE
|
||||
virtual LPCWSTR WindowClassW();
|
||||
virtual LPCWSTR WindowPopupClassW();
|
||||
#endif
|
||||
virtual LPCTSTR WindowClass();
|
||||
virtual LPCTSTR WindowPopupClass();
|
||||
virtual DWORD WindowStyle();
|
||||
|
@ -477,9 +475,7 @@ protected:
|
|||
UINT msg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam);
|
||||
#ifdef MOZ_AIMM
|
||||
static LRESULT CALLBACK DefaultWindowProc(HWND hWns, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
#endif
|
||||
|
||||
static PRBool ConvertStatus(nsEventStatus aStatus);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче