зеркало из https://github.com/mozilla/gecko-dev.git
Remove obsolete native widget files, and do some minor cleanup. Bug 279510, r=pinkerton
This commit is contained in:
Родитель
165b6aeac0
Коммит
5516fb204e
|
@ -36,11 +36,10 @@
|
|||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
|
||||
#include <ControlDefinitions.h>
|
||||
|
||||
#include "nsNativeScrollbar.h"
|
||||
#include "nsIDeviceContext.h"
|
||||
#if TARGET_CARBON || (UNIVERSAL_INTERFACES_VERSION >= 0x0330)
|
||||
#include <ControlDefinitions.h>
|
||||
#endif
|
||||
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsWidgetAtoms.h"
|
||||
|
|
|
@ -37,6 +37,9 @@
|
|||
|
||||
#include "nsIFactory.h"
|
||||
#include "nsISupports.h"
|
||||
#include "nsIComponentManager.h"
|
||||
#include "nsIGenericFactory.h"
|
||||
|
||||
#include "nsWidgetsCID.h"
|
||||
|
||||
#include "nsToolkit.h"
|
||||
|
@ -49,10 +52,6 @@
|
|||
#include "nsMenuX.h"
|
||||
#include "nsMenuItemX.h"
|
||||
|
||||
#define nsMenuBar nsMenuBarX
|
||||
#define nsMenu nsMenuX
|
||||
#define nsMenuItem nsMenuItemX
|
||||
|
||||
#include "nsClipboard.h"
|
||||
#include "nsClipboardHelper.h"
|
||||
#include "nsTransferable.h"
|
||||
|
@ -60,34 +59,24 @@
|
|||
#include "nsDragService.h"
|
||||
#include "nsDragHelperService.h"
|
||||
|
||||
#if USE_NATIVE_VERSION
|
||||
# include "nsCheckButton.h"
|
||||
#endif
|
||||
|
||||
#include "nsLookAndFeel.h"
|
||||
|
||||
#include "nsIComponentManager.h"
|
||||
|
||||
#include "nsSound.h"
|
||||
#include "nsNativeScrollbar.h"
|
||||
|
||||
#include "nsBidiKeyboard.h"
|
||||
|
||||
|
||||
#include "nsIGenericFactory.h"
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsCocoaWindow)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsChildView)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFilePicker)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAppShellCocoa)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsToolkit)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsLookAndFeel)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenuBar)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenu)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenuItem)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenuBarX)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenuX)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenuItemX)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsNativeScrollbar)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSound)
|
||||
//NS_GENERIC_FACTORY_CONSTRUCTOR(nsFileSpecWithUIImpl)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard)
|
||||
|
@ -96,7 +85,7 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragService)
|
|||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragHelperService)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsBidiKeyboard)
|
||||
|
||||
static nsModuleComponentInfo components[] =
|
||||
static const nsModuleComponentInfo gComponents[] =
|
||||
{
|
||||
{ "nsWindow",
|
||||
NS_WINDOW_CID,
|
||||
|
@ -129,15 +118,15 @@ static nsModuleComponentInfo components[] =
|
|||
{ "Menubar",
|
||||
NS_MENUBAR_CID,
|
||||
"@mozilla.org/widget/menubar/mac;1",
|
||||
nsMenuBarConstructor },
|
||||
nsMenuBarXConstructor },
|
||||
{ "Menu",
|
||||
NS_MENU_CID,
|
||||
"@mozilla.org/widget/menu/mac;1",
|
||||
nsMenuConstructor },
|
||||
nsMenuXConstructor },
|
||||
{ "MenuItem",
|
||||
NS_MENUITEM_CID,
|
||||
"@mozilla.org/widget/menuitem/mac;1",
|
||||
nsMenuItemConstructor },
|
||||
nsMenuItemXConstructor },
|
||||
{ "Sound",
|
||||
NS_SOUND_CID,
|
||||
"@mozilla.org/sound;1",
|
||||
|
@ -176,4 +165,4 @@ static nsModuleComponentInfo components[] =
|
|||
nsNativeScrollbarConstructor }
|
||||
};
|
||||
|
||||
NS_IMPL_NSGETMODULE(nsWidgetMacModule, components)
|
||||
NS_IMPL_NSGETMODULE(nsWidgetMacModule, gComponents)
|
||||
|
|
|
@ -84,16 +84,13 @@ GFX_LCPPSRCS = \
|
|||
|
||||
CPPSRCS = nsAppShell.cpp \
|
||||
nsBidiKeyboard.cpp \
|
||||
nsButton.cpp \
|
||||
nsChildWindow.cpp \
|
||||
nsClipboard.cpp \
|
||||
nsDeleteObserver.cpp \
|
||||
nsDragService.cpp \
|
||||
nsDragHelperService.cpp \
|
||||
nsFilePicker.cpp \
|
||||
nsLabel.cpp \
|
||||
nsLookAndFeel.cpp \
|
||||
nsMacControl.cpp \
|
||||
nsMacEventHandler.cpp \
|
||||
nsMacMessagePump.cpp \
|
||||
nsMacResources.cpp \
|
||||
|
@ -103,9 +100,7 @@ CPPSRCS = nsAppShell.cpp \
|
|||
nsMenuBarX.cpp \
|
||||
nsMenuItemX.cpp \
|
||||
nsMimeMapper.cpp \
|
||||
nsNativeScrollbar.cpp \
|
||||
nsSound.cpp \
|
||||
nsTextWidget.cpp \
|
||||
nsTSMStrategy.cpp \
|
||||
nsToolkitBase.cpp \
|
||||
nsToolkit.cpp \
|
||||
|
@ -113,6 +108,8 @@ CPPSRCS = nsAppShell.cpp \
|
|||
nsWindow.cpp \
|
||||
nsMacNativeUnicodeConverter.cpp \
|
||||
nsStylClipboardUtils.cpp \
|
||||
nsMacControl.cpp \
|
||||
nsNativeScrollbar.cpp \
|
||||
$(GFX_LCPPSRCS) \
|
||||
$(NULL)
|
||||
|
||||
|
|
|
@ -1,92 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 MPL, 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 MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include <ControlDefinitions.h>
|
||||
|
||||
#include "nsButton.h"
|
||||
|
||||
NS_IMPL_ADDREF(nsButton)
|
||||
NS_IMPL_RELEASE(nsButton)
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsButton::nsButton() : nsMacControl(), nsIButton()
|
||||
{
|
||||
WIDGET_SET_CLASSNAME("nsButton");
|
||||
SetControlType(pushButProc);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsButton::~nsButton()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_INTERFACE_MAP_BEGIN(nsButton)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIButton)
|
||||
NS_INTERFACE_MAP_END_INHERITING(nsWindow)
|
||||
|
||||
#pragma mark -
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsButton::SetLabel(const nsString& aText)
|
||||
{
|
||||
mLabel = aText;
|
||||
Invalidate(PR_TRUE);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsButton::GetLabel(nsString& aBuffer)
|
||||
{
|
||||
aBuffer = mLabel;
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 MPL, 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 MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef nsButton_h__
|
||||
#define nsButton_h__
|
||||
|
||||
#include "nsMacControl.h"
|
||||
#include "nsIButton.h"
|
||||
|
||||
|
||||
class nsButton : public nsMacControl, public nsIButton
|
||||
{
|
||||
|
||||
public:
|
||||
nsButton();
|
||||
virtual ~nsButton();
|
||||
|
||||
// nsISupports
|
||||
NS_IMETHOD_(nsrefcnt) AddRef();
|
||||
NS_IMETHOD_(nsrefcnt) Release();
|
||||
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
|
||||
|
||||
// nsIButton part
|
||||
NS_IMETHOD SetLabel(const nsString& aText);
|
||||
NS_IMETHOD GetLabel(nsString& aBuffer);
|
||||
|
||||
};
|
||||
|
||||
#endif // nsButton_h__
|
|
@ -1,112 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 MPL, 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 MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsCheckButton.h"
|
||||
#include <ControlDefinitions.h>
|
||||
|
||||
|
||||
NS_IMPL_ADDREF(nsCheckButton)
|
||||
NS_IMPL_RELEASE(nsCheckButton)
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsCheckButton::nsCheckButton() : nsMacControl(), nsICheckButton()
|
||||
{
|
||||
gInstanceClassName = "nsCheckButton";
|
||||
SetControlType(checkBoxProc);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsCheckButton::~nsCheckButton()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_INTERFACE_MAP_BEGIN(nsCheckButton)
|
||||
NS_INTERFACE_MAP_ENTRY(nsICheckButton)
|
||||
NS_INTERFACE_MAP_END_INHERITING(nsWindow)
|
||||
|
||||
#pragma mark -
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsCheckButton::SetState(PRBool aState)
|
||||
{
|
||||
mValue = (aState ? 1 : 0);
|
||||
Invalidate(PR_TRUE);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsCheckButton::GetState(PRBool& aState)
|
||||
{
|
||||
aState = (mValue != 0);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsCheckButton::SetLabel(const nsString& aText)
|
||||
{
|
||||
mLabel = aText;
|
||||
Invalidate(PR_TRUE);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsCheckButton::GetLabel(nsString& aBuffer)
|
||||
{
|
||||
aBuffer = mLabel;
|
||||
return NS_OK;
|
||||
}
|
|
@ -1,66 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 MPL, 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 MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef nsCheckButton_h__
|
||||
#define nsCheckButton_h__
|
||||
|
||||
#include "nsMacControl.h"
|
||||
#include "nsICheckButton.h"
|
||||
|
||||
|
||||
class nsCheckButton : public nsMacControl, public nsICheckButton
|
||||
{
|
||||
|
||||
public:
|
||||
nsCheckButton();
|
||||
virtual ~nsCheckButton();
|
||||
|
||||
// nsISupports
|
||||
NS_IMETHOD_(nsrefcnt) AddRef();
|
||||
NS_IMETHOD_(nsrefcnt) Release();
|
||||
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
|
||||
|
||||
|
||||
// nsICheckButton part
|
||||
NS_IMETHOD SetLabel(const nsString& aText);
|
||||
NS_IMETHOD GetLabel(nsString& aBuffer);
|
||||
NS_IMETHOD SetState(const PRBool aState);
|
||||
NS_IMETHOD GetState(PRBool& aState);
|
||||
};
|
||||
|
||||
|
||||
#endif // nsCheckButton_h__
|
|
@ -53,7 +53,6 @@
|
|||
|
||||
#include <InternetConfig.h>
|
||||
|
||||
#include "nsMacControl.h"
|
||||
#include "nsCarbonHelpers.h"
|
||||
|
||||
#include "nsFilePicker.h"
|
||||
|
|
|
@ -1,113 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 MPL, 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 MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsLabel.h"
|
||||
|
||||
NS_IMPL_ADDREF(nsLabel)
|
||||
NS_IMPL_RELEASE(nsLabel)
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsLabel::nsLabel() : nsTextWidget(), nsILabel()
|
||||
{
|
||||
WIDGET_SET_CLASSNAME("nsLabel");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsLabel::~nsLabel()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_INTERFACE_MAP_BEGIN(nsLabel)
|
||||
NS_INTERFACE_MAP_ENTRY(nsILabel)
|
||||
NS_INTERFACE_MAP_END_INHERITING(nsTextWidget)
|
||||
|
||||
#pragma mark -
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsLabel::SetLabel(const nsString& aText)
|
||||
{
|
||||
PRUint32 displayedSize;
|
||||
return SetText(aText, displayedSize);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsLabel::GetLabel(nsString& aBuffer)
|
||||
{
|
||||
PRUint32 maxSize = -1;
|
||||
PRUint32 displayedSize;
|
||||
return GetText(aBuffer, maxSize, displayedSize);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsLabel::SetAlignment(nsLabelAlignment aAlignment)
|
||||
{
|
||||
if (!mControl)
|
||||
return NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
SInt16 just;
|
||||
switch (aAlignment)
|
||||
{
|
||||
case eAlign_Right: just = teFlushRight; break;
|
||||
case eAlign_Left: just = teFlushLeft; break;
|
||||
case eAlign_Center: just = teCenter; break;
|
||||
}
|
||||
ControlFontStyleRec fontStyleRec;
|
||||
fontStyleRec.flags = (kControlUseJustMask);
|
||||
fontStyleRec.just = just;
|
||||
::SetControlFontStyle(mControl, &fontStyleRec);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 MPL, 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 MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
#ifndef Label_h__
|
||||
#define Label_h__
|
||||
|
||||
#include "nsTextWidget.h"
|
||||
#include "nsILabel.h"
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsLabel
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
class nsLabel : public nsTextWidget, public nsILabel
|
||||
{
|
||||
|
||||
public:
|
||||
nsLabel();
|
||||
virtual ~nsLabel();
|
||||
|
||||
// nsISupports
|
||||
NS_IMETHOD_(nsrefcnt) AddRef();
|
||||
NS_IMETHOD_(nsrefcnt) Release();
|
||||
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
|
||||
|
||||
// nsILabel part
|
||||
NS_IMETHOD SetLabel(const nsString& aText);
|
||||
NS_IMETHOD GetLabel(nsString& aBuffer);
|
||||
NS_IMETHOD SetAlignment(nsLabelAlignment aAlignment);
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // Label_h__
|
|
@ -37,7 +37,6 @@
|
|||
|
||||
#include "nsMacWindow.h"
|
||||
#include "nsMacEventHandler.h"
|
||||
#include "nsMacControl.h"
|
||||
#include "nsToolkit.h"
|
||||
|
||||
#include "nsIServiceManager.h" // for drag and drop
|
||||
|
@ -1485,18 +1484,12 @@ NS_IMETHODIMP nsMacWindow::SetTitle(const nsAString& aTitle)
|
|||
{
|
||||
nsAString::const_iterator begin;
|
||||
const PRUnichar *strTitle = aTitle.BeginReading(begin).get();
|
||||
// Try to use the unicode friendly CFString version first
|
||||
CFStringRef labelRef = ::CFStringCreateWithCharacters(kCFAllocatorDefault, (UniChar*)strTitle, aTitle.Length());
|
||||
if (labelRef) {
|
||||
::SetWindowTitleWithCFString(mWindowPtr, labelRef);
|
||||
::CFRelease(labelRef);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
Str255 title;
|
||||
// unicode to file system charset
|
||||
nsMacControl::StringToStr255(aTitle, title);
|
||||
::SetWTitle(mWindowPtr, title);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,6 @@
|
|||
#include "nsIContent.h"
|
||||
|
||||
class nsIScrollbarMediator;
|
||||
class StControlProcSingleton5;
|
||||
|
||||
|
||||
//
|
||||
|
|
|
@ -1,242 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 MPL, 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 MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#error "This file is obsolete: nsTextAreaWidget is WASTE-based / nsTextWidget is a control"
|
||||
|
||||
#include "nsTextHelper.h"
|
||||
#include "nsTextWidget.h"
|
||||
#include "nsToolkit.h"
|
||||
#include "nsColor.h"
|
||||
#include "nsGUIEvent.h"
|
||||
#include "nsString.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
#define DBG 0
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsTextHelper constructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
nsTextHelper::nsTextHelper(nsISupports *aOuter):nsITextWidget(aOuter)
|
||||
{
|
||||
LongRect destRect,viewRect;
|
||||
PRUint32 teFlags=0;
|
||||
|
||||
mIsReadOnly = PR_FALSE;
|
||||
mIsPassword = PR_FALSE;
|
||||
WENew(&destRect,&viewRect,teFlags,&mTE_Data);
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsTextHelper destructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsTextHelper::~nsTextHelper()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
void nsTextHelper::SetMaxTextLength(PRUint32 aChars)
|
||||
{
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
PRUint32 nsTextHelper::GetText(nsString& aTextBuffer, PRUint32 aBufferSize)
|
||||
{
|
||||
PRUint32 len;
|
||||
|
||||
if (!mIsPassword)
|
||||
{
|
||||
//char * str = XmTextGetString(mWidget);
|
||||
aTextBuffer.SetLength(0);
|
||||
//aTextBuffer.Append(str);
|
||||
//PRUint32 len = (PRUint32)strlen(str);
|
||||
//XtFree(str);
|
||||
return len;
|
||||
}
|
||||
else
|
||||
{
|
||||
PasswordData * data;
|
||||
//XtVaGetValues(mWidget, XmNuserData, &data, NULL);
|
||||
aTextBuffer = data->mPassword;
|
||||
return aTextBuffer.Length();
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
PRUint32 nsTextHelper::SetText(const nsString& aText)
|
||||
{
|
||||
//printf("SetText Password %d\n", mIsPassword);
|
||||
if (!mIsPassword)
|
||||
{
|
||||
//XmTextSetString(mWidget, NS_LossyConvertUCS2toASCII(aText).get());
|
||||
}
|
||||
else
|
||||
{
|
||||
PasswordData * data;
|
||||
//(mWidget, XmNuserData, &data, NULL);
|
||||
data->mPassword = aText;
|
||||
data->mIgnore = PR_TRUE;
|
||||
char * buf = new char[aText.Length()+1];
|
||||
memset(buf, '*', aText.Length());
|
||||
buf[aText.Length()] = 0;
|
||||
//printf("SetText [%s] [%s]\n", NS_LossyConvertUCS2toASCII(data->mPassword).get(), buf);
|
||||
//XmTextSetString(mWidget, buf);
|
||||
data->mIgnore = PR_FALSE;
|
||||
}
|
||||
return(aText.Length());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
PRUint32 nsTextHelper::InsertText(const nsString &aText, PRUint32 aStartPos, PRUint32 aEndPos)
|
||||
{
|
||||
|
||||
if (!mIsPassword)
|
||||
{
|
||||
//XmTextInsert(mWidget, aStartPos, NS_LossyConvertUCS2toASCII(aText).get());
|
||||
}
|
||||
else
|
||||
{
|
||||
PasswordData * data;
|
||||
//XtVaGetValues(mWidget, XmNuserData, &data, NULL);
|
||||
data->mIgnore = PR_TRUE;
|
||||
nsString newText(aText);
|
||||
data->mPassword.Insert(newText, aStartPos, aText.Length());
|
||||
char * buf = new char[data->mPassword.Length()+1];
|
||||
memset(buf, '*', data->mPassword.Length());
|
||||
buf[data->mPassword.Length()] = 0;
|
||||
//printf("SetText [%s] [%s]\n", NS_LossyConvertUCS2toASCII(data->mPassword).get(), buf);
|
||||
//XmTextInsert(mWidget, aStartPos, buf);
|
||||
data->mIgnore = PR_FALSE;
|
||||
}
|
||||
return(aText.Length());
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
void nsTextHelper::RemoveText()
|
||||
{
|
||||
char blank[2];
|
||||
blank[0] = 0;
|
||||
|
||||
//XmTextSetString(mWidget, blank);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
void nsTextHelper::SetPassword(PRBool aIsPassword)
|
||||
{
|
||||
mIsPassword = aIsPassword;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsTextHelper::SetReadOnly(PRBool aReadOnlyFlag)
|
||||
{
|
||||
NS_ASSERTION(mWidget != nsnull,
|
||||
"SetReadOnly - Widget is NULL, Create may not have been called!");
|
||||
PRBool oldSetting = mIsReadOnly;
|
||||
mIsReadOnly = aReadOnlyFlag;
|
||||
//XmTextSetEditable(mWidget, aReadOnlyFlag?False:True);
|
||||
|
||||
return(oldSetting);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
void nsTextHelper::SelectAll()
|
||||
{
|
||||
nsString text;
|
||||
PRUint32 numChars = GetText(text, 0);
|
||||
SetSelection(0, numChars);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
void nsTextHelper::SetSelection(PRUint32 aStartSel, PRUint32 aEndSel)
|
||||
{
|
||||
//XmTextPosition left = (XmTextPosition)aStartSel;
|
||||
//XmTextPosition right = (XmTextPosition)aEndSel;
|
||||
|
||||
//Time time;
|
||||
printf("SetSel %d %d\n", left, right);
|
||||
//XmTextSetSelection(mWidget, left, right, 0);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
void nsTextHelper::GetSelection(PRUint32 *aStartSel, PRUint32 *aEndSel)
|
||||
{
|
||||
//XmTextPosition left;
|
||||
//XmTextPosition right;
|
||||
|
||||
/*
|
||||
if (XmTextGetSelectionPosition(mWidget, &left, &right)) {
|
||||
printf("left %d right %d\n", left, right);
|
||||
*aStartSel = (PRUint32)left;
|
||||
*aEndSel = (PRUint32)right;
|
||||
} else {
|
||||
printf("nsTextHelper::GetSelection Error getting positions\n");
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
void nsTextHelper::SetCaretPosition(PRUint32 aPosition)
|
||||
{
|
||||
//XmTextSetInsertionPosition(mWidget, (XmTextPosition)aPosition);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
PRUint32 nsTextHelper::GetCaretPosition()
|
||||
{
|
||||
//return (PRUint32)XmTextGetInsertionPosition(mWidget);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsTextHelper::AutoErase()
|
||||
{
|
||||
return(PR_TRUE);
|
||||
}
|
||||
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 MPL, 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 MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
#ifndef nsTextHelper_h__
|
||||
#define nsTextHelper_h__
|
||||
|
||||
#error "This file is obsolete: nsTextAreaWidget is WASTE-based / nsTextWidget is a control"
|
||||
|
||||
#include "nsITextWidget.h"
|
||||
#include "nsWindow.h"
|
||||
#include "WASTE.h"
|
||||
|
||||
/**
|
||||
* Base class for nsTextAreaWidget and nsTextWidget
|
||||
*/
|
||||
|
||||
class nsTextHelper : public nsITextWidget
|
||||
{
|
||||
|
||||
public:
|
||||
nsTextHelper();
|
||||
virtual ~nsTextHelper();
|
||||
|
||||
NS_IMETHOD SelectAll();
|
||||
NS_IMETHOD SetMaxTextLength(PRUint32 aChars);
|
||||
NS_IMETHOD GetText(nsString& aTextBuffer, PRUint32 aBufferSize, PRUint32& aActualSize);
|
||||
NS_IMETHOD SetText(const nsString &aText, PRUint32& aActualSize);
|
||||
NS_IMETHOD InsertText(const nsString &aText, PRUint32 aStartPos, PRUint32 aEndPos, PRUint32& aActualSize);
|
||||
NS_IMETHOD RemoveText();
|
||||
NS_IMETHOD SetPassword(PRBool aIsPassword);
|
||||
NS_IMETHOD SetReadOnly(PRBool aNewReadOnlyFlag, PRBool& aOldReadOnlyFlag);
|
||||
NS_IMETHOD SetSelection(PRUint32 aStartSel, PRUint32 aEndSel);
|
||||
NS_IMETHOD GetSelection(PRUint32 *aStartSel, PRUint32 *aEndSel);
|
||||
NS_IMETHOD SetCaretPosition(PRUint32 aPosition);
|
||||
NS_IMETHOD GetCaretPosition(PRUint32& aPosition);
|
||||
|
||||
|
||||
|
||||
virtual PRBool AutoErase();
|
||||
|
||||
protected:
|
||||
|
||||
PRBool mIsPassword;
|
||||
PRBool mIsReadOnly;
|
||||
WEReference mTE_Data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // nsTextHelper_h__
|
|
@ -1,746 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 MPL, 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 MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsTextWidget.h"
|
||||
#include "nsIRenderingContext.h"
|
||||
#include "nsCRT.h"
|
||||
|
||||
#include <ToolUtils.h>
|
||||
#include <Appearance.h>
|
||||
#include <ControlDefinitions.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
using std::auto_ptr;
|
||||
|
||||
NS_IMPL_ADDREF(nsTextWidget)
|
||||
NS_IMPL_RELEASE(nsTextWidget)
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// ¥ NOTE ABOUT MENU HANDLING ¥
|
||||
//
|
||||
// The definitions below, as well as the NS_MENU_SELECTED code in
|
||||
// DispatchEvent() are temporary hacks only. They require the menu
|
||||
// resources to be created under Contructor with the standard
|
||||
// PowerPlant menu IDs. All that will go away because:
|
||||
// - nsTextWidget will be rewritten as an XP widget by the Editor team.
|
||||
// - menu handling will be rewritten by the XPApp team.
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
#include <Scrap.h>
|
||||
|
||||
typedef SInt32 MessageT;
|
||||
typedef PRUint32 Uint32;
|
||||
const MessageT cmd_Cut = 12; // nil
|
||||
const MessageT cmd_Copy = 13; // nil
|
||||
const MessageT cmd_Paste = 14; // nil
|
||||
const MessageT cmd_Clear = 15; // nil
|
||||
const MessageT cmd_SelectAll = 16; // nil
|
||||
|
||||
enum
|
||||
{
|
||||
menu_Apple = 128,
|
||||
menu_File,
|
||||
menu_Edit
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsTextWidget::nsTextWidget() : nsMacControl(), nsITextWidget(), Repeater()
|
||||
{
|
||||
WIDGET_SET_CLASSNAME("nsTextWidget");
|
||||
SetControlType(kControlEditTextProc);
|
||||
mIsPassword = PR_FALSE;
|
||||
mIsReadOnly = PR_FALSE;
|
||||
|
||||
AcceptFocusOnClick(PR_TRUE);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsTextWidget::~nsTextWidget()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_IMETHODIMP nsTextWidget::Create(nsIWidget *aParent,
|
||||
const nsRect &aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
nsIDeviceContext *aContext,
|
||||
nsIAppShell *aAppShell,
|
||||
nsIToolkit *aToolkit,
|
||||
nsWidgetInitData *aInitData)
|
||||
{
|
||||
if (aInitData)
|
||||
{
|
||||
nsTextWidgetInitData* initData = (nsTextWidgetInitData*)aInitData;
|
||||
if (initData->mIsPassword)
|
||||
{
|
||||
SetControlType(kControlEditTextPasswordProc);
|
||||
mIsPassword = PR_TRUE;
|
||||
}
|
||||
else if (mIsReadOnly)
|
||||
{
|
||||
SetControlType(kControlStaticTextProc);
|
||||
mIsReadOnly = PR_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
Inherited::Create(aParent, aRect, aHandleEventFunction,
|
||||
aContext, aAppShell, aToolkit, aInitData);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Destroy
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
// The repeater in this widget needs to use out of band notification
|
||||
// to sever its ties with the nsTimer. If we just rely on the
|
||||
// dtor to do it, it will never get called because the nsTimer holds a ref to
|
||||
// this object.
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsTextWidget::Destroy()
|
||||
{
|
||||
Inherited::Destroy();
|
||||
if (mRepeating) RemoveFromRepeatList();
|
||||
if (mIdling) RemoveFromIdleList();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_INTERFACE_MAP_BEGIN(nsTextWidget)
|
||||
NS_INTERFACE_MAP_ENTRY(nsITextWidget)
|
||||
NS_INTERFACE_MAP_END_INHERITING(Inherited)
|
||||
|
||||
#pragma mark -
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsTextWidget::DispatchMouseEvent(nsMouseEvent &aEvent)
|
||||
{
|
||||
PRBool eventHandled = nsWindow::DispatchMouseEvent(aEvent); // we don't want the 'Inherited' nsMacControl behavior
|
||||
|
||||
EventRecord* theOSEvent;
|
||||
|
||||
if ((! eventHandled) && (mControl != nsnull))
|
||||
{
|
||||
switch (aEvent.message)
|
||||
{
|
||||
case NS_MOUSE_LEFT_DOUBLECLICK:
|
||||
case NS_MOUSE_LEFT_BUTTON_DOWN:
|
||||
Point thePoint;
|
||||
thePoint.h = aEvent.point.x;
|
||||
thePoint.v = aEvent.point.y;
|
||||
|
||||
short theModifiers;
|
||||
theOSEvent = (EventRecord*)aEvent.nativeMsg;
|
||||
if (theOSEvent)
|
||||
{
|
||||
theModifiers = theOSEvent->modifiers;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (aEvent.isShift) theModifiers = shiftKey;
|
||||
if (aEvent.isControl) theModifiers |= controlKey;
|
||||
if (aEvent.isAlt) theModifiers |= optionKey;
|
||||
}
|
||||
StartDraw();
|
||||
::HandleControlClick(mControl, thePoint, theModifiers, nil);
|
||||
EndDraw();
|
||||
eventHandled = PR_TRUE;
|
||||
break;
|
||||
|
||||
case NS_MOUSE_ENTER:
|
||||
SetCursor(eCursor_select);
|
||||
break;
|
||||
|
||||
case NS_MOUSE_EXIT:
|
||||
SetCursor(eCursor_standard);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return (eventHandled);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// DispatchWindowEvent
|
||||
//
|
||||
// Handle the following events: keys, focus, edit menu commands.
|
||||
// The strategy for key events is to use the native OS event
|
||||
// when it exists, otherwise use the Raptor nsKeyEvent.
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsTextWidget::DispatchWindowEvent(nsGUIEvent &aEvent)
|
||||
{
|
||||
// filter cursor keys
|
||||
PRBool passKeyEvent = PR_TRUE;
|
||||
switch (aEvent.message)
|
||||
{
|
||||
case NS_KEY_DOWN:
|
||||
case NS_KEY_UP:
|
||||
{
|
||||
// hack: if Enter is pressed, pass Return
|
||||
nsKeyEvent* keyEvent = (nsKeyEvent*)&aEvent;
|
||||
|
||||
#if 0
|
||||
// this hack is no longer needed, since Enter is being mapped to
|
||||
// VK_RETURN in the event handler
|
||||
if (keyEvent->keyCode == kEnterCharCode)
|
||||
keyEvent->keyCode = NS_VK_RETURN;
|
||||
#endif
|
||||
|
||||
// is this hack really needed?
|
||||
EventRecord* theOSEvent = (EventRecord*)aEvent.nativeMsg;
|
||||
if (theOSEvent && ((theOSEvent->message & charCodeMask) == kEnterCharCode))
|
||||
theOSEvent->message = (theOSEvent->message & ~charCodeMask) + kReturnCharCode;
|
||||
|
||||
switch (keyEvent->keyCode)
|
||||
{
|
||||
// case NS_VK_PAGE_UP:
|
||||
// case NS_VK_PAGE_DOWN:
|
||||
case NS_VK_END:
|
||||
case NS_VK_HOME:
|
||||
case NS_VK_LEFT:
|
||||
case NS_VK_UP:
|
||||
case NS_VK_RIGHT:
|
||||
case NS_VK_DOWN:
|
||||
passKeyEvent = PR_FALSE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// dispatch the message
|
||||
PRBool eventHandled = PR_FALSE;
|
||||
if (passKeyEvent)
|
||||
eventHandled = Inherited::DispatchWindowEvent(aEvent);
|
||||
|
||||
// handle the message here if nobody else processed it already
|
||||
if ((! eventHandled) && (mControl != nsnull))
|
||||
{
|
||||
switch (aEvent.message)
|
||||
{
|
||||
case NS_MENU_SELECTED:
|
||||
{
|
||||
nsMenuEvent* menuEvent = (nsMenuEvent*)&aEvent;
|
||||
long menuID = HiWord(menuEvent->mCommand);
|
||||
long menuItem = LoWord(menuEvent->mCommand);
|
||||
switch (menuID)
|
||||
{
|
||||
case menu_Edit:
|
||||
{
|
||||
switch (menuItem)
|
||||
{
|
||||
// case cmd_Undo:
|
||||
|
||||
case cmd_Cut:
|
||||
case cmd_Copy:
|
||||
{
|
||||
PRUint32 startSel = 0, endSel = 0;
|
||||
GetSelection ( &startSel, &endSel );
|
||||
if ( startSel != endSel ) {
|
||||
const Uint32 selectionLen = endSel - startSel;
|
||||
|
||||
// extract out the selection into a different nsString so
|
||||
// we can keep it unicode as long as possible
|
||||
PRUint32 unused = 0;
|
||||
nsString str, selection;
|
||||
GetText(str, 0, unused );
|
||||
str.Mid(selection, startSel, selectionLen);
|
||||
|
||||
// now |selection| holds the current selection in unicode.
|
||||
// We need to convert it to a c-string for MacOS.
|
||||
auto_ptr<char> cRepOfSelection(new char[selectionLen + 1]);
|
||||
PL_strncpyz(cRepOfSelection.get(),
|
||||
NS_LossyConvertUCS2toASCII(selection).get(),
|
||||
selectionLen + 1);
|
||||
|
||||
// copy it to the scrapMgr
|
||||
::ClearCurrentScrap();
|
||||
ScrapRef scrap;
|
||||
::GetCurrentScrap(&scrap);
|
||||
::PutScrapFlavor(scrap, 'TEXT', 0L /* ??? */, selectionLen, cRepOfSelection.get());
|
||||
// if we're cutting, remove the text from the widget
|
||||
if ( menuItem == cmd_Cut ) {
|
||||
unused = 0;
|
||||
str.Cut ( startSel, selectionLen );
|
||||
SetText ( str, unused );
|
||||
SetSelection(startSel, startSel);
|
||||
}
|
||||
} // if there is a selection
|
||||
eventHandled = PR_TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
case cmd_Paste:
|
||||
{
|
||||
long scrapOffset;
|
||||
Handle scrapH = ::NewHandle(0);
|
||||
ScrapRef scrap;
|
||||
OSStatus err;
|
||||
err = ::GetCurrentScrap(&scrap);
|
||||
if (err != noErr) return NS_ERROR_FAILURE;
|
||||
err = ::GetScrapFlavorSize(scrap, 'TEXT', &scrapOffset);
|
||||
// XXX uhh.. i don't think this is right..
|
||||
long scrapLen = scrapOffset;
|
||||
if ( scrapOffset > 0 )
|
||||
{
|
||||
::HLock(scrapH);
|
||||
|
||||
// truncate to the first line
|
||||
char* cr = strchr((char*)*scrapH, '\r');
|
||||
if (cr != nil)
|
||||
scrapLen = cr - *scrapH;
|
||||
|
||||
// paste text
|
||||
nsString str;
|
||||
str.AssignWithConversion((char*)*scrapH, scrapLen);
|
||||
PRUint32 startSel, endSel;
|
||||
GetSelection(&startSel, &endSel);
|
||||
PRUint32 outSize;
|
||||
InsertText(str, startSel, endSel, outSize);
|
||||
startSel += str.Length();
|
||||
SetSelection(startSel, startSel);
|
||||
|
||||
::HUnlock(scrapH);
|
||||
}
|
||||
::DisposeHandle(scrapH);
|
||||
eventHandled = PR_TRUE;
|
||||
break;
|
||||
}
|
||||
case cmd_Clear:
|
||||
{
|
||||
nsString str;
|
||||
PRUint32 outSize;
|
||||
SetText(str, outSize);
|
||||
eventHandled = PR_TRUE;
|
||||
break;
|
||||
}
|
||||
case cmd_SelectAll:
|
||||
{
|
||||
SelectAll();
|
||||
eventHandled = PR_TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
} // case NS_MENU_SELECTED
|
||||
|
||||
case NS_GOTFOCUS:
|
||||
{
|
||||
StartDraw();
|
||||
ActivateControl(mControl);
|
||||
OSErr err = SetKeyboardFocus(mWindowPtr, mControl, kControlFocusNextPart);
|
||||
if (err == noErr ) {
|
||||
nsRect rect = mBounds;
|
||||
rect.x = rect.y = 0;
|
||||
Rect macRect;
|
||||
nsRectToMacRect(rect, macRect);
|
||||
::InsetRect(&macRect, 2, 2);
|
||||
::DrawThemeFocusRect(&macRect, true);
|
||||
}
|
||||
EndDraw();
|
||||
StartIdling();
|
||||
break;
|
||||
}
|
||||
|
||||
case NS_LOSTFOCUS:
|
||||
{
|
||||
StopIdling();
|
||||
StartDraw();
|
||||
OSErr err = SetKeyboardFocus(mWindowPtr, mControl, kControlFocusNoPart);
|
||||
if ( err == noErr ) {
|
||||
nsRect rect = mBounds;
|
||||
rect.x = rect.y = 0;
|
||||
Rect macRect;
|
||||
nsRectToMacRect(rect, macRect);
|
||||
::InsetRect(&macRect, 2, 2);
|
||||
::DrawThemeFocusRect(&macRect, false);
|
||||
}
|
||||
DeactivateControl(mControl);
|
||||
EndDraw();
|
||||
break;
|
||||
}
|
||||
|
||||
case NS_KEY_DOWN:
|
||||
{
|
||||
char theChar;
|
||||
unsigned short theKey;
|
||||
unsigned short theModifiers;
|
||||
EventRecord* theOSEvent = (EventRecord*)aEvent.nativeMsg;
|
||||
nsKeyEvent* keyEvent = (nsKeyEvent*)&aEvent;
|
||||
if (theOSEvent)
|
||||
{
|
||||
theChar = (theOSEvent->message & charCodeMask);
|
||||
theKey = (theOSEvent->message & keyCodeMask) >> 8;
|
||||
theModifiers = theOSEvent->modifiers;
|
||||
}
|
||||
else
|
||||
{
|
||||
theChar = keyEvent->keyCode;
|
||||
theKey = 0; // what else?
|
||||
if (keyEvent->isShift) theModifiers = shiftKey;
|
||||
if (keyEvent->isControl) theModifiers |= controlKey;
|
||||
if (keyEvent->isAlt) theModifiers |= optionKey;
|
||||
|
||||
}
|
||||
if (theChar != NS_VK_RETURN) // don't pass Return: nsTextWidget is a single line editor
|
||||
{
|
||||
StartDraw();
|
||||
::HandleControlKey(mControl, theKey, theChar, theModifiers);
|
||||
EndDraw();
|
||||
eventHandled = PR_TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return (eventHandled);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsTextWidget::OnPaint(nsPaintEvent &aEvent)
|
||||
{
|
||||
Inherited::OnPaint(aEvent);
|
||||
|
||||
/* draw a box.*/
|
||||
if (mVisible && mIsReadOnly)
|
||||
{
|
||||
nsRect ctlRect = mBounds;
|
||||
ctlRect.x = ctlRect.y = 0;
|
||||
//ctlRect.Deflate(1, 1);
|
||||
mTempRenderingContext->SetColor(NS_RGB(0, 0, 0));
|
||||
mTempRenderingContext->DrawRect(ctlRect);
|
||||
}
|
||||
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::SetPassword(PRBool aIsPassword)
|
||||
{
|
||||
nsresult theResult = NS_OK;
|
||||
|
||||
// note: it is assumed that we can't have a read-only password field
|
||||
if (aIsPassword != mIsPassword)
|
||||
{
|
||||
mIsPassword = aIsPassword;
|
||||
short newControlType = (aIsPassword ? kControlEditTextPasswordProc : kControlEditTextProc);
|
||||
SetControlType(newControlType);
|
||||
|
||||
theResult = CreateOrReplaceMacControl(newControlType);
|
||||
}
|
||||
return theResult;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::SetReadOnly(PRBool aReadOnlyFlag, PRBool& aOldFlag)
|
||||
{
|
||||
nsresult theResult = NS_OK;
|
||||
|
||||
// note: it is assumed that we can't have a read-only password field
|
||||
aOldFlag = mIsReadOnly;
|
||||
if (aReadOnlyFlag != mIsReadOnly)
|
||||
{
|
||||
mIsReadOnly = aReadOnlyFlag;
|
||||
short newControlType = (aReadOnlyFlag ? kControlStaticTextProc : kControlEditTextProc);
|
||||
SetControlType(newControlType);
|
||||
|
||||
theResult = CreateOrReplaceMacControl(newControlType);
|
||||
}
|
||||
return theResult;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::SetMaxTextLength(PRUint32 aChars)
|
||||
{
|
||||
//¥TODO: install a kControlEditTextKeyFilterTag proc
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::GetText(nsString& aTextBuffer, PRUint32 /*aBufferSize*/, PRUint32& aSize)
|
||||
{
|
||||
if (!mControl)
|
||||
return NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
ResType textTag = (mIsPassword ? kControlEditTextPasswordTag : kControlEditTextTextTag);
|
||||
|
||||
Size textSize;
|
||||
::GetControlDataSize(mControl, kControlNoPart, textTag, &textSize);
|
||||
|
||||
char* str = new char[textSize];
|
||||
if (str)
|
||||
{
|
||||
::GetControlData(mControl, kControlNoPart, textTag, textSize, (Ptr)str, &textSize);
|
||||
aTextBuffer.SetLength(0);
|
||||
aTextBuffer.AppendWithConversion(str, textSize);
|
||||
aSize = textSize;
|
||||
delete [] str;
|
||||
}
|
||||
else
|
||||
{
|
||||
aSize = 0;
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Assumes aSize is |out| only and does not yet have a value.
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::SetText(const nsString& aText, PRUint32& outSize)
|
||||
{
|
||||
outSize = aText.Length();
|
||||
|
||||
if (!mControl)
|
||||
return NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
ResType textTag = (mIsPassword ? kControlEditTextPasswordTag : kControlEditTextTextTag);
|
||||
::SetControlData(mControl, kControlNoPart, textTag, outSize,
|
||||
(Ptr)NS_LossyConvertUCS2toASCII(aText).get());
|
||||
Invalidate(PR_FALSE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::InsertText(const nsString &aText, PRUint32 aStartPos, PRUint32 aEndPos, PRUint32& aSize)
|
||||
{
|
||||
if (!mControl)
|
||||
return NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
Size textSize;
|
||||
::GetControlDataSize(mControl, kControlNoPart, kControlEditTextTextTag, &textSize);
|
||||
|
||||
nsString textStr;
|
||||
PRUint32 outTextSize;
|
||||
nsresult retVal = GetText(textStr, textSize, outTextSize);
|
||||
if (retVal != NS_OK)
|
||||
return retVal;
|
||||
|
||||
if (((PRInt32)aStartPos == -1L) && ((PRInt32)aEndPos == -1L))
|
||||
{
|
||||
textStr.Append(aText);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((PRInt32)aStartPos < 0)
|
||||
aStartPos = 0;
|
||||
if ((PRInt32)aEndPos < 0)
|
||||
aStartPos = 0;
|
||||
if (aEndPos < aStartPos)
|
||||
aEndPos = aStartPos;
|
||||
textStr.Cut(aStartPos, aEndPos - aStartPos);
|
||||
textStr.Insert(aText, aStartPos);
|
||||
}
|
||||
|
||||
aSize = textStr.Length();
|
||||
return (SetText(textStr, aSize));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::RemoveText()
|
||||
{
|
||||
if (!mControl)
|
||||
return NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
StartDraw();
|
||||
::SetControlData(mControl, kControlNoPart, kControlEditTextTextTag, 0, (Ptr)"");
|
||||
EndDraw();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::SelectAll()
|
||||
{
|
||||
if (!mControl)
|
||||
return NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
Size textSize;
|
||||
::GetControlDataSize(mControl, kControlNoPart, kControlEditTextTextTag, &textSize);
|
||||
|
||||
return (SetSelection(0, textSize));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::SetSelection(PRUint32 aStartSel, PRUint32 aEndSel)
|
||||
{
|
||||
if (!mControl)
|
||||
return NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
ControlEditTextSelectionRec textSelectionRec;
|
||||
textSelectionRec.selStart = aStartSel;
|
||||
textSelectionRec.selEnd = aEndSel;
|
||||
|
||||
StartDraw();
|
||||
::SetControlData(mControl, kControlNoPart, kControlEditTextSelectionTag,
|
||||
sizeof(textSelectionRec), (Ptr)&textSelectionRec);
|
||||
EndDraw();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::GetSelection(PRUint32 *aStartSel, PRUint32 *aEndSel)
|
||||
{
|
||||
if (!mControl)
|
||||
return NS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
ControlEditTextSelectionRec textSelectionRec;
|
||||
|
||||
Size dataSize = sizeof(textSelectionRec);
|
||||
::GetControlData(mControl, kControlNoPart, kControlEditTextSelectionTag,
|
||||
dataSize, (Ptr)&textSelectionRec, &dataSize);
|
||||
|
||||
*aStartSel = textSelectionRec.selStart;
|
||||
*aEndSel = textSelectionRec.selEnd;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::SetCaretPosition(PRUint32 aPosition)
|
||||
{
|
||||
return(SetSelection(aPosition, aPosition));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsTextWidget::GetCaretPosition(PRUint32& aPos)
|
||||
{
|
||||
PRUint32 startSel, endSel;
|
||||
nsresult retVal = GetSelection(&startSel, &endSel);
|
||||
aPos = startSel;
|
||||
return retVal;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
void nsTextWidget::RepeatAction(const EventRecord& inMacEvent)
|
||||
{
|
||||
if (mControl)
|
||||
{
|
||||
StartDraw();
|
||||
// This should really live in the window but
|
||||
// we have to set the graphic environment
|
||||
IdleControls(mWindowPtr);
|
||||
EndDraw();
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
void nsTextWidget::GetRectForMacControl(nsRect &outRect)
|
||||
{
|
||||
outRect = mBounds;
|
||||
outRect.x = outRect.y = 0;
|
||||
// inset to make space for border
|
||||
if (mIsReadOnly)
|
||||
outRect.Deflate(1, 1);
|
||||
else
|
||||
outRect.Deflate(4, 4);
|
||||
}
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 MPL, 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 MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef nsTextWidget_h__
|
||||
#define nsTextWidget_h__
|
||||
|
||||
#include "nsMacControl.h"
|
||||
#include "nsITextWidget.h"
|
||||
#include "nsRepeater.h"
|
||||
|
||||
class nsTextWidget : public nsMacControl, public nsITextWidget, public Repeater
|
||||
{
|
||||
private:
|
||||
typedef nsMacControl Inherited;
|
||||
|
||||
public:
|
||||
nsTextWidget();
|
||||
virtual ~nsTextWidget();
|
||||
|
||||
// nsISupports
|
||||
NS_IMETHOD_(nsrefcnt) AddRef();
|
||||
NS_IMETHOD_(nsrefcnt) Release();
|
||||
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
|
||||
|
||||
NS_IMETHOD Create(nsIWidget *aParent,
|
||||
const nsRect &aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
nsIDeviceContext *aContext = nsnull,
|
||||
nsIAppShell *aAppShell = nsnull,
|
||||
nsIToolkit *aToolkit = nsnull,
|
||||
nsWidgetInitData *aInitData = nsnull);
|
||||
NS_IMETHOD Destroy ( ) ;
|
||||
|
||||
// nsWindow Interface
|
||||
virtual PRBool DispatchMouseEvent(nsMouseEvent &aEvent);
|
||||
virtual PRBool DispatchWindowEvent(nsGUIEvent& aEvent);
|
||||
virtual PRBool OnPaint(nsPaintEvent &aEvent);
|
||||
|
||||
// nsITextWidget interface
|
||||
NS_IMETHOD SetPassword(PRBool aIsPassword);
|
||||
NS_IMETHOD SetReadOnly(PRBool aNewReadOnlyFlag, PRBool& aOldReadOnlyFlag);
|
||||
|
||||
NS_IMETHOD SetMaxTextLength(PRUint32 aChars);
|
||||
NS_IMETHOD GetText(nsString& aTextBuffer, PRUint32 aBufferSize, PRUint32& aActualSize);
|
||||
NS_IMETHOD SetText(const nsString &aText, PRUint32& aActualSize);
|
||||
NS_IMETHOD InsertText(const nsString &aText, PRUint32 aStartPos, PRUint32 aEndPos, PRUint32& aActualSize);
|
||||
NS_IMETHOD RemoveText();
|
||||
|
||||
NS_IMETHOD SelectAll();
|
||||
NS_IMETHOD SetSelection(PRUint32 aStartSel, PRUint32 aEndSel);
|
||||
NS_IMETHOD GetSelection(PRUint32 *aStartSel, PRUint32 *aEndSel);
|
||||
NS_IMETHOD SetCaretPosition(PRUint32 aPosition);
|
||||
NS_IMETHOD GetCaretPosition(PRUint32& aPosition);
|
||||
|
||||
// Repeater interface
|
||||
virtual void RepeatAction(const EventRecord& inMacEvent);
|
||||
|
||||
protected:
|
||||
|
||||
virtual void GetRectForMacControl(nsRect &outRect);
|
||||
|
||||
PRBool mIsPassword;
|
||||
PRBool mIsReadOnly;
|
||||
};
|
||||
|
||||
#endif // nsTextWidget_h__
|
|
@ -38,28 +38,21 @@
|
|||
|
||||
#include "nsIFactory.h"
|
||||
#include "nsISupports.h"
|
||||
#include "nsIButton.h"
|
||||
#include "nsITextWidget.h"
|
||||
#include "nsIComponentManager.h"
|
||||
#include "nsIGenericFactory.h"
|
||||
|
||||
#include "nsWidgetsCID.h"
|
||||
|
||||
#include "nsToolkit.h"
|
||||
#include "nsWindow.h"
|
||||
#include "nsMacWindow.h"
|
||||
#include "nsAppShell.h"
|
||||
#include "nsButton.h"
|
||||
#include "nsTextWidget.h"
|
||||
#include "nsLabel.h"
|
||||
#include "nsFilePicker.h"
|
||||
#include "nsNativeScrollbar.h"
|
||||
|
||||
|
||||
#include "nsMenuBarX.h"
|
||||
#include "nsMenuX.h"
|
||||
#include "nsMenuItemX.h"
|
||||
#define nsMenuBar nsMenuBarX
|
||||
#define nsMenu nsMenuX
|
||||
#define nsMenuItem nsMenuItemX
|
||||
|
||||
|
||||
#include "nsClipboard.h"
|
||||
#include "nsClipboardHelper.h"
|
||||
|
@ -67,40 +60,41 @@
|
|||
#include "nsHTMLFormatConverter.h"
|
||||
#include "nsDragService.h"
|
||||
#include "nsDragHelperService.h"
|
||||
|
||||
#if USE_NATIVE_VERSION
|
||||
# include "nsCheckButton.h"
|
||||
#endif
|
||||
|
||||
#include "nsLookAndFeel.h"
|
||||
|
||||
#include "nsIComponentManager.h"
|
||||
|
||||
#include "nsSound.h"
|
||||
|
||||
#include "nsBidiKeyboard.h"
|
||||
|
||||
#include "nsIGenericFactory.h"
|
||||
#if USE_NATIVE_VERSION
|
||||
|
||||
#include "nsIButton.h"
|
||||
#include "nsITextWidget.h"
|
||||
|
||||
#include "nsButton.h"
|
||||
#include "nsCheckButton.h"
|
||||
#include "nsTextWidget.h"
|
||||
#include "nsLabel.h"
|
||||
|
||||
#endif
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMacWindow)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(ChildWindow)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsButton)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFilePicker)
|
||||
#if USE_NATIVE_VERSION
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsButton)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsCheckButton)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsComboBox)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsRadioButton)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsListBox)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextAreaWidget)
|
||||
#endif
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsLabel)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextWidget) // used by Viewer?
|
||||
#endif
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAppShell)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsToolkit)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsLookAndFeel)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsLabel)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenuBar)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenu)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenuItem)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenuBarX)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenuX)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMenuItemX)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSound)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard)
|
||||
|
@ -111,8 +105,22 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragHelperService)
|
|||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsNativeScrollbar)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsBidiKeyboard)
|
||||
|
||||
static const nsModuleComponentInfo components[] =
|
||||
static const nsModuleComponentInfo gComponents[] =
|
||||
{
|
||||
#if USE_NATIVE_VERSION
|
||||
{ "Text Field",
|
||||
NS_TEXTFIELD_CID,
|
||||
"@mozilla.org/widgets/textwidget/mac;1",
|
||||
nsTextWidgetConstructor },
|
||||
{ "Label",
|
||||
NS_LABEL_CID,
|
||||
"@mozilla.org/widget/label/mac;1",
|
||||
nsLabelConstructor },
|
||||
{ "Button",
|
||||
NS_BUTTON_CID,
|
||||
"@mozilla.org/widgets/button/mac;1",
|
||||
nsButtonConstructor },
|
||||
#endif
|
||||
{ "nsWindow",
|
||||
NS_WINDOW_CID,
|
||||
"@mozilla.org/widgets/window/mac;1",
|
||||
|
@ -125,18 +133,10 @@ static const nsModuleComponentInfo components[] =
|
|||
NS_CHILD_CID,
|
||||
"@mozilla.org/widgets/child_window/mac;1",
|
||||
ChildWindowConstructor },
|
||||
{ "Button",
|
||||
NS_BUTTON_CID,
|
||||
"@mozilla.org/widgets/button/mac;1",
|
||||
nsButtonConstructor },
|
||||
{ "File Picker",
|
||||
NS_FILEPICKER_CID,
|
||||
"@mozilla.org/filepicker;1",
|
||||
nsFilePickerConstructor },
|
||||
{ "Text Field",
|
||||
NS_TEXTFIELD_CID,
|
||||
"@mozilla.org/widgets/textwidget/mac;1",
|
||||
nsTextWidgetConstructor },
|
||||
{ "AppShell",
|
||||
NS_APPSHELL_CID,
|
||||
"@mozilla.org/widget/appshell/mac;1",
|
||||
|
@ -149,22 +149,18 @@ static const nsModuleComponentInfo components[] =
|
|||
NS_LOOKANDFEEL_CID,
|
||||
"@mozilla.org/widget/lookandfeel;1",
|
||||
nsLookAndFeelConstructor },
|
||||
{ "Label",
|
||||
NS_LABEL_CID,
|
||||
"@mozilla.org/widget/label/mac;1",
|
||||
nsLabelConstructor },
|
||||
{ "Menubar",
|
||||
NS_MENUBAR_CID,
|
||||
"@mozilla.org/widget/menubar/mac;1",
|
||||
nsMenuBarConstructor },
|
||||
nsMenuBarXConstructor },
|
||||
{ "Menu",
|
||||
NS_MENU_CID,
|
||||
"@mozilla.org/widget/menu/mac;1",
|
||||
nsMenuConstructor },
|
||||
nsMenuXConstructor },
|
||||
{ "MenuItem",
|
||||
NS_MENUITEM_CID,
|
||||
"@mozilla.org/widget/menuitem/mac;1",
|
||||
nsMenuItemConstructor },
|
||||
nsMenuItemXConstructor },
|
||||
{ "Sound",
|
||||
NS_SOUND_CID,
|
||||
"@mozilla.org/sound;1",
|
||||
|
@ -203,5 +199,5 @@ static const nsModuleComponentInfo components[] =
|
|||
nsBidiKeyboardConstructor },
|
||||
};
|
||||
|
||||
NS_IMPL_NSGETMODULE(nsWidgetMacModule, components)
|
||||
NS_IMPL_NSGETMODULE(nsWidgetMacModule, gComponents)
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче