diff --git a/dom/plugins/base/nsPluginInstanceOwner.cpp b/dom/plugins/base/nsPluginInstanceOwner.cpp index 219423a7f32b..f0959e226589 100644 --- a/dom/plugins/base/nsPluginInstanceOwner.cpp +++ b/dom/plugins/base/nsPluginInstanceOwner.cpp @@ -72,10 +72,6 @@ static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID); # include "mozilla/widget/WinMessages.h" #endif // #ifdef XP_WIN -#ifdef XP_MACOSX -# include "ComplexTextInputPanel.h" -#endif - #ifdef MOZ_WIDGET_GTK # include # include diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index d41297306b10..b8de171d0ec0 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -3318,8 +3318,6 @@ pref("font.size.monospace.x-math", 13); // See bug 404131, topmost element wins to Dashboard on MacOSX. pref("ui.panel.default_level_parent", false); - pref("ui.plugin.cancel_composition_at_input_source_changed", false); - // Macbook touchpad two finger pixel scrolling pref("mousewheel.enable_pixel_scrolling", true); diff --git a/widget/cocoa/ComplexTextInputPanel.h b/widget/cocoa/ComplexTextInputPanel.h deleted file mode 100644 index 2909a1c7997d..000000000000 --- a/widget/cocoa/ComplexTextInputPanel.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2009 Apple Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Modified by Josh Aas of Mozilla Corporation. - */ - -#ifndef ComplexTextInputPanel_h_ -#define ComplexTextInputPanel_h_ - -#include "nsString.h" -#include "npapi.h" - -class ComplexTextInputPanel { - public: - static ComplexTextInputPanel* GetSharedComplexTextInputPanel(); - virtual void PlacePanel( - int32_t x, - int32_t y) = 0; // Bottom left coordinate of plugin in screen coords - virtual void InterpretKeyEvent(void* aEvent, nsAString& aOutText) = 0; - virtual bool IsInComposition() = 0; - virtual void* GetInputContext() = 0; - virtual void CancelComposition() = 0; - - protected: - virtual ~ComplexTextInputPanel(){}; -}; - -#endif // ComplexTextInputPanel_h_ diff --git a/widget/cocoa/ComplexTextInputPanel.mm b/widget/cocoa/ComplexTextInputPanel.mm deleted file mode 100644 index 95b70e627596..000000000000 --- a/widget/cocoa/ComplexTextInputPanel.mm +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright (C) 2009 Apple Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Modified by Josh Aas of Mozilla Corporation. - */ - -#import "ComplexTextInputPanel.h" - -#import - -#include -#include "mozilla/Preferences.h" -#include "nsChildView.h" - -using namespace mozilla; - -extern "C" OSStatus TSMProcessRawKeyEvent(EventRef anEvent); - -#define kInputWindowHeight 20 - -@interface ComplexTextInputPanelImpl : NSPanel { - NSTextView* mInputTextView; -} - -+ (ComplexTextInputPanelImpl*)sharedComplexTextInputPanelImpl; - -- (NSTextInputContext*)inputContext; -- (void)interpretKeyEvent:(NSEvent*)event string:(NSString**)string; -- (void)cancelComposition; -- (BOOL)inComposition; - -// This places the text input panel fully onscreen and below the lower left -// corner of the focused plugin. -- (void)adjustTo:(NSPoint)point; - -@end - -@implementation ComplexTextInputPanelImpl - -+ (ComplexTextInputPanelImpl*)sharedComplexTextInputPanelImpl { - static ComplexTextInputPanelImpl* sComplexTextInputPanelImpl; - if (!sComplexTextInputPanelImpl) - sComplexTextInputPanelImpl = [[ComplexTextInputPanelImpl alloc] init]; - return sComplexTextInputPanelImpl; -} - -- (id)init { - // In the original Apple code the style mask is given by a function which is not open source. - // What could possibly be worth hiding in that function, I do not know. - // Courtesy of gdb: stylemask: 011000011111, 0x61f - self = [super initWithContentRect:NSZeroRect - styleMask:0x61f - backing:NSBackingStoreBuffered - defer:YES]; - if (!self) return nil; - - // Set the frame size. - NSRect visibleFrame = [[NSScreen mainScreen] visibleFrame]; - NSRect frame = NSMakeRect(visibleFrame.origin.x, visibleFrame.origin.y, visibleFrame.size.width, - kInputWindowHeight); - - [self setFrame:frame display:NO]; - - mInputTextView = [[NSTextView alloc] initWithFrame:[self.contentView frame]]; - mInputTextView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable | NSViewMaxXMargin | - NSViewMinXMargin | NSViewMaxYMargin | NSViewMinYMargin; - - NSScrollView* scrollView = [[NSScrollView alloc] initWithFrame:[self.contentView frame]]; - scrollView.documentView = mInputTextView; - self.contentView = scrollView; - [scrollView release]; - - [self setFloatingPanel:YES]; - - [[NSNotificationCenter defaultCenter] - addObserver:self - selector:@selector(keyboardInputSourceChanged:) - name:NSTextInputContextKeyboardSelectionDidChangeNotification - object:nil]; - - return self; -} - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - - [mInputTextView release]; - - [super dealloc]; -} - -- (void)keyboardInputSourceChanged:(NSNotification*)notification { - static int8_t sDoCancel = -1; - if (!sDoCancel || ![self inComposition]) { - return; - } - if (sDoCancel < 0) { - bool cancelComposition = false; - static const char* kPrefName = "ui.plugin.cancel_composition_at_input_source_changed"; - nsresult rv = Preferences::GetBool(kPrefName, &cancelComposition); - NS_ENSURE_SUCCESS(rv, ); - sDoCancel = cancelComposition ? 1 : 0; - } - if (sDoCancel) { - [self cancelComposition]; - } -} - -- (void)interpretKeyEvent:(NSEvent*)event string:(NSString**)string { - *string = nil; - - if (![[mInputTextView inputContext] handleEvent:event]) { - return; - } - - if ([mInputTextView hasMarkedText]) { - // Don't show the input method window for dead keys - if ([[event characters] length] > 0) { - [self orderFront:nil]; - } - return; - } else { - [self orderOut:nil]; - - NSString* text = [[mInputTextView textStorage] string]; - if ([text length] > 0) { - *string = [[text copy] autorelease]; - } - } - - [mInputTextView setString:@""]; -} - -- (NSTextInputContext*)inputContext { - return [mInputTextView inputContext]; -} - -- (void)cancelComposition { - [mInputTextView setString:@""]; - [self orderOut:nil]; -} - -- (BOOL)inComposition { - return [mInputTextView hasMarkedText]; -} - -- (void)adjustTo:(NSPoint)point { - NSRect selfRect = [self frame]; - NSRect rect = NSMakeRect(point.x, point.y - selfRect.size.height, 500, selfRect.size.height); - - // Adjust to screen. - NSRect screenRect = [[NSScreen mainScreen] visibleFrame]; - if (rect.origin.x < screenRect.origin.x) { - rect.origin.x = screenRect.origin.x; - } - if (rect.origin.y < screenRect.origin.y) { - rect.origin.y = screenRect.origin.y; - } - CGFloat xMostOfScreen = screenRect.origin.x + screenRect.size.width; - CGFloat yMostOfScreen = screenRect.origin.y + screenRect.size.height; - CGFloat xMost = rect.origin.x + rect.size.width; - CGFloat yMost = rect.origin.y + rect.size.height; - if (xMostOfScreen < xMost) { - rect.origin.x -= xMost - xMostOfScreen; - } - if (yMostOfScreen < yMost) { - rect.origin.y -= yMost - yMostOfScreen; - } - - [self setFrame:rect display:[self isVisible]]; -} - -@end - -class ComplexTextInputPanelPrivate : public ComplexTextInputPanel { - public: - ComplexTextInputPanelPrivate(); - - virtual void InterpretKeyEvent(void* aEvent, nsAString& aOutText); - virtual bool IsInComposition(); - virtual void PlacePanel(int32_t x, int32_t y); - virtual void* GetInputContext() { return [mPanel inputContext]; } - virtual void CancelComposition() { [mPanel cancelComposition]; } - - private: - ~ComplexTextInputPanelPrivate(); - ComplexTextInputPanelImpl* mPanel; -}; - -ComplexTextInputPanelPrivate::ComplexTextInputPanelPrivate() { - mPanel = [[ComplexTextInputPanelImpl alloc] init]; -} - -ComplexTextInputPanelPrivate::~ComplexTextInputPanelPrivate() { [mPanel release]; } - -ComplexTextInputPanel* ComplexTextInputPanel::GetSharedComplexTextInputPanel() { - static ComplexTextInputPanelPrivate* sComplexTextInputPanelPrivate; - if (!sComplexTextInputPanelPrivate) { - sComplexTextInputPanelPrivate = new ComplexTextInputPanelPrivate(); - } - return sComplexTextInputPanelPrivate; -} - -void ComplexTextInputPanelPrivate::InterpretKeyEvent(void* aEvent, nsAString& aOutText) { - NSString* textString = nil; - [mPanel interpretKeyEvent:(NSEvent*)aEvent string:&textString]; - - if (textString) { - nsCocoaUtils::GetStringForNSString(textString, aOutText); - } -} - -bool ComplexTextInputPanelPrivate::IsInComposition() { return !![mPanel inComposition]; } - -void ComplexTextInputPanelPrivate::PlacePanel(int32_t x, int32_t y) { - [mPanel adjustTo:NSMakePoint(x, y)]; -} diff --git a/widget/cocoa/GfxInfo.mm b/widget/cocoa/GfxInfo.mm index 2dfc259893b6..5d2610668754 100644 --- a/widget/cocoa/GfxInfo.mm +++ b/widget/cocoa/GfxInfo.mm @@ -20,6 +20,8 @@ #import #import +#include "jsapi.h" + #define NS_CRASHREPORTER_CONTRACTID "@mozilla.org/toolkit/crash-reporter;1" using namespace mozilla; diff --git a/widget/cocoa/TextInputHandler.mm b/widget/cocoa/TextInputHandler.mm index 04e4b1f69ca2..46eda0ab9579 100644 --- a/widget/cocoa/TextInputHandler.mm +++ b/widget/cocoa/TextInputHandler.mm @@ -25,7 +25,6 @@ #include "nsCocoaUtils.h" #include "WidgetUtils.h" #include "nsPrintfCString.h" -#include "ComplexTextInputPanel.h" using namespace mozilla; using namespace mozilla::widget; @@ -1751,30 +1750,6 @@ bool TextInputHandler::HandleKeyDownEvent(NSEvent* aNativeEvent, uint32_t aUniqu KeyEventState* currentKeyEvent = PushKeyEvent(aNativeEvent, aUniqueId); AutoKeyEventStateCleaner remover(this); - ComplexTextInputPanel* ctiPanel = ComplexTextInputPanel::GetSharedComplexTextInputPanel(); - if (ctiPanel && ctiPanel->IsInComposition()) { - nsAutoString committed; - ctiPanel->InterpretKeyEvent(aNativeEvent, committed); - if (!committed.IsEmpty()) { - nsresult rv = mDispatcher->BeginNativeInputTransaction(); - if (NS_WARN_IF(NS_FAILED(rv))) { - MOZ_LOG(gLog, LogLevel::Error, - ("%p IMEInputHandler::HandleKeyDownEvent, " - "FAILED, due to BeginNativeInputTransaction() failure " - "at dispatching keydown for ComplexTextInputPanel", - this)); - return false; - } - - WidgetKeyboardEvent imeEvent(true, eKeyDown, widget); - currentKeyEvent->InitKeyEvent(this, imeEvent, false); - imeEvent.mPluginTextEventString.Assign(committed); - nsEventStatus status = nsEventStatus_eIgnore; - mDispatcher->DispatchKeyboardEvent(eKeyDown, imeEvent, status, currentKeyEvent); - } - return true; - } - RefPtr kungFuDeathGrip(this); // When we're already in a composition, we need always to mark the eKeyDown diff --git a/widget/cocoa/moz.build b/widget/cocoa/moz.build index 96de8a1bcbf3..11f6500a66fd 100644 --- a/widget/cocoa/moz.build +++ b/widget/cocoa/moz.build @@ -31,7 +31,6 @@ EXPORTS += [ ] UNIFIED_SOURCES += [ - "ComplexTextInputPanel.mm", "GfxInfo.mm", "IconLoaderHelperCocoa.mm", "NativeKeyBindings.mm", diff --git a/widget/cocoa/nsPrintSettingsServiceX.mm b/widget/cocoa/nsPrintSettingsServiceX.mm index 6bc1240bb2fb..a5e8ade65d28 100644 --- a/widget/cocoa/nsPrintSettingsServiceX.mm +++ b/widget/cocoa/nsPrintSettingsServiceX.mm @@ -5,6 +5,8 @@ #include "nsPrintSettingsServiceX.h" +#include "mozilla/Debug.h" +#include "mozilla/Unused.h" #include "nsCOMPtr.h" #include "nsQueryObject.h" #include "nsPrintSettingsX.h" @@ -51,7 +53,7 @@ nsPrintSettingsServiceX::DeserializeToPrintSettings(const PrintData& data, nsresult nsPrintSettingsServiceX::ReadPrefs(nsIPrintSettings* aPS, const nsAString& aPrinterName, uint32_t aFlags) { - DebugOnly rv = nsPrintSettingsService::ReadPrefs(aPS, aPrinterName, aFlags); + mozilla::DebugOnly rv = nsPrintSettingsService::ReadPrefs(aPS, aPrinterName, aFlags); NS_ASSERTION(NS_SUCCEEDED(rv), "nsPrintSettingsService::ReadPrefs() failed"); RefPtr printSettingsX(do_QueryObject(aPS)); @@ -61,7 +63,7 @@ nsresult nsPrintSettingsServiceX::ReadPrefs(nsIPrintSettings* aPS, const nsAStri // ReadPageFormatFromPrefs may fail (e.g. prefs are missing/broken) but we can // safely ignore that and just leave existing/default values in the settings. - Unused << printSettingsX->ReadPageFormatFromPrefs(); + mozilla::Unused << printSettingsX->ReadPageFormatFromPrefs(); return NS_OK; } diff --git a/widget/nsPrinterListCUPS.cpp b/widget/nsPrinterListCUPS.cpp index 0cb9cee62883..960fb32c4184 100644 --- a/widget/nsPrinterListCUPS.cpp +++ b/widget/nsPrinterListCUPS.cpp @@ -5,6 +5,7 @@ #include "nsPrinterListCUPS.h" #include "mozilla/IntegerRange.h" +#include "mozilla/Maybe.h" #include "nsCUPSShim.h" #include "nsPrinterCUPS.h" #include "nsString.h" @@ -110,9 +111,9 @@ RefPtr nsPrinterListCUPS::CreatePrinter(PrinterInfo aInfo) const { static_cast(aInfo.mCupsHandle)); } -Maybe nsPrinterListCUPS::PrinterByName( +mozilla::Maybe nsPrinterListCUPS::PrinterByName( nsString aPrinterName) const { - Maybe rv; + mozilla::Maybe rv; if (!CupsShim().InitOkay()) { return rv; } @@ -160,9 +161,9 @@ Maybe nsPrinterListCUPS::PrinterByName( return rv; } -Maybe nsPrinterListCUPS::PrinterBySystemName( +mozilla::Maybe nsPrinterListCUPS::PrinterBySystemName( nsString aPrinterName) const { - Maybe rv; + mozilla::Maybe rv; if (!CupsShim().InitOkay()) { return rv; } diff --git a/widget/nsPrinterListCUPS.h b/widget/nsPrinterListCUPS.h index bbc332cd6e11..77fff571c610 100644 --- a/widget/nsPrinterListCUPS.h +++ b/widget/nsPrinterListCUPS.h @@ -9,14 +9,20 @@ #include "nsPrinterListBase.h" #include "nsStringFwd.h" +namespace mozilla { +template +class Maybe; +} // namespace mozilla + class nsPrinterListCUPS final : public nsPrinterListBase { NS_IMETHOD InitPrintSettingsFromPrinter(const nsAString&, nsIPrintSettings*) final; nsTArray Printers() const final; RefPtr CreatePrinter(PrinterInfo) const final; - Maybe PrinterByName(nsString aPrinterName) const final; - Maybe PrinterBySystemName(nsString aPrinterName) const final; + mozilla::Maybe PrinterByName(nsString aPrinterName) const final; + mozilla::Maybe PrinterBySystemName( + nsString aPrinterName) const final; nsresult SystemDefaultPrinterName(nsAString&) const final; private: