mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
5000953110
--HG-- rename : widget/public/LookAndFeel.h => widget/LookAndFeel.h rename : widget/public/WidgetTraceEvent.h => widget/WidgetTraceEvent.h rename : widget/src/android/AndroidBridge.cpp => widget/android/AndroidBridge.cpp rename : widget/src/android/AndroidBridge.h => widget/android/AndroidBridge.h rename : widget/src/android/AndroidDirectTexture.cpp => widget/android/AndroidDirectTexture.cpp rename : widget/src/android/AndroidDirectTexture.h => widget/android/AndroidDirectTexture.h rename : widget/src/android/AndroidGraphicBuffer.cpp => widget/android/AndroidGraphicBuffer.cpp rename : widget/src/android/AndroidGraphicBuffer.h => widget/android/AndroidGraphicBuffer.h rename : widget/src/android/AndroidJNI.cpp => widget/android/AndroidJNI.cpp rename : widget/src/android/AndroidJavaWrappers.cpp => widget/android/AndroidJavaWrappers.cpp rename : widget/src/android/AndroidJavaWrappers.h => widget/android/AndroidJavaWrappers.h rename : widget/src/android/GfxInfo.cpp => widget/android/GfxInfo.cpp rename : widget/src/android/GfxInfo.h => widget/android/GfxInfo.h rename : widget/src/android/Makefile.in => widget/android/Makefile.in rename : widget/src/android/nsAppShell.cpp => widget/android/nsAppShell.cpp rename : widget/src/android/nsAppShell.h => widget/android/nsAppShell.h rename : widget/src/android/nsClipboard.cpp => widget/android/nsClipboard.cpp rename : widget/src/android/nsClipboard.h => widget/android/nsClipboard.h rename : widget/src/android/nsDeviceContextAndroid.cpp => widget/android/nsDeviceContextAndroid.cpp rename : widget/src/android/nsDeviceContextAndroid.h => widget/android/nsDeviceContextAndroid.h rename : widget/src/android/nsFilePicker.cpp => widget/android/nsFilePicker.cpp rename : widget/src/android/nsFilePicker.h => widget/android/nsFilePicker.h rename : widget/src/android/nsIAndroidBridge.idl => widget/android/nsIAndroidBridge.idl rename : widget/src/android/nsIMEPicker.cpp => widget/android/nsIMEPicker.cpp rename : widget/src/android/nsIMEPicker.h => widget/android/nsIMEPicker.h rename : widget/src/android/nsIdleServiceAndroid.cpp => widget/android/nsIdleServiceAndroid.cpp rename : widget/src/android/nsIdleServiceAndroid.h => widget/android/nsIdleServiceAndroid.h rename : widget/src/android/nsLookAndFeel.cpp => widget/android/nsLookAndFeel.cpp rename : widget/src/android/nsLookAndFeel.h => widget/android/nsLookAndFeel.h rename : widget/src/android/nsPrintOptionsAndroid.cpp => widget/android/nsPrintOptionsAndroid.cpp rename : widget/src/android/nsPrintOptionsAndroid.h => widget/android/nsPrintOptionsAndroid.h rename : widget/src/android/nsScreenManagerAndroid.cpp => widget/android/nsScreenManagerAndroid.cpp rename : widget/src/android/nsScreenManagerAndroid.h => widget/android/nsScreenManagerAndroid.h rename : widget/src/android/nsWidgetFactory.cpp => widget/android/nsWidgetFactory.cpp rename : widget/src/android/nsWindow.cpp => widget/android/nsWindow.cpp rename : widget/src/android/nsWindow.h => widget/android/nsWindow.h rename : widget/src/build/Makefile.in => widget/build/Makefile.in rename : widget/src/build/nsWinWidgetFactory.cpp => widget/build/nsWinWidgetFactory.cpp rename : widget/src/build/res/aliasb.cur => widget/build/res/aliasb.cur rename : widget/src/build/res/cell.cur => widget/build/res/cell.cur rename : widget/src/build/res/col_resize.cur => widget/build/res/col_resize.cur rename : widget/src/build/res/copy.cur => widget/build/res/copy.cur rename : widget/src/build/res/grab.cur => widget/build/res/grab.cur rename : widget/src/build/res/grabbing.cur => widget/build/res/grabbing.cur rename : widget/src/build/res/none.cur => widget/build/res/none.cur rename : widget/src/build/res/row_resize.cur => widget/build/res/row_resize.cur rename : widget/src/build/res/select.cur => widget/build/res/select.cur rename : widget/src/build/res/vertical_text.cur => widget/build/res/vertical_text.cur rename : widget/src/build/res/zoom_in.cur => widget/build/res/zoom_in.cur rename : widget/src/build/res/zoom_out.cur => widget/build/res/zoom_out.cur rename : widget/src/build/widget.rc => widget/build/widget.rc rename : widget/src/cocoa/ComplexTextInputPanel.h => widget/cocoa/ComplexTextInputPanel.h rename : widget/src/cocoa/ComplexTextInputPanel.mm => widget/cocoa/ComplexTextInputPanel.mm rename : widget/src/cocoa/CustomCocoaEvents.h => widget/cocoa/CustomCocoaEvents.h rename : widget/src/cocoa/GfxInfo.h => widget/cocoa/GfxInfo.h rename : widget/src/cocoa/GfxInfo.mm => widget/cocoa/GfxInfo.mm rename : widget/src/cocoa/Makefile.in => widget/cocoa/Makefile.in rename : widget/src/cocoa/TextInputHandler.h => widget/cocoa/TextInputHandler.h rename : widget/src/cocoa/TextInputHandler.mm => widget/cocoa/TextInputHandler.mm rename : widget/src/cocoa/WidgetTraceEvent.mm => widget/cocoa/WidgetTraceEvent.mm rename : widget/src/cocoa/crashtests/373122-1-inner.html => widget/cocoa/crashtests/373122-1-inner.html rename : widget/src/cocoa/crashtests/373122-1.html => widget/cocoa/crashtests/373122-1.html rename : widget/src/cocoa/crashtests/397209-1.html => widget/cocoa/crashtests/397209-1.html rename : widget/src/cocoa/crashtests/403296-1.xhtml => widget/cocoa/crashtests/403296-1.xhtml rename : widget/src/cocoa/crashtests/419737-1.html => widget/cocoa/crashtests/419737-1.html rename : widget/src/cocoa/crashtests/435223-1.html => widget/cocoa/crashtests/435223-1.html rename : widget/src/cocoa/crashtests/444260-1.xul => widget/cocoa/crashtests/444260-1.xul rename : widget/src/cocoa/crashtests/444864-1.html => widget/cocoa/crashtests/444864-1.html rename : widget/src/cocoa/crashtests/449111-1.html => widget/cocoa/crashtests/449111-1.html rename : widget/src/cocoa/crashtests/460349-1.xhtml => widget/cocoa/crashtests/460349-1.xhtml rename : widget/src/cocoa/crashtests/460387-1.html => widget/cocoa/crashtests/460387-1.html rename : widget/src/cocoa/crashtests/464589-1.html => widget/cocoa/crashtests/464589-1.html rename : widget/src/cocoa/crashtests/crashtests.list => widget/cocoa/crashtests/crashtests.list rename : widget/src/cocoa/cursors/arrowN.tiff => widget/cocoa/cursors/arrowN.tiff rename : widget/src/cocoa/cursors/arrowS.tiff => widget/cocoa/cursors/arrowS.tiff rename : widget/src/cocoa/cursors/colResize.tiff => widget/cocoa/cursors/colResize.tiff rename : widget/src/cocoa/cursors/help.tiff => widget/cocoa/cursors/help.tiff rename : widget/src/cocoa/cursors/rowResize.tiff => widget/cocoa/cursors/rowResize.tiff rename : widget/src/cocoa/cursors/sizeNE.tiff => widget/cocoa/cursors/sizeNE.tiff rename : widget/src/cocoa/cursors/sizeNESW.tiff => widget/cocoa/cursors/sizeNESW.tiff rename : widget/src/cocoa/cursors/sizeNS.tiff => widget/cocoa/cursors/sizeNS.tiff rename : widget/src/cocoa/cursors/sizeNW.tiff => widget/cocoa/cursors/sizeNW.tiff rename : widget/src/cocoa/cursors/sizeNWSE.tiff => widget/cocoa/cursors/sizeNWSE.tiff rename : widget/src/cocoa/cursors/sizeSE.tiff => widget/cocoa/cursors/sizeSE.tiff rename : widget/src/cocoa/cursors/sizeSW.tiff => widget/cocoa/cursors/sizeSW.tiff rename : widget/src/cocoa/cursors/spin1.tiff => widget/cocoa/cursors/spin1.tiff rename : widget/src/cocoa/cursors/spin2.tiff => widget/cocoa/cursors/spin2.tiff rename : widget/src/cocoa/cursors/spin3.tiff => widget/cocoa/cursors/spin3.tiff rename : widget/src/cocoa/cursors/spin4.tiff => widget/cocoa/cursors/spin4.tiff rename : widget/src/cocoa/cursors/vtIBeam.tiff => widget/cocoa/cursors/vtIBeam.tiff rename : widget/src/cocoa/cursors/zoomIn.tiff => widget/cocoa/cursors/zoomIn.tiff rename : widget/src/cocoa/cursors/zoomOut.tiff => widget/cocoa/cursors/zoomOut.tiff rename : widget/src/cocoa/mozView.h => widget/cocoa/mozView.h rename : widget/src/cocoa/nsAppShell.h => widget/cocoa/nsAppShell.h rename : widget/src/cocoa/nsAppShell.mm => widget/cocoa/nsAppShell.mm rename : widget/src/cocoa/nsBidiKeyboard.h => widget/cocoa/nsBidiKeyboard.h rename : widget/src/cocoa/nsBidiKeyboard.mm => widget/cocoa/nsBidiKeyboard.mm rename : widget/src/cocoa/nsChangeObserver.h => widget/cocoa/nsChangeObserver.h rename : widget/src/cocoa/nsChildView.h => widget/cocoa/nsChildView.h rename : widget/src/cocoa/nsChildView.mm => widget/cocoa/nsChildView.mm rename : widget/src/cocoa/nsClipboard.h => widget/cocoa/nsClipboard.h rename : widget/src/cocoa/nsClipboard.mm => widget/cocoa/nsClipboard.mm rename : widget/src/cocoa/nsCocoaFeatures.h => widget/cocoa/nsCocoaFeatures.h rename : widget/src/cocoa/nsCocoaFeatures.mm => widget/cocoa/nsCocoaFeatures.mm rename : widget/src/cocoa/nsCocoaUtils.h => widget/cocoa/nsCocoaUtils.h rename : widget/src/cocoa/nsCocoaUtils.mm => widget/cocoa/nsCocoaUtils.mm rename : widget/src/cocoa/nsCocoaWindow.h => widget/cocoa/nsCocoaWindow.h rename : widget/src/cocoa/nsCocoaWindow.mm => widget/cocoa/nsCocoaWindow.mm rename : widget/src/cocoa/nsCursorManager.h => widget/cocoa/nsCursorManager.h rename : widget/src/cocoa/nsCursorManager.mm => widget/cocoa/nsCursorManager.mm rename : widget/src/cocoa/nsDeviceContextSpecX.h => widget/cocoa/nsDeviceContextSpecX.h rename : widget/src/cocoa/nsDeviceContextSpecX.mm => widget/cocoa/nsDeviceContextSpecX.mm rename : widget/src/cocoa/nsDragService.h => widget/cocoa/nsDragService.h rename : widget/src/cocoa/nsDragService.mm => widget/cocoa/nsDragService.mm rename : widget/src/cocoa/nsFilePicker.h => widget/cocoa/nsFilePicker.h rename : widget/src/cocoa/nsFilePicker.mm => widget/cocoa/nsFilePicker.mm rename : widget/src/cocoa/nsIdleServiceX.h => widget/cocoa/nsIdleServiceX.h rename : widget/src/cocoa/nsIdleServiceX.mm => widget/cocoa/nsIdleServiceX.mm rename : widget/src/cocoa/nsLookAndFeel.h => widget/cocoa/nsLookAndFeel.h rename : widget/src/cocoa/nsLookAndFeel.mm => widget/cocoa/nsLookAndFeel.mm rename : widget/src/cocoa/nsMacCursor.h => widget/cocoa/nsMacCursor.h rename : widget/src/cocoa/nsMacCursor.mm => widget/cocoa/nsMacCursor.mm rename : widget/src/cocoa/nsMacDockSupport.h => widget/cocoa/nsMacDockSupport.h rename : widget/src/cocoa/nsMacDockSupport.mm => widget/cocoa/nsMacDockSupport.mm rename : widget/src/cocoa/nsMenuBarX.h => widget/cocoa/nsMenuBarX.h rename : widget/src/cocoa/nsMenuBarX.mm => widget/cocoa/nsMenuBarX.mm rename : widget/src/cocoa/nsMenuBaseX.h => widget/cocoa/nsMenuBaseX.h rename : widget/src/cocoa/nsMenuGroupOwnerX.h => widget/cocoa/nsMenuGroupOwnerX.h rename : widget/src/cocoa/nsMenuGroupOwnerX.mm => widget/cocoa/nsMenuGroupOwnerX.mm rename : widget/src/cocoa/nsMenuItemIconX.h => widget/cocoa/nsMenuItemIconX.h rename : widget/src/cocoa/nsMenuItemIconX.mm => widget/cocoa/nsMenuItemIconX.mm rename : widget/src/cocoa/nsMenuItemX.h => widget/cocoa/nsMenuItemX.h rename : widget/src/cocoa/nsMenuItemX.mm => widget/cocoa/nsMenuItemX.mm rename : widget/src/cocoa/nsMenuUtilsX.h => widget/cocoa/nsMenuUtilsX.h rename : widget/src/cocoa/nsMenuUtilsX.mm => widget/cocoa/nsMenuUtilsX.mm rename : widget/src/cocoa/nsMenuX.h => widget/cocoa/nsMenuX.h rename : widget/src/cocoa/nsMenuX.mm => widget/cocoa/nsMenuX.mm rename : widget/src/cocoa/nsNativeThemeCocoa.h => widget/cocoa/nsNativeThemeCocoa.h rename : widget/src/cocoa/nsNativeThemeCocoa.mm => widget/cocoa/nsNativeThemeCocoa.mm rename : widget/src/cocoa/nsNativeThemeColors.h => widget/cocoa/nsNativeThemeColors.h rename : widget/src/cocoa/nsPIWidgetCocoa.idl => widget/cocoa/nsPIWidgetCocoa.idl rename : widget/src/cocoa/nsPrintDialogX.h => widget/cocoa/nsPrintDialogX.h rename : widget/src/cocoa/nsPrintDialogX.mm => widget/cocoa/nsPrintDialogX.mm rename : widget/src/cocoa/nsPrintOptionsX.h => widget/cocoa/nsPrintOptionsX.h rename : widget/src/cocoa/nsPrintOptionsX.mm => widget/cocoa/nsPrintOptionsX.mm rename : widget/src/cocoa/nsPrintSettingsX.h => widget/cocoa/nsPrintSettingsX.h rename : widget/src/cocoa/nsPrintSettingsX.mm => widget/cocoa/nsPrintSettingsX.mm rename : widget/src/cocoa/nsScreenCocoa.h => widget/cocoa/nsScreenCocoa.h rename : widget/src/cocoa/nsScreenCocoa.mm => widget/cocoa/nsScreenCocoa.mm rename : widget/src/cocoa/nsScreenManagerCocoa.h => widget/cocoa/nsScreenManagerCocoa.h rename : widget/src/cocoa/nsScreenManagerCocoa.mm => widget/cocoa/nsScreenManagerCocoa.mm rename : widget/src/cocoa/nsSound.h => widget/cocoa/nsSound.h rename : widget/src/cocoa/nsSound.mm => widget/cocoa/nsSound.mm rename : widget/src/cocoa/nsStandaloneNativeMenu.h => widget/cocoa/nsStandaloneNativeMenu.h rename : widget/src/cocoa/nsStandaloneNativeMenu.mm => widget/cocoa/nsStandaloneNativeMenu.mm rename : widget/src/cocoa/nsToolkit.h => widget/cocoa/nsToolkit.h rename : widget/src/cocoa/nsToolkit.mm => widget/cocoa/nsToolkit.mm rename : widget/src/cocoa/nsWidgetFactory.mm => widget/cocoa/nsWidgetFactory.mm rename : widget/src/cocoa/nsWindowMap.h => widget/cocoa/nsWindowMap.h rename : widget/src/cocoa/nsWindowMap.mm => widget/cocoa/nsWindowMap.mm rename : widget/src/cocoa/resources/MainMenu.nib/classes.nib => widget/cocoa/resources/MainMenu.nib/classes.nib rename : widget/src/cocoa/resources/MainMenu.nib/info.nib => widget/cocoa/resources/MainMenu.nib/info.nib rename : widget/src/cocoa/resources/MainMenu.nib/keyedobjects.nib => widget/cocoa/resources/MainMenu.nib/keyedobjects.nib rename : widget/src/crashtests/303901-1.html => widget/crashtests/303901-1.html rename : widget/src/crashtests/303901-2.html => widget/crashtests/303901-2.html rename : widget/src/crashtests/380359-1.xhtml => widget/crashtests/380359-1.xhtml rename : widget/src/crashtests/crashtests.list => widget/crashtests/crashtests.list rename : widget/src/gonk/Framebuffer.cpp => widget/gonk/Framebuffer.cpp rename : widget/src/gonk/Framebuffer.h => widget/gonk/Framebuffer.h rename : widget/src/gonk/Makefile.in => widget/gonk/Makefile.in rename : widget/src/gonk/nsAppShell.cpp => widget/gonk/nsAppShell.cpp rename : widget/src/gonk/nsAppShell.h => widget/gonk/nsAppShell.h rename : widget/src/gonk/nsLookAndFeel.cpp => widget/gonk/nsLookAndFeel.cpp rename : widget/src/gonk/nsLookAndFeel.h => widget/gonk/nsLookAndFeel.h rename : widget/src/gonk/nsScreenManagerGonk.cpp => widget/gonk/nsScreenManagerGonk.cpp rename : widget/src/gonk/nsScreenManagerGonk.h => widget/gonk/nsScreenManagerGonk.h rename : widget/src/gonk/nsWidgetFactory.cpp => widget/gonk/nsWidgetFactory.cpp rename : widget/src/gonk/nsWindow.cpp => widget/gonk/nsWindow.cpp rename : widget/src/gonk/nsWindow.h => widget/gonk/nsWindow.h rename : widget/src/gtk2/Makefile.in => widget/gtk2/Makefile.in rename : widget/src/gtk2/WidgetTraceEvent.cpp => widget/gtk2/WidgetTraceEvent.cpp rename : widget/src/gtk2/crashtests/673390-1.html => widget/gtk2/crashtests/673390-1.html rename : widget/src/gtk2/crashtests/crashtests.list => widget/gtk2/crashtests/crashtests.list rename : widget/src/gtk2/gtk2compat.h => widget/gtk2/gtk2compat.h rename : widget/src/gtk2/gtk2drawing.c => widget/gtk2/gtk2drawing.c rename : widget/src/gtk2/gtkdrawing.h => widget/gtk2/gtkdrawing.h rename : widget/src/gtk2/maiRedundantObjectFactory.c => widget/gtk2/maiRedundantObjectFactory.c rename : widget/src/gtk2/maiRedundantObjectFactory.h => widget/gtk2/maiRedundantObjectFactory.h rename : widget/src/gtk2/mozcontainer.c => widget/gtk2/mozcontainer.c rename : widget/src/gtk2/mozcontainer.h => widget/gtk2/mozcontainer.h rename : widget/src/gtk2/nsAppShell.cpp => widget/gtk2/nsAppShell.cpp rename : widget/src/gtk2/nsAppShell.h => widget/gtk2/nsAppShell.h rename : widget/src/gtk2/nsBidiKeyboard.cpp => widget/gtk2/nsBidiKeyboard.cpp rename : widget/src/gtk2/nsBidiKeyboard.h => widget/gtk2/nsBidiKeyboard.h rename : widget/src/gtk2/nsCUPSShim.cpp => widget/gtk2/nsCUPSShim.cpp rename : widget/src/gtk2/nsCUPSShim.h => widget/gtk2/nsCUPSShim.h rename : widget/src/gtk2/nsClipboard.cpp => widget/gtk2/nsClipboard.cpp rename : widget/src/gtk2/nsClipboard.h => widget/gtk2/nsClipboard.h rename : widget/src/gtk2/nsDeviceContextSpecG.cpp => widget/gtk2/nsDeviceContextSpecG.cpp rename : widget/src/gtk2/nsDeviceContextSpecG.h => widget/gtk2/nsDeviceContextSpecG.h rename : widget/src/gtk2/nsDragService.cpp => widget/gtk2/nsDragService.cpp rename : widget/src/gtk2/nsDragService.h => widget/gtk2/nsDragService.h rename : widget/src/gtk2/nsFilePicker.cpp => widget/gtk2/nsFilePicker.cpp rename : widget/src/gtk2/nsFilePicker.h => widget/gtk2/nsFilePicker.h rename : widget/src/gtk2/nsGTKToolkit.h => widget/gtk2/nsGTKToolkit.h rename : widget/src/gtk2/nsGtkCursors.h => widget/gtk2/nsGtkCursors.h rename : widget/src/gtk2/nsGtkIMModule.cpp => widget/gtk2/nsGtkIMModule.cpp rename : widget/src/gtk2/nsGtkIMModule.h => widget/gtk2/nsGtkIMModule.h rename : widget/src/gtk2/nsGtkKeyUtils.cpp => widget/gtk2/nsGtkKeyUtils.cpp rename : widget/src/gtk2/nsGtkKeyUtils.h => widget/gtk2/nsGtkKeyUtils.h rename : widget/src/gtk2/nsIImageToPixbuf.h => widget/gtk2/nsIImageToPixbuf.h rename : widget/src/gtk2/nsIdleServiceGTK.cpp => widget/gtk2/nsIdleServiceGTK.cpp rename : widget/src/gtk2/nsIdleServiceGTK.h => widget/gtk2/nsIdleServiceGTK.h rename : widget/src/gtk2/nsImageToPixbuf.cpp => widget/gtk2/nsImageToPixbuf.cpp rename : widget/src/gtk2/nsImageToPixbuf.h => widget/gtk2/nsImageToPixbuf.h rename : widget/src/gtk2/nsLookAndFeel.cpp => widget/gtk2/nsLookAndFeel.cpp rename : widget/src/gtk2/nsLookAndFeel.h => widget/gtk2/nsLookAndFeel.h rename : widget/src/gtk2/nsNativeKeyBindings.cpp => widget/gtk2/nsNativeKeyBindings.cpp rename : widget/src/gtk2/nsNativeKeyBindings.h => widget/gtk2/nsNativeKeyBindings.h rename : widget/src/gtk2/nsNativeThemeGTK.cpp => widget/gtk2/nsNativeThemeGTK.cpp rename : widget/src/gtk2/nsNativeThemeGTK.h => widget/gtk2/nsNativeThemeGTK.h rename : widget/src/gtk2/nsPSPrinters.cpp => widget/gtk2/nsPSPrinters.cpp rename : widget/src/gtk2/nsPSPrinters.h => widget/gtk2/nsPSPrinters.h rename : widget/src/gtk2/nsPaperPS.cpp => widget/gtk2/nsPaperPS.cpp rename : widget/src/gtk2/nsPaperPS.h => widget/gtk2/nsPaperPS.h rename : widget/src/gtk2/nsPrintDialogGTK.cpp => widget/gtk2/nsPrintDialogGTK.cpp rename : widget/src/gtk2/nsPrintDialogGTK.h => widget/gtk2/nsPrintDialogGTK.h rename : widget/src/gtk2/nsPrintOptionsGTK.cpp => widget/gtk2/nsPrintOptionsGTK.cpp rename : widget/src/gtk2/nsPrintOptionsGTK.h => widget/gtk2/nsPrintOptionsGTK.h rename : widget/src/gtk2/nsPrintSettingsGTK.cpp => widget/gtk2/nsPrintSettingsGTK.cpp rename : widget/src/gtk2/nsPrintSettingsGTK.h => widget/gtk2/nsPrintSettingsGTK.h rename : widget/src/gtk2/nsScreenGtk.cpp => widget/gtk2/nsScreenGtk.cpp rename : widget/src/gtk2/nsScreenGtk.h => widget/gtk2/nsScreenGtk.h rename : widget/src/gtk2/nsScreenManagerGtk.cpp => widget/gtk2/nsScreenManagerGtk.cpp rename : widget/src/gtk2/nsScreenManagerGtk.h => widget/gtk2/nsScreenManagerGtk.h rename : widget/src/gtk2/nsSound.cpp => widget/gtk2/nsSound.cpp rename : widget/src/gtk2/nsSound.h => widget/gtk2/nsSound.h rename : widget/src/gtk2/nsToolkit.cpp => widget/gtk2/nsToolkit.cpp rename : widget/src/gtk2/nsWidgetFactory.cpp => widget/gtk2/nsWidgetFactory.cpp rename : widget/src/gtk2/nsWindow.cpp => widget/gtk2/nsWindow.cpp rename : widget/src/gtk2/nsWindow.h => widget/gtk2/nsWindow.h rename : widget/src/gtkxtbin/Makefile.in => widget/gtkxtbin/Makefile.in rename : widget/src/gtkxtbin/gtk2xtbin.c => widget/gtkxtbin/gtk2xtbin.c rename : widget/src/gtkxtbin/gtk2xtbin.h => widget/gtkxtbin/gtk2xtbin.h rename : widget/src/gtkxtbin/xembed.h => widget/gtkxtbin/xembed.h rename : widget/public/nsEvent.h => widget/nsEvent.h rename : widget/public/nsGUIEvent.h => widget/nsGUIEvent.h rename : widget/public/nsGUIEventIPC.h => widget/nsGUIEventIPC.h rename : widget/public/nsIAppShell.idl => widget/nsIAppShell.idl rename : widget/public/nsIBaseWindow.idl => widget/nsIBaseWindow.idl rename : widget/public/nsIBidiKeyboard.idl => widget/nsIBidiKeyboard.idl rename : widget/public/nsIClipboard.idl => widget/nsIClipboard.idl rename : widget/public/nsIClipboardDragDropHookList.idl => widget/nsIClipboardDragDropHookList.idl rename : widget/public/nsIClipboardDragDropHooks.idl => widget/nsIClipboardDragDropHooks.idl rename : widget/public/nsIClipboardHelper.idl => widget/nsIClipboardHelper.idl rename : widget/public/nsIClipboardOwner.idl => widget/nsIClipboardOwner.idl rename : widget/public/nsIDeviceContextSpec.h => widget/nsIDeviceContextSpec.h rename : widget/public/nsIDragService.idl => widget/nsIDragService.idl rename : widget/public/nsIDragSession.idl => widget/nsIDragSession.idl rename : widget/public/nsIDragSessionGTK.h => widget/nsIDragSessionGTK.h rename : widget/public/nsIDragSessionOS2.h => widget/nsIDragSessionOS2.h rename : widget/public/nsIFilePicker.idl => widget/nsIFilePicker.idl rename : widget/public/nsIFormatConverter.idl => widget/nsIFormatConverter.idl rename : widget/public/nsIGfxInfo.idl => widget/nsIGfxInfo.idl rename : widget/public/nsIGfxInfoDebug.idl => widget/nsIGfxInfoDebug.idl rename : widget/public/nsIIMEPicker.idl => widget/nsIIMEPicker.idl rename : widget/public/nsIIdleService.idl => widget/nsIIdleService.idl rename : widget/public/nsIJumpListBuilder.idl => widget/nsIJumpListBuilder.idl rename : widget/public/nsIJumpListItem.idl => widget/nsIJumpListItem.idl rename : widget/public/nsIMacDockSupport.idl => widget/nsIMacDockSupport.idl rename : widget/public/nsINativeKeyBindings.h => widget/nsINativeKeyBindings.h rename : widget/public/nsINativeMenuService.h => widget/nsINativeMenuService.h rename : widget/public/nsIPluginWidget.h => widget/nsIPluginWidget.h rename : widget/public/nsIPrintDialogService.h => widget/nsIPrintDialogService.h rename : widget/public/nsIPrintOptions.idl => widget/nsIPrintOptions.idl rename : widget/public/nsIPrintSession.idl => widget/nsIPrintSession.idl rename : widget/public/nsIPrintSettings.idl => widget/nsIPrintSettings.idl rename : widget/public/nsIPrintSettingsService.idl => widget/nsIPrintSettingsService.idl rename : widget/public/nsIPrintSettingsWin.idl => widget/nsIPrintSettingsWin.idl rename : widget/public/nsIRollupListener.h => widget/nsIRollupListener.h rename : widget/public/nsIRwsService.idl => widget/nsIRwsService.idl rename : widget/public/nsIScreen.idl => widget/nsIScreen.idl rename : widget/public/nsIScreenManager.idl => widget/nsIScreenManager.idl rename : widget/public/nsISound.idl => widget/nsISound.idl rename : widget/public/nsIStandaloneNativeMenu.idl => widget/nsIStandaloneNativeMenu.idl rename : widget/public/nsITaskbarOverlayIconController.idl => widget/nsITaskbarOverlayIconController.idl rename : widget/public/nsITaskbarPreview.idl => widget/nsITaskbarPreview.idl rename : widget/public/nsITaskbarPreviewButton.idl => widget/nsITaskbarPreviewButton.idl rename : widget/public/nsITaskbarPreviewController.idl => widget/nsITaskbarPreviewController.idl rename : widget/public/nsITaskbarProgress.idl => widget/nsITaskbarProgress.idl rename : widget/public/nsITaskbarTabPreview.idl => widget/nsITaskbarTabPreview.idl rename : widget/public/nsITaskbarWindowPreview.idl => widget/nsITaskbarWindowPreview.idl rename : widget/public/nsITransferable.idl => widget/nsITransferable.idl rename : widget/public/nsIWidget.h => widget/nsIWidget.h rename : widget/public/nsIWinTaskbar.idl => widget/nsIWinTaskbar.idl rename : widget/public/nsNativeWidget.h => widget/nsNativeWidget.h rename : widget/public/nsWidgetInitData.h => widget/nsWidgetInitData.h rename : widget/public/nsWidgetsCID.h => widget/nsWidgetsCID.h rename : widget/src/os2/Makefile.in => widget/os2/Makefile.in rename : widget/src/os2/MozSounds.cmd => widget/os2/MozSounds.cmd rename : widget/src/os2/README.firefox => widget/os2/README.firefox rename : widget/src/os2/README.seamonkey => widget/os2/README.seamonkey rename : widget/src/os2/README.thunderbird => widget/os2/README.thunderbird rename : widget/src/os2/nsAppShell.cpp => widget/os2/nsAppShell.cpp rename : widget/src/os2/nsAppShell.h => widget/os2/nsAppShell.h rename : widget/src/os2/nsBidiKeyboard.cpp => widget/os2/nsBidiKeyboard.cpp rename : widget/src/os2/nsBidiKeyboard.h => widget/os2/nsBidiKeyboard.h rename : widget/src/os2/nsClipboard.cpp => widget/os2/nsClipboard.cpp rename : widget/src/os2/nsClipboard.h => widget/os2/nsClipboard.h rename : widget/src/os2/nsDeviceContextSpecOS2.cpp => widget/os2/nsDeviceContextSpecOS2.cpp rename : widget/src/os2/nsDeviceContextSpecOS2.h => widget/os2/nsDeviceContextSpecOS2.h rename : widget/src/os2/nsDragService.cpp => widget/os2/nsDragService.cpp rename : widget/src/os2/nsDragService.h => widget/os2/nsDragService.h rename : widget/src/os2/nsFilePicker.cpp => widget/os2/nsFilePicker.cpp rename : widget/src/os2/nsFilePicker.h => widget/os2/nsFilePicker.h rename : widget/src/os2/nsGfxDefs.h => widget/os2/nsGfxDefs.h rename : widget/src/os2/nsIdleServiceOS2.cpp => widget/os2/nsIdleServiceOS2.cpp rename : widget/src/os2/nsIdleServiceOS2.h => widget/os2/nsIdleServiceOS2.h rename : widget/src/os2/nsLookAndFeel.cpp => widget/os2/nsLookAndFeel.cpp rename : widget/src/os2/nsLookAndFeel.h => widget/os2/nsLookAndFeel.h rename : widget/src/os2/nsOS2Uni.cpp => widget/os2/nsOS2Uni.cpp rename : widget/src/os2/nsOS2Uni.h => widget/os2/nsOS2Uni.h rename : widget/src/os2/nsPrintOS2.cpp => widget/os2/nsPrintOS2.cpp rename : widget/src/os2/nsPrintOS2.h => widget/os2/nsPrintOS2.h rename : widget/src/os2/nsPrintOptionsOS2.cpp => widget/os2/nsPrintOptionsOS2.cpp rename : widget/src/os2/nsPrintOptionsOS2.h => widget/os2/nsPrintOptionsOS2.h rename : widget/src/os2/nsPrintdOS2.h => widget/os2/nsPrintdOS2.h rename : widget/src/os2/nsRwsService.cpp => widget/os2/nsRwsService.cpp rename : widget/src/os2/nsRwsService.h => widget/os2/nsRwsService.h rename : widget/src/os2/nsScreenManagerOS2.cpp => widget/os2/nsScreenManagerOS2.cpp rename : widget/src/os2/nsScreenManagerOS2.h => widget/os2/nsScreenManagerOS2.h rename : widget/src/os2/nsScreenOS2.cpp => widget/os2/nsScreenOS2.cpp rename : widget/src/os2/nsScreenOS2.h => widget/os2/nsScreenOS2.h rename : widget/src/os2/nsSound.cpp => widget/os2/nsSound.cpp rename : widget/src/os2/nsSound.h => widget/os2/nsSound.h rename : widget/src/os2/nsWidgetFactory.cpp => widget/os2/nsWidgetFactory.cpp rename : widget/src/os2/nsWindow.cpp => widget/os2/nsWindow.cpp rename : widget/src/os2/nsWindow.h => widget/os2/nsWindow.h rename : widget/src/os2/os2FrameWindow.cpp => widget/os2/os2FrameWindow.cpp rename : widget/src/os2/os2FrameWindow.h => widget/os2/os2FrameWindow.h rename : widget/src/os2/res/aliasb.ptr => widget/os2/res/aliasb.ptr rename : widget/src/os2/res/arrow_wait.ptr => widget/os2/res/arrow_wait.ptr rename : widget/src/os2/res/cell.ptr => widget/os2/res/cell.ptr rename : widget/src/os2/res/col_resize.ptr => widget/os2/res/col_resize.ptr rename : widget/src/os2/res/copy.ptr => widget/os2/res/copy.ptr rename : widget/src/os2/res/crosshair.ptr => widget/os2/res/crosshair.ptr rename : widget/src/os2/res/dndtext.ico => widget/os2/res/dndtext.ico rename : widget/src/os2/res/dndurl.ico => widget/os2/res/dndurl.ico rename : widget/src/os2/res/grab.ptr => widget/os2/res/grab.ptr rename : widget/src/os2/res/grabbing.ptr => widget/os2/res/grabbing.ptr rename : widget/src/os2/res/help.ptr => widget/os2/res/help.ptr rename : widget/src/os2/res/none.ptr => widget/os2/res/none.ptr rename : widget/src/os2/res/row_resize.ptr => widget/os2/res/row_resize.ptr rename : widget/src/os2/res/select.ptr => widget/os2/res/select.ptr rename : widget/src/os2/res/vertical_text.ptr => widget/os2/res/vertical_text.ptr rename : widget/src/os2/res/zoom_in.ptr => widget/os2/res/zoom_in.ptr rename : widget/src/os2/res/zoom_out.ptr => widget/os2/res/zoom_out.ptr rename : widget/src/os2/rws.h => widget/os2/rws.h rename : widget/src/os2/rwserr.h => widget/os2/rwserr.h rename : widget/src/os2/wdgtos2rc.h => widget/os2/wdgtos2rc.h rename : widget/src/os2/widget.rc => widget/os2/widget.rc rename : widget/src/qt/Makefile.in => widget/qt/Makefile.in rename : widget/src/qt/faststartupqt/Makefile.in => widget/qt/faststartupqt/Makefile.in rename : widget/src/qt/faststartupqt/mozqwidgetfast.cpp => widget/qt/faststartupqt/mozqwidgetfast.cpp rename : widget/src/qt/faststartupqt/mozqwidgetfast.h => widget/qt/faststartupqt/mozqwidgetfast.h rename : widget/src/qt/faststartupqt/nsFastStartupQt.cpp => widget/qt/faststartupqt/nsFastStartupQt.cpp rename : widget/src/qt/faststartupqt/nsFastStartupQt.h => widget/qt/faststartupqt/nsFastStartupQt.h rename : widget/src/qt/mozSwipeGesture.cpp => widget/qt/mozSwipeGesture.cpp rename : widget/src/qt/mozSwipeGesture.h => widget/qt/mozSwipeGesture.h rename : widget/src/qt/moziqwidget.h => widget/qt/moziqwidget.h rename : widget/src/qt/mozqorientationsensorfilter.cpp => widget/qt/mozqorientationsensorfilter.cpp rename : widget/src/qt/mozqorientationsensorfilter.h => widget/qt/mozqorientationsensorfilter.h rename : widget/src/qt/mozqwidget.cpp => widget/qt/mozqwidget.cpp rename : widget/src/qt/mozqwidget.h => widget/qt/mozqwidget.h rename : widget/src/qt/nsAppShell.cpp => widget/qt/nsAppShell.cpp rename : widget/src/qt/nsAppShell.h => widget/qt/nsAppShell.h rename : widget/src/qt/nsBidiKeyboard.cpp => widget/qt/nsBidiKeyboard.cpp rename : widget/src/qt/nsBidiKeyboard.h => widget/qt/nsBidiKeyboard.h rename : widget/src/qt/nsClipboard.cpp => widget/qt/nsClipboard.cpp rename : widget/src/qt/nsClipboard.h => widget/qt/nsClipboard.h rename : widget/src/qt/nsCommonWidget.cpp => widget/qt/nsCommonWidget.cpp rename : widget/src/qt/nsCommonWidget.h => widget/qt/nsCommonWidget.h rename : widget/src/qt/nsDeviceContextSpecQt.cpp => widget/qt/nsDeviceContextSpecQt.cpp rename : widget/src/qt/nsDeviceContextSpecQt.h => widget/qt/nsDeviceContextSpecQt.h rename : widget/src/qt/nsDragService.cpp => widget/qt/nsDragService.cpp rename : widget/src/qt/nsDragService.h => widget/qt/nsDragService.h rename : widget/src/qt/nsFilePicker.cpp => widget/qt/nsFilePicker.cpp rename : widget/src/qt/nsFilePicker.h => widget/qt/nsFilePicker.h rename : widget/src/qt/nsIdleServiceQt.cpp => widget/qt/nsIdleServiceQt.cpp rename : widget/src/qt/nsIdleServiceQt.h => widget/qt/nsIdleServiceQt.h rename : widget/src/qt/nsLookAndFeel.cpp => widget/qt/nsLookAndFeel.cpp rename : widget/src/qt/nsLookAndFeel.h => widget/qt/nsLookAndFeel.h rename : widget/src/qt/nsMFilePicker.cpp => widget/qt/nsMFilePicker.cpp rename : widget/src/qt/nsMFilePicker.h => widget/qt/nsMFilePicker.h rename : widget/src/qt/nsNativeThemeQt.cpp => widget/qt/nsNativeThemeQt.cpp rename : widget/src/qt/nsNativeThemeQt.h => widget/qt/nsNativeThemeQt.h rename : widget/src/qt/nsPrintDialogQt.cpp => widget/qt/nsPrintDialogQt.cpp rename : widget/src/qt/nsPrintDialogQt.h => widget/qt/nsPrintDialogQt.h rename : widget/src/qt/nsPrintOptionsQt.cpp => widget/qt/nsPrintOptionsQt.cpp rename : widget/src/qt/nsPrintOptionsQt.h => widget/qt/nsPrintOptionsQt.h rename : widget/src/qt/nsPrintSettingsQt.cpp => widget/qt/nsPrintSettingsQt.cpp rename : widget/src/qt/nsPrintSettingsQt.h => widget/qt/nsPrintSettingsQt.h rename : widget/src/qt/nsQtKeyUtils.cpp => widget/qt/nsQtKeyUtils.cpp rename : widget/src/qt/nsQtKeyUtils.h => widget/qt/nsQtKeyUtils.h rename : widget/src/qt/nsScreenManagerQt.cpp => widget/qt/nsScreenManagerQt.cpp rename : widget/src/qt/nsScreenManagerQt.h => widget/qt/nsScreenManagerQt.h rename : widget/src/qt/nsScreenQt.cpp => widget/qt/nsScreenQt.cpp rename : widget/src/qt/nsScreenQt.h => widget/qt/nsScreenQt.h rename : widget/src/qt/nsSound.cpp => widget/qt/nsSound.cpp rename : widget/src/qt/nsSound.h => widget/qt/nsSound.h rename : widget/src/qt/nsWidgetFactory.cpp => widget/qt/nsWidgetFactory.cpp rename : widget/src/qt/nsWindow.cpp => widget/qt/nsWindow.cpp rename : widget/src/qt/nsWindow.h => widget/qt/nsWindow.h rename : widget/src/shared/Makefile.in => widget/shared/Makefile.in rename : widget/src/shared/WidgetUtils.cpp => widget/shared/WidgetUtils.cpp rename : widget/src/shared/WidgetUtils.h => widget/shared/WidgetUtils.h rename : widget/src/shared/nsShmImage.cpp => widget/shared/nsShmImage.cpp rename : widget/src/shared/nsShmImage.h => widget/shared/nsShmImage.h rename : widget/src/shared/x11/Makefile.in => widget/shared/x11/Makefile.in rename : widget/src/shared/x11/keysym2ucs.c => widget/shared/x11/keysym2ucs.c rename : widget/src/shared/x11/keysym2ucs.h => widget/shared/x11/keysym2ucs.h rename : widget/src/windows/AudioSession.cpp => widget/windows/AudioSession.cpp rename : widget/src/windows/AudioSession.h => widget/windows/AudioSession.h rename : widget/src/windows/GfxInfo.cpp => widget/windows/GfxInfo.cpp rename : widget/src/windows/GfxInfo.h => widget/windows/GfxInfo.h rename : widget/src/windows/IEnumFE.cpp => widget/windows/IEnumFE.cpp rename : widget/src/windows/IEnumFE.h => widget/windows/IEnumFE.h rename : widget/src/windows/JumpListBuilder.cpp => widget/windows/JumpListBuilder.cpp rename : widget/src/windows/JumpListBuilder.h => widget/windows/JumpListBuilder.h rename : widget/src/windows/JumpListItem.cpp => widget/windows/JumpListItem.cpp rename : widget/src/windows/JumpListItem.h => widget/windows/JumpListItem.h rename : widget/src/windows/KeyboardLayout.cpp => widget/windows/KeyboardLayout.cpp rename : widget/src/windows/KeyboardLayout.h => widget/windows/KeyboardLayout.h rename : widget/src/windows/LSPAnnotator.cpp => widget/windows/LSPAnnotator.cpp rename : widget/src/windows/Makefile.in => widget/windows/Makefile.in rename : widget/src/windows/TaskbarPreview.cpp => widget/windows/TaskbarPreview.cpp rename : widget/src/windows/TaskbarPreview.h => widget/windows/TaskbarPreview.h rename : widget/src/windows/TaskbarPreviewButton.cpp => widget/windows/TaskbarPreviewButton.cpp rename : widget/src/windows/TaskbarPreviewButton.h => widget/windows/TaskbarPreviewButton.h rename : widget/src/windows/TaskbarTabPreview.cpp => widget/windows/TaskbarTabPreview.cpp rename : widget/src/windows/TaskbarTabPreview.h => widget/windows/TaskbarTabPreview.h rename : widget/src/windows/TaskbarWindowPreview.cpp => widget/windows/TaskbarWindowPreview.cpp rename : widget/src/windows/TaskbarWindowPreview.h => widget/windows/TaskbarWindowPreview.h rename : widget/src/windows/WidgetTraceEvent.cpp => widget/windows/WidgetTraceEvent.cpp rename : widget/src/windows/WinTaskbar.cpp => widget/windows/WinTaskbar.cpp rename : widget/src/windows/WinTaskbar.h => widget/windows/WinTaskbar.h rename : widget/src/windows/WindowHook.cpp => widget/windows/WindowHook.cpp rename : widget/src/windows/WindowHook.h => widget/windows/WindowHook.h rename : widget/src/windows/nsAppShell.cpp => widget/windows/nsAppShell.cpp rename : widget/src/windows/nsAppShell.h => widget/windows/nsAppShell.h rename : widget/src/windows/nsBidiKeyboard.cpp => widget/windows/nsBidiKeyboard.cpp rename : widget/src/windows/nsBidiKeyboard.h => widget/windows/nsBidiKeyboard.h rename : widget/src/windows/nsClipboard.cpp => widget/windows/nsClipboard.cpp rename : widget/src/windows/nsClipboard.h => widget/windows/nsClipboard.h rename : widget/src/windows/nsDataObj.cpp => widget/windows/nsDataObj.cpp rename : widget/src/windows/nsDataObj.h => widget/windows/nsDataObj.h rename : widget/src/windows/nsDataObjCollection.cpp => widget/windows/nsDataObjCollection.cpp rename : widget/src/windows/nsDataObjCollection.h => widget/windows/nsDataObjCollection.h rename : widget/src/windows/nsDeviceContextSpecWin.cpp => widget/windows/nsDeviceContextSpecWin.cpp rename : widget/src/windows/nsDeviceContextSpecWin.h => widget/windows/nsDeviceContextSpecWin.h rename : widget/src/windows/nsDragService.cpp => widget/windows/nsDragService.cpp rename : widget/src/windows/nsDragService.h => widget/windows/nsDragService.h rename : widget/src/windows/nsFilePicker.cpp => widget/windows/nsFilePicker.cpp rename : widget/src/windows/nsFilePicker.h => widget/windows/nsFilePicker.h rename : widget/src/windows/nsIMM32Handler.cpp => widget/windows/nsIMM32Handler.cpp rename : widget/src/windows/nsIMM32Handler.h => widget/windows/nsIMM32Handler.h rename : widget/src/windows/nsIdleServiceWin.cpp => widget/windows/nsIdleServiceWin.cpp rename : widget/src/windows/nsIdleServiceWin.h => widget/windows/nsIdleServiceWin.h rename : widget/src/windows/nsImageClipboard.cpp => widget/windows/nsImageClipboard.cpp rename : widget/src/windows/nsImageClipboard.h => widget/windows/nsImageClipboard.h rename : widget/src/windows/nsLookAndFeel.cpp => widget/windows/nsLookAndFeel.cpp rename : widget/src/windows/nsLookAndFeel.h => widget/windows/nsLookAndFeel.h rename : widget/src/windows/nsNativeDragSource.cpp => widget/windows/nsNativeDragSource.cpp rename : widget/src/windows/nsNativeDragSource.h => widget/windows/nsNativeDragSource.h rename : widget/src/windows/nsNativeDragTarget.cpp => widget/windows/nsNativeDragTarget.cpp rename : widget/src/windows/nsNativeDragTarget.h => widget/windows/nsNativeDragTarget.h rename : widget/src/windows/nsNativeThemeWin.cpp => widget/windows/nsNativeThemeWin.cpp rename : widget/src/windows/nsNativeThemeWin.h => widget/windows/nsNativeThemeWin.h rename : widget/src/windows/nsPrintOptionsWin.cpp => widget/windows/nsPrintOptionsWin.cpp rename : widget/src/windows/nsPrintOptionsWin.h => widget/windows/nsPrintOptionsWin.h rename : widget/src/windows/nsPrintSettingsWin.cpp => widget/windows/nsPrintSettingsWin.cpp rename : widget/src/windows/nsPrintSettingsWin.h => widget/windows/nsPrintSettingsWin.h rename : widget/src/windows/nsScreenManagerWin.cpp => widget/windows/nsScreenManagerWin.cpp rename : widget/src/windows/nsScreenManagerWin.h => widget/windows/nsScreenManagerWin.h rename : widget/src/windows/nsScreenWin.cpp => widget/windows/nsScreenWin.cpp rename : widget/src/windows/nsScreenWin.h => widget/windows/nsScreenWin.h rename : widget/src/windows/nsSound.cpp => widget/windows/nsSound.cpp rename : widget/src/windows/nsSound.h => widget/windows/nsSound.h rename : widget/src/windows/nsTextStore.cpp => widget/windows/nsTextStore.cpp rename : widget/src/windows/nsTextStore.h => widget/windows/nsTextStore.h rename : widget/src/windows/nsToolkit.cpp => widget/windows/nsToolkit.cpp rename : widget/src/windows/nsToolkit.h => widget/windows/nsToolkit.h rename : widget/src/windows/nsUXThemeConstants.h => widget/windows/nsUXThemeConstants.h rename : widget/src/windows/nsUXThemeData.cpp => widget/windows/nsUXThemeData.cpp rename : widget/src/windows/nsUXThemeData.h => widget/windows/nsUXThemeData.h rename : widget/src/windows/nsWinGesture.cpp => widget/windows/nsWinGesture.cpp rename : widget/src/windows/nsWinGesture.h => widget/windows/nsWinGesture.h rename : widget/src/windows/nsWindow.cpp => widget/windows/nsWindow.cpp rename : widget/src/windows/nsWindow.h => widget/windows/nsWindow.h rename : widget/src/windows/nsWindowDbg.cpp => widget/windows/nsWindowDbg.cpp rename : widget/src/windows/nsWindowDbg.h => widget/windows/nsWindowDbg.h rename : widget/src/windows/nsWindowDefs.h => widget/windows/nsWindowDefs.h rename : widget/src/windows/nsWindowGfx.cpp => widget/windows/nsWindowGfx.cpp rename : widget/src/windows/nsWindowGfx.h => widget/windows/nsWindowGfx.h rename : widget/src/windows/nsdefs.h => widget/windows/nsdefs.h rename : widget/src/windows/resource.h => widget/windows/resource.h rename : widget/src/windows/tests/Makefile.in => widget/windows/tests/Makefile.in rename : widget/src/windows/tests/TestWinDND.cpp => widget/windows/tests/TestWinDND.cpp rename : widget/src/xpwidgets/GfxDriverInfo.cpp => widget/xpwidgets/GfxDriverInfo.cpp rename : widget/src/xpwidgets/GfxDriverInfo.h => widget/xpwidgets/GfxDriverInfo.h rename : widget/src/xpwidgets/GfxInfoBase.cpp => widget/xpwidgets/GfxInfoBase.cpp rename : widget/src/xpwidgets/GfxInfoBase.h => widget/xpwidgets/GfxInfoBase.h rename : widget/src/xpwidgets/GfxInfoCollector.h => widget/xpwidgets/GfxInfoCollector.h rename : widget/src/xpwidgets/GfxInfoWebGL.cpp => widget/xpwidgets/GfxInfoWebGL.cpp rename : widget/src/xpwidgets/GfxInfoWebGL.h => widget/xpwidgets/GfxInfoWebGL.h rename : widget/src/xpwidgets/GfxInfoX11.cpp => widget/xpwidgets/GfxInfoX11.cpp rename : widget/src/xpwidgets/GfxInfoX11.h => widget/xpwidgets/GfxInfoX11.h rename : widget/src/xpwidgets/Makefile.in => widget/xpwidgets/Makefile.in rename : widget/src/xpwidgets/PuppetWidget.cpp => widget/xpwidgets/PuppetWidget.cpp rename : widget/src/xpwidgets/PuppetWidget.h => widget/xpwidgets/PuppetWidget.h rename : widget/src/xpwidgets/nsAppShellSingleton.h => widget/xpwidgets/nsAppShellSingleton.h rename : widget/src/xpwidgets/nsBaseAppShell.cpp => widget/xpwidgets/nsBaseAppShell.cpp rename : widget/src/xpwidgets/nsBaseAppShell.h => widget/xpwidgets/nsBaseAppShell.h rename : widget/src/xpwidgets/nsBaseClipboard.cpp => widget/xpwidgets/nsBaseClipboard.cpp rename : widget/src/xpwidgets/nsBaseClipboard.h => widget/xpwidgets/nsBaseClipboard.h rename : widget/src/xpwidgets/nsBaseDragService.cpp => widget/xpwidgets/nsBaseDragService.cpp rename : widget/src/xpwidgets/nsBaseDragService.h => widget/xpwidgets/nsBaseDragService.h rename : widget/src/xpwidgets/nsBaseFilePicker.cpp => widget/xpwidgets/nsBaseFilePicker.cpp rename : widget/src/xpwidgets/nsBaseFilePicker.h => widget/xpwidgets/nsBaseFilePicker.h rename : widget/src/xpwidgets/nsBaseWidget.cpp => widget/xpwidgets/nsBaseWidget.cpp rename : widget/src/xpwidgets/nsBaseWidget.h => widget/xpwidgets/nsBaseWidget.h rename : widget/src/xpwidgets/nsClipboardHelper.cpp => widget/xpwidgets/nsClipboardHelper.cpp rename : widget/src/xpwidgets/nsClipboardHelper.h => widget/xpwidgets/nsClipboardHelper.h rename : widget/src/xpwidgets/nsClipboardPrivacyHandler.cpp => widget/xpwidgets/nsClipboardPrivacyHandler.cpp rename : widget/src/xpwidgets/nsClipboardPrivacyHandler.h => widget/xpwidgets/nsClipboardPrivacyHandler.h rename : widget/src/xpwidgets/nsFilePickerProxy.cpp => widget/xpwidgets/nsFilePickerProxy.cpp rename : widget/src/xpwidgets/nsFilePickerProxy.h => widget/xpwidgets/nsFilePickerProxy.h rename : widget/src/xpwidgets/nsHTMLFormatConverter.cpp => widget/xpwidgets/nsHTMLFormatConverter.cpp rename : widget/src/xpwidgets/nsHTMLFormatConverter.h => widget/xpwidgets/nsHTMLFormatConverter.h rename : widget/src/xpwidgets/nsIdleService.cpp => widget/xpwidgets/nsIdleService.cpp rename : widget/src/xpwidgets/nsIdleService.h => widget/xpwidgets/nsIdleService.h rename : widget/src/xpwidgets/nsNativeTheme.cpp => widget/xpwidgets/nsNativeTheme.cpp rename : widget/src/xpwidgets/nsNativeTheme.h => widget/xpwidgets/nsNativeTheme.h rename : widget/src/xpwidgets/nsPrimitiveHelpers.cpp => widget/xpwidgets/nsPrimitiveHelpers.cpp rename : widget/src/xpwidgets/nsPrimitiveHelpers.h => widget/xpwidgets/nsPrimitiveHelpers.h rename : widget/src/xpwidgets/nsPrintOptionsImpl.cpp => widget/xpwidgets/nsPrintOptionsImpl.cpp rename : widget/src/xpwidgets/nsPrintOptionsImpl.h => widget/xpwidgets/nsPrintOptionsImpl.h rename : widget/src/xpwidgets/nsPrintSession.cpp => widget/xpwidgets/nsPrintSession.cpp rename : widget/src/xpwidgets/nsPrintSession.h => widget/xpwidgets/nsPrintSession.h rename : widget/src/xpwidgets/nsPrintSettingsImpl.cpp => widget/xpwidgets/nsPrintSettingsImpl.cpp rename : widget/src/xpwidgets/nsPrintSettingsImpl.h => widget/xpwidgets/nsPrintSettingsImpl.h rename : widget/src/xpwidgets/nsTransferable.cpp => widget/xpwidgets/nsTransferable.cpp rename : widget/src/xpwidgets/nsTransferable.h => widget/xpwidgets/nsTransferable.h rename : widget/src/xpwidgets/nsXPLookAndFeel.cpp => widget/xpwidgets/nsXPLookAndFeel.cpp rename : widget/src/xpwidgets/nsXPLookAndFeel.h => widget/xpwidgets/nsXPLookAndFeel.h rename : widget/src/xremoteclient/Makefile.in => widget/xremoteclient/Makefile.in rename : widget/src/xremoteclient/XRemoteClient.cpp => widget/xremoteclient/XRemoteClient.cpp rename : widget/src/xremoteclient/XRemoteClient.h => widget/xremoteclient/XRemoteClient.h rename : widget/src/xremoteclient/XRemoteClientFactory.cpp => widget/xremoteclient/XRemoteClientFactory.cpp rename : widget/src/xremoteclient/mozilla-xremote-client.cpp => widget/xremoteclient/mozilla-xremote-client.cpp rename : widget/src/xremoteclient/nsRemoteClient.h => widget/xremoteclient/nsRemoteClient.h
1009 lines
34 KiB
Plaintext
1009 lines
34 KiB
Plaintext
/* -*- 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):
|
|
* Josh Aas <josh@mozilla.com>
|
|
* Thomas K. Dyas <tom.dyas@gmail.com>
|
|
*
|
|
* 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 <objc/objc-runtime.h>
|
|
|
|
#include "nsMenuBarX.h"
|
|
#include "nsMenuX.h"
|
|
#include "nsMenuItemX.h"
|
|
#include "nsMenuUtilsX.h"
|
|
#include "nsCocoaUtils.h"
|
|
#include "nsCocoaWindow.h"
|
|
#include "nsToolkit.h"
|
|
#include "nsChildView.h"
|
|
|
|
#include "nsCOMPtr.h"
|
|
#include "nsString.h"
|
|
#include "nsGkAtoms.h"
|
|
#include "nsGUIEvent.h"
|
|
#include "nsObjCExceptions.h"
|
|
#include "nsHashtable.h"
|
|
#include "nsThreadUtils.h"
|
|
|
|
#include "nsIContent.h"
|
|
#include "nsIWidget.h"
|
|
#include "nsIDocument.h"
|
|
#include "nsIDOMDocument.h"
|
|
#include "nsIDOMElement.h"
|
|
|
|
NativeMenuItemTarget* nsMenuBarX::sNativeEventTarget = nil;
|
|
nsMenuBarX* nsMenuBarX::sLastGeckoMenuBarPainted = nsnull;
|
|
NSMenu* sApplicationMenu = nil;
|
|
BOOL gSomeMenuBarPainted = NO;
|
|
|
|
// We keep references to the first quit and pref item content nodes we find, which
|
|
// will be from the hidden window. We use these when the document for the current
|
|
// window does not have a quit or pref item. We don't need strong refs here because
|
|
// these items are always strong ref'd by their owning menu bar (instance variable).
|
|
static nsIContent* sAboutItemContent = nsnull;
|
|
static nsIContent* sUpdateItemContent = nsnull;
|
|
static nsIContent* sPrefItemContent = nsnull;
|
|
static nsIContent* sQuitItemContent = nsnull;
|
|
|
|
NS_IMPL_ISUPPORTS1(nsNativeMenuServiceX, nsINativeMenuService)
|
|
|
|
NS_IMETHODIMP nsNativeMenuServiceX::CreateNativeMenuBar(nsIWidget* aParent, nsIContent* aMenuBarNode)
|
|
{
|
|
NS_ASSERTION(NS_IsMainThread(), "Attempting to create native menu bar on wrong thread!");
|
|
|
|
nsRefPtr<nsMenuBarX> mb = new nsMenuBarX();
|
|
if (!mb)
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
|
|
return mb->Create(aParent, aMenuBarNode);
|
|
}
|
|
|
|
nsMenuBarX::nsMenuBarX()
|
|
: nsMenuGroupOwnerX(), mParentWindow(nsnull)
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
mNativeMenu = [[GeckoNSMenu alloc] initWithTitle:@"MainMenuBar"];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
nsMenuBarX::~nsMenuBarX()
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
if (nsMenuBarX::sLastGeckoMenuBarPainted == this)
|
|
nsMenuBarX::sLastGeckoMenuBarPainted = nsnull;
|
|
|
|
// the quit/pref items of a random window might have been used if there was no
|
|
// hidden window, thus we need to invalidate the weak references.
|
|
if (sAboutItemContent == mAboutItemContent)
|
|
sAboutItemContent = nsnull;
|
|
if (sUpdateItemContent == mUpdateItemContent)
|
|
sUpdateItemContent = nsnull;
|
|
if (sQuitItemContent == mQuitItemContent)
|
|
sQuitItemContent = nsnull;
|
|
if (sPrefItemContent == mPrefItemContent)
|
|
sPrefItemContent = nsnull;
|
|
|
|
// make sure we unregister ourselves as a content observer
|
|
UnregisterForContentChanges(mContent);
|
|
|
|
// We have to manually clear the array here because clearing causes menu items
|
|
// to call back into the menu bar to unregister themselves. We don't want to
|
|
// depend on member variable ordering to ensure that the array gets cleared
|
|
// before the registration hash table is destroyed.
|
|
mMenuArray.Clear();
|
|
|
|
[mNativeMenu release];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
nsresult nsMenuBarX::Create(nsIWidget* aParent, nsIContent* aContent)
|
|
{
|
|
if (!aParent || !aContent)
|
|
return NS_ERROR_INVALID_ARG;
|
|
|
|
mParentWindow = aParent;
|
|
mContent = aContent;
|
|
|
|
AquifyMenuBar();
|
|
|
|
nsresult rv = nsMenuGroupOwnerX::Create(aContent);
|
|
if (NS_FAILED(rv))
|
|
return rv;
|
|
|
|
RegisterForContentChanges(aContent, this);
|
|
|
|
ConstructNativeMenus();
|
|
|
|
// Give this to the parent window. The parent takes ownership.
|
|
static_cast<nsCocoaWindow*>(mParentWindow)->SetMenuBar(this);
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
void nsMenuBarX::ConstructNativeMenus()
|
|
{
|
|
PRUint32 count = mContent->GetChildCount();
|
|
for (PRUint32 i = 0; i < count; i++) {
|
|
nsIContent *menuContent = mContent->GetChildAt(i);
|
|
if (menuContent &&
|
|
menuContent->Tag() == nsGkAtoms::menu &&
|
|
menuContent->IsXUL()) {
|
|
nsMenuX* newMenu = new nsMenuX();
|
|
if (newMenu) {
|
|
nsresult rv = newMenu->Create(this, this, menuContent);
|
|
if (NS_SUCCEEDED(rv))
|
|
InsertMenuAtIndex(newMenu, GetMenuCount());
|
|
else
|
|
delete newMenu;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
PRUint32 nsMenuBarX::GetMenuCount()
|
|
{
|
|
return mMenuArray.Length();
|
|
}
|
|
|
|
bool nsMenuBarX::MenuContainsAppMenu()
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN;
|
|
|
|
return ([mNativeMenu numberOfItems] > 0 &&
|
|
[[mNativeMenu itemAtIndex:0] submenu] == sApplicationMenu);
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(false);
|
|
}
|
|
|
|
nsresult nsMenuBarX::InsertMenuAtIndex(nsMenuX* aMenu, PRUint32 aIndex)
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
|
|
|
// If we haven't created a global Application menu yet, do it.
|
|
if (!sApplicationMenu) {
|
|
nsresult rv = NS_OK; // avoid warning about rv being unused
|
|
rv = CreateApplicationMenu(aMenu);
|
|
NS_ASSERTION(NS_SUCCEEDED(rv), "Can't create Application menu");
|
|
|
|
// Hook the new Application menu up to the menu bar.
|
|
NSMenu* mainMenu = [NSApp mainMenu];
|
|
NS_ASSERTION([mainMenu numberOfItems] > 0, "Main menu does not have any items, something is terribly wrong!");
|
|
[[mainMenu itemAtIndex:0] setSubmenu:sApplicationMenu];
|
|
}
|
|
|
|
// add menu to array that owns our menus
|
|
mMenuArray.InsertElementAt(aIndex, aMenu);
|
|
|
|
// hook up submenus
|
|
nsIContent* menuContent = aMenu->Content();
|
|
if (menuContent->GetChildCount() > 0 &&
|
|
!nsMenuUtilsX::NodeIsHiddenOrCollapsed(menuContent)) {
|
|
int insertionIndex = nsMenuUtilsX::CalculateNativeInsertionPoint(this, aMenu);
|
|
if (MenuContainsAppMenu())
|
|
insertionIndex++;
|
|
[mNativeMenu insertItem:aMenu->NativeMenuItem() atIndex:insertionIndex];
|
|
}
|
|
|
|
return NS_OK;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
|
}
|
|
|
|
void nsMenuBarX::RemoveMenuAtIndex(PRUint32 aIndex)
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
NS_ASSERTION(aIndex < mMenuArray.Length(), "Attempting submenu removal with bad index!");
|
|
|
|
// Our native menu and our internal menu object array might be out of sync.
|
|
// This happens, for example, when a submenu is hidden. Because of this we
|
|
// should not assume that a native submenu is hooked up.
|
|
NSMenuItem* nativeMenuItem = mMenuArray[aIndex]->NativeMenuItem();
|
|
int nativeMenuItemIndex = [mNativeMenu indexOfItem:nativeMenuItem];
|
|
if (nativeMenuItemIndex != -1)
|
|
[mNativeMenu removeItemAtIndex:nativeMenuItemIndex];
|
|
|
|
mMenuArray.RemoveElementAt(aIndex);
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
void nsMenuBarX::ObserveAttributeChanged(nsIDocument* aDocument,
|
|
nsIContent* aContent,
|
|
nsIAtom* aAttribute)
|
|
{
|
|
}
|
|
|
|
void nsMenuBarX::ObserveContentRemoved(nsIDocument* aDocument,
|
|
nsIContent* aChild,
|
|
PRInt32 aIndexInContainer)
|
|
{
|
|
RemoveMenuAtIndex(aIndexInContainer);
|
|
}
|
|
|
|
void nsMenuBarX::ObserveContentInserted(nsIDocument* aDocument,
|
|
nsIContent* aContainer,
|
|
nsIContent* aChild)
|
|
{
|
|
nsMenuX* newMenu = new nsMenuX();
|
|
if (newMenu) {
|
|
nsresult rv = newMenu->Create(this, this, aChild);
|
|
if (NS_SUCCEEDED(rv))
|
|
InsertMenuAtIndex(newMenu, aContainer->IndexOf(aChild));
|
|
else
|
|
delete newMenu;
|
|
}
|
|
}
|
|
|
|
void nsMenuBarX::ForceUpdateNativeMenuAt(const nsAString& indexString)
|
|
{
|
|
NSString* locationString = [NSString stringWithCharacters:indexString.BeginReading() length:indexString.Length()];
|
|
NSArray* indexes = [locationString componentsSeparatedByString:@"|"];
|
|
unsigned int indexCount = [indexes count];
|
|
if (indexCount == 0)
|
|
return;
|
|
|
|
nsMenuX* currentMenu = NULL;
|
|
int targetIndex = [[indexes objectAtIndex:0] intValue];
|
|
int visible = 0;
|
|
PRUint32 length = mMenuArray.Length();
|
|
// first find a menu in the menu bar
|
|
for (unsigned int i = 0; i < length; i++) {
|
|
nsMenuX* menu = mMenuArray[i];
|
|
if (!nsMenuUtilsX::NodeIsHiddenOrCollapsed(menu->Content())) {
|
|
visible++;
|
|
if (visible == (targetIndex + 1)) {
|
|
currentMenu = menu;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!currentMenu)
|
|
return;
|
|
|
|
// fake open/close to cause lazy update to happen so submenus populate
|
|
currentMenu->MenuOpened();
|
|
currentMenu->MenuClosed();
|
|
|
|
// now find the correct submenu
|
|
for (unsigned int i = 1; currentMenu && i < indexCount; i++) {
|
|
targetIndex = [[indexes objectAtIndex:i] intValue];
|
|
visible = 0;
|
|
length = currentMenu->GetItemCount();
|
|
for (unsigned int j = 0; j < length; j++) {
|
|
nsMenuObjectX* targetMenu = currentMenu->GetItemAt(j);
|
|
if (!targetMenu)
|
|
return;
|
|
if (!nsMenuUtilsX::NodeIsHiddenOrCollapsed(targetMenu->Content())) {
|
|
visible++;
|
|
if (targetMenu->MenuObjectType() == eSubmenuObjectType && visible == (targetIndex + 1)) {
|
|
currentMenu = static_cast<nsMenuX*>(targetMenu);
|
|
// fake open/close to cause lazy update to happen
|
|
currentMenu->MenuOpened();
|
|
currentMenu->MenuClosed();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Calling this forces a full reload of the menu system, reloading all native
|
|
// menus and their items.
|
|
// Without this testing is hard because changes to the DOM affect the native
|
|
// menu system lazily.
|
|
void nsMenuBarX::ForceNativeMenuReload()
|
|
{
|
|
// tear down everything
|
|
while (GetMenuCount() > 0)
|
|
RemoveMenuAtIndex(0);
|
|
|
|
// construct everything
|
|
ConstructNativeMenus();
|
|
}
|
|
|
|
nsMenuX* nsMenuBarX::GetMenuAt(PRUint32 aIndex)
|
|
{
|
|
if (mMenuArray.Length() <= aIndex) {
|
|
NS_ERROR("Requesting menu at invalid index!");
|
|
return NULL;
|
|
}
|
|
return mMenuArray[aIndex];
|
|
}
|
|
|
|
nsMenuX* nsMenuBarX::GetXULHelpMenu()
|
|
{
|
|
// The Help menu is usually (always?) the last one, so we start there and
|
|
// count back.
|
|
for (PRInt32 i = GetMenuCount() - 1; i >= 0; --i) {
|
|
nsMenuX* aMenu = GetMenuAt(i);
|
|
if (aMenu && nsMenuX::IsXULHelpMenu(aMenu->Content()))
|
|
return aMenu;
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
// On SnowLeopard and later we must tell the OS which is our Help menu.
|
|
// Otherwise it will only add Spotlight for Help (the Search item) to our
|
|
// Help menu if its label/title is "Help" -- i.e. if the menu is in English.
|
|
// This resolves bugs 489196 and 539317.
|
|
void nsMenuBarX::SetSystemHelpMenu()
|
|
{
|
|
if (!nsToolkit::OnSnowLeopardOrLater())
|
|
return;
|
|
nsMenuX* xulHelpMenu = GetXULHelpMenu();
|
|
if (xulHelpMenu) {
|
|
NSMenu* helpMenu = (NSMenu*)xulHelpMenu->NativeData();
|
|
if (helpMenu)
|
|
[NSApp setHelpMenu:helpMenu];
|
|
}
|
|
}
|
|
|
|
nsresult nsMenuBarX::Paint()
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
|
|
|
// Don't try to optimize anything in this painting by checking
|
|
// sLastGeckoMenuBarPainted because the menubar can be manipulated by
|
|
// native dialogs and sheet code and other things besides this paint method.
|
|
|
|
// We have to keep the same menu item for the Application menu so we keep
|
|
// passing it along.
|
|
NSMenu* outgoingMenu = [NSApp mainMenu];
|
|
NS_ASSERTION([outgoingMenu numberOfItems] > 0, "Main menu does not have any items, something is terribly wrong!");
|
|
|
|
NSMenuItem* appMenuItem = [[outgoingMenu itemAtIndex:0] retain];
|
|
[outgoingMenu removeItemAtIndex:0];
|
|
[mNativeMenu insertItem:appMenuItem atIndex:0];
|
|
[appMenuItem release];
|
|
|
|
// Set menu bar and event target.
|
|
[NSApp setMainMenu:mNativeMenu];
|
|
SetSystemHelpMenu();
|
|
nsMenuBarX::sLastGeckoMenuBarPainted = this;
|
|
|
|
gSomeMenuBarPainted = YES;
|
|
|
|
return NS_OK;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
|
}
|
|
|
|
// Returns the 'key' attribute of the 'shortcutID' object (if any) in the
|
|
// currently active menubar's DOM document. 'shortcutID' should be the id
|
|
// (i.e. the name) of a component that defines a commonly used (and
|
|
// localized) cmd+key shortcut, and belongs to a keyset containing similar
|
|
// objects. For example "key_selectAll". Returns a value that can be
|
|
// compared to the first character of [NSEvent charactersIgnoringModifiers]
|
|
// when [NSEvent modifierFlags] == NSCommandKeyMask.
|
|
char nsMenuBarX::GetLocalizedAccelKey(const char *shortcutID)
|
|
{
|
|
if (!sLastGeckoMenuBarPainted)
|
|
return 0;
|
|
|
|
nsCOMPtr<nsIDOMDocument> domDoc(do_QueryInterface(sLastGeckoMenuBarPainted->mDocument));
|
|
if (!domDoc)
|
|
return 0;
|
|
|
|
NS_ConvertASCIItoUTF16 shortcutIDStr((const char *)shortcutID);
|
|
nsCOMPtr<nsIDOMElement> shortcutElement;
|
|
domDoc->GetElementById(shortcutIDStr, getter_AddRefs(shortcutElement));
|
|
nsCOMPtr<nsIContent> shortcutContent = do_QueryInterface(shortcutElement);
|
|
if (!shortcutContent)
|
|
return 0;
|
|
|
|
nsAutoString key;
|
|
shortcutContent->GetAttr(kNameSpaceID_None, nsGkAtoms::key, key);
|
|
NS_LossyConvertUTF16toASCII keyASC(key.get());
|
|
const char *keyASCPtr = keyASC.get();
|
|
if (!keyASCPtr)
|
|
return 0;
|
|
// If keyID's 'key' attribute isn't exactly one character long, it's not
|
|
// what we're looking for.
|
|
if (strlen(keyASCPtr) != sizeof(char))
|
|
return 0;
|
|
// Make sure retval is lower case.
|
|
char retval = tolower(keyASCPtr[0]);
|
|
|
|
return retval;
|
|
}
|
|
|
|
// Hide the item in the menu by setting the 'hidden' attribute. Returns it in |outHiddenNode| so
|
|
// the caller can hang onto it if they so choose. It is acceptable to pass nsull
|
|
// for |outHiddenNode| if the caller doesn't care about the hidden node.
|
|
void nsMenuBarX::HideItem(nsIDOMDocument* inDoc, const nsAString & inID, nsIContent** outHiddenNode)
|
|
{
|
|
nsCOMPtr<nsIDOMElement> menuItem;
|
|
inDoc->GetElementById(inID, getter_AddRefs(menuItem));
|
|
nsCOMPtr<nsIContent> menuContent(do_QueryInterface(menuItem));
|
|
if (menuContent) {
|
|
menuContent->SetAttr(kNameSpaceID_None, nsGkAtoms::hidden, NS_LITERAL_STRING("true"), false);
|
|
if (outHiddenNode) {
|
|
*outHiddenNode = menuContent.get();
|
|
NS_IF_ADDREF(*outHiddenNode);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Do what is necessary to conform to the Aqua guidelines for menus.
|
|
void nsMenuBarX::AquifyMenuBar()
|
|
{
|
|
nsCOMPtr<nsIDOMDocument> domDoc(do_QueryInterface(mContent->GetDocument()));
|
|
if (domDoc) {
|
|
// remove the "About..." item and its separator
|
|
HideItem(domDoc, NS_LITERAL_STRING("aboutSeparator"), nsnull);
|
|
HideItem(domDoc, NS_LITERAL_STRING("aboutName"), getter_AddRefs(mAboutItemContent));
|
|
if (!sAboutItemContent)
|
|
sAboutItemContent = mAboutItemContent;
|
|
|
|
// Hide the software update menu item, since it belongs in the application
|
|
// menu on Mac OS X.
|
|
HideItem(domDoc, NS_LITERAL_STRING("updateSeparator"), nsnull);
|
|
HideItem(domDoc, NS_LITERAL_STRING("checkForUpdates"), getter_AddRefs(mUpdateItemContent));
|
|
if (!sUpdateItemContent)
|
|
sUpdateItemContent = mUpdateItemContent;
|
|
|
|
// remove quit item and its separator
|
|
HideItem(domDoc, NS_LITERAL_STRING("menu_FileQuitSeparator"), nsnull);
|
|
HideItem(domDoc, NS_LITERAL_STRING("menu_FileQuitItem"), getter_AddRefs(mQuitItemContent));
|
|
if (!sQuitItemContent)
|
|
sQuitItemContent = mQuitItemContent;
|
|
|
|
// remove prefs item and its separator, but save off the pref content node
|
|
// so we can invoke its command later.
|
|
HideItem(domDoc, NS_LITERAL_STRING("menu_PrefsSeparator"), nsnull);
|
|
HideItem(domDoc, NS_LITERAL_STRING("menu_preferences"), getter_AddRefs(mPrefItemContent));
|
|
if (!sPrefItemContent)
|
|
sPrefItemContent = mPrefItemContent;
|
|
|
|
// hide items that we use for the Application menu
|
|
HideItem(domDoc, NS_LITERAL_STRING("menu_mac_services"), nsnull);
|
|
HideItem(domDoc, NS_LITERAL_STRING("menu_mac_hide_app"), nsnull);
|
|
HideItem(domDoc, NS_LITERAL_STRING("menu_mac_hide_others"), nsnull);
|
|
HideItem(domDoc, NS_LITERAL_STRING("menu_mac_show_all"), nsnull);
|
|
}
|
|
}
|
|
|
|
// for creating menu items destined for the Application menu
|
|
NSMenuItem* nsMenuBarX::CreateNativeAppMenuItem(nsMenuX* inMenu, const nsAString& nodeID, SEL action,
|
|
int tag, NativeMenuItemTarget* target)
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
nsCOMPtr<nsIDocument> doc = inMenu->Content()->GetDocument();
|
|
if (!doc)
|
|
return nil;
|
|
|
|
nsCOMPtr<nsIDOMDocument> domdoc(do_QueryInterface(doc));
|
|
if (!domdoc)
|
|
return nil;
|
|
|
|
// Get information from the gecko menu item
|
|
nsAutoString label;
|
|
nsAutoString modifiers;
|
|
nsAutoString key;
|
|
nsCOMPtr<nsIDOMElement> menuItem;
|
|
domdoc->GetElementById(nodeID, getter_AddRefs(menuItem));
|
|
if (menuItem) {
|
|
menuItem->GetAttribute(NS_LITERAL_STRING("label"), label);
|
|
menuItem->GetAttribute(NS_LITERAL_STRING("modifiers"), modifiers);
|
|
menuItem->GetAttribute(NS_LITERAL_STRING("key"), key);
|
|
}
|
|
else {
|
|
return nil;
|
|
}
|
|
|
|
// Get more information about the key equivalent. Start by
|
|
// finding the key node we need.
|
|
NSString* keyEquiv = nil;
|
|
unsigned int macKeyModifiers = 0;
|
|
if (!key.IsEmpty()) {
|
|
nsCOMPtr<nsIDOMElement> keyElement;
|
|
domdoc->GetElementById(key, getter_AddRefs(keyElement));
|
|
if (keyElement) {
|
|
nsCOMPtr<nsIContent> keyContent (do_QueryInterface(keyElement));
|
|
// first grab the key equivalent character
|
|
nsAutoString keyChar(NS_LITERAL_STRING(" "));
|
|
keyContent->GetAttr(kNameSpaceID_None, nsGkAtoms::key, keyChar);
|
|
if (!keyChar.EqualsLiteral(" ")) {
|
|
keyEquiv = [[NSString stringWithCharacters:keyChar.get() length:keyChar.Length()] lowercaseString];
|
|
}
|
|
// now grab the key equivalent modifiers
|
|
nsAutoString modifiersStr;
|
|
keyContent->GetAttr(kNameSpaceID_None, nsGkAtoms::modifiers, modifiersStr);
|
|
PRUint8 geckoModifiers = nsMenuUtilsX::GeckoModifiersForNodeAttribute(modifiersStr);
|
|
macKeyModifiers = nsMenuUtilsX::MacModifiersForGeckoModifiers(geckoModifiers);
|
|
}
|
|
}
|
|
// get the label into NSString-form
|
|
NSString* labelString = [NSString stringWithCharacters:label.get() length:label.Length()];
|
|
|
|
if (!labelString)
|
|
labelString = @"";
|
|
if (!keyEquiv)
|
|
keyEquiv = @"";
|
|
|
|
// put together the actual NSMenuItem
|
|
NSMenuItem* newMenuItem = [[NSMenuItem alloc] initWithTitle:labelString action:action keyEquivalent:keyEquiv];
|
|
|
|
[newMenuItem setTag:tag];
|
|
[newMenuItem setTarget:target];
|
|
[newMenuItem setKeyEquivalentModifierMask:macKeyModifiers];
|
|
|
|
MenuItemInfo * info = [[MenuItemInfo alloc] initWithMenuGroupOwner:this];
|
|
[newMenuItem setRepresentedObject:info];
|
|
[info release];
|
|
|
|
return newMenuItem;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
// build the Application menu shared by all menu bars
|
|
nsresult nsMenuBarX::CreateApplicationMenu(nsMenuX* inMenu)
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
|
|
|
// At this point, the application menu is the application menu from
|
|
// the nib in cocoa widgets. We do not have a way to create an application
|
|
// menu manually, so we grab the one from the nib and use that.
|
|
sApplicationMenu = [[[[NSApp mainMenu] itemAtIndex:0] submenu] retain];
|
|
|
|
/*
|
|
We support the following menu items here:
|
|
|
|
Menu Item DOM Node ID Notes
|
|
|
|
========================
|
|
= About This App = <- aboutName
|
|
= Check for Updates... = <- checkForUpdates
|
|
========================
|
|
= Preferences... = <- menu_preferences
|
|
========================
|
|
= Services > = <- menu_mac_services <- (do not define key equivalent)
|
|
========================
|
|
= Hide App = <- menu_mac_hide_app
|
|
= Hide Others = <- menu_mac_hide_others
|
|
= Show All = <- menu_mac_show_all
|
|
========================
|
|
= Quit = <- menu_FileQuitItem
|
|
========================
|
|
|
|
If any of them are ommitted from the application's DOM, we just don't add
|
|
them. We always add a "Quit" item, but if an app developer does not provide a
|
|
DOM node with the right ID for the Quit item, we add it in English. App
|
|
developers need only add each node with a label and a key equivalent (if they
|
|
want one). Other attributes are optional. Like so:
|
|
|
|
<menuitem id="menu_preferences"
|
|
label="&preferencesCmdMac.label;"
|
|
key="open_prefs_key"/>
|
|
|
|
We need to use this system for localization purposes, until we have a better way
|
|
to define the Application menu to be used on Mac OS X.
|
|
*/
|
|
|
|
if (sApplicationMenu) {
|
|
// This code reads attributes we are going to care about from the DOM elements
|
|
|
|
NSMenuItem *itemBeingAdded = nil;
|
|
BOOL addAboutSeparator = FALSE;
|
|
|
|
// Add the About menu item
|
|
itemBeingAdded = CreateNativeAppMenuItem(inMenu, NS_LITERAL_STRING("aboutName"), @selector(menuItemHit:),
|
|
eCommand_ID_About, nsMenuBarX::sNativeEventTarget);
|
|
if (itemBeingAdded) {
|
|
[sApplicationMenu addItem:itemBeingAdded];
|
|
[itemBeingAdded release];
|
|
itemBeingAdded = nil;
|
|
|
|
addAboutSeparator = TRUE;
|
|
}
|
|
|
|
// Add the software update menu item
|
|
itemBeingAdded = CreateNativeAppMenuItem(inMenu, NS_LITERAL_STRING("checkForUpdates"), @selector(menuItemHit:),
|
|
eCommand_ID_Update, nsMenuBarX::sNativeEventTarget);
|
|
if (itemBeingAdded) {
|
|
[sApplicationMenu addItem:itemBeingAdded];
|
|
[itemBeingAdded release];
|
|
itemBeingAdded = nil;
|
|
|
|
addAboutSeparator = TRUE;
|
|
}
|
|
|
|
// Add separator if either the About item or software update item exists
|
|
if (addAboutSeparator)
|
|
[sApplicationMenu addItem:[NSMenuItem separatorItem]];
|
|
|
|
// Add the Preferences menu item
|
|
itemBeingAdded = CreateNativeAppMenuItem(inMenu, NS_LITERAL_STRING("menu_preferences"), @selector(menuItemHit:),
|
|
eCommand_ID_Prefs, nsMenuBarX::sNativeEventTarget);
|
|
if (itemBeingAdded) {
|
|
[sApplicationMenu addItem:itemBeingAdded];
|
|
[itemBeingAdded release];
|
|
itemBeingAdded = nil;
|
|
|
|
// Add separator after Preferences menu
|
|
[sApplicationMenu addItem:[NSMenuItem separatorItem]];
|
|
}
|
|
|
|
// Add Services menu item
|
|
itemBeingAdded = CreateNativeAppMenuItem(inMenu, NS_LITERAL_STRING("menu_mac_services"), nil,
|
|
0, nil);
|
|
if (itemBeingAdded) {
|
|
[sApplicationMenu addItem:itemBeingAdded];
|
|
|
|
// set this menu item up as the Mac OS X Services menu
|
|
NSMenu* servicesMenu = [[GeckoServicesNSMenu alloc] initWithTitle:@""];
|
|
[itemBeingAdded setSubmenu:servicesMenu];
|
|
[NSApp setServicesMenu:servicesMenu];
|
|
|
|
[itemBeingAdded release];
|
|
itemBeingAdded = nil;
|
|
|
|
// Add separator after Services menu
|
|
[sApplicationMenu addItem:[NSMenuItem separatorItem]];
|
|
}
|
|
|
|
BOOL addHideShowSeparator = FALSE;
|
|
|
|
// Add menu item to hide this application
|
|
itemBeingAdded = CreateNativeAppMenuItem(inMenu, NS_LITERAL_STRING("menu_mac_hide_app"), @selector(menuItemHit:),
|
|
eCommand_ID_HideApp, nsMenuBarX::sNativeEventTarget);
|
|
if (itemBeingAdded) {
|
|
[sApplicationMenu addItem:itemBeingAdded];
|
|
[itemBeingAdded release];
|
|
itemBeingAdded = nil;
|
|
|
|
addHideShowSeparator = TRUE;
|
|
}
|
|
|
|
// Add menu item to hide other applications
|
|
itemBeingAdded = CreateNativeAppMenuItem(inMenu, NS_LITERAL_STRING("menu_mac_hide_others"), @selector(menuItemHit:),
|
|
eCommand_ID_HideOthers, nsMenuBarX::sNativeEventTarget);
|
|
if (itemBeingAdded) {
|
|
[sApplicationMenu addItem:itemBeingAdded];
|
|
[itemBeingAdded release];
|
|
itemBeingAdded = nil;
|
|
|
|
addHideShowSeparator = TRUE;
|
|
}
|
|
|
|
// Add menu item to show all applications
|
|
itemBeingAdded = CreateNativeAppMenuItem(inMenu, NS_LITERAL_STRING("menu_mac_show_all"), @selector(menuItemHit:),
|
|
eCommand_ID_ShowAll, nsMenuBarX::sNativeEventTarget);
|
|
if (itemBeingAdded) {
|
|
[sApplicationMenu addItem:itemBeingAdded];
|
|
[itemBeingAdded release];
|
|
itemBeingAdded = nil;
|
|
|
|
addHideShowSeparator = TRUE;
|
|
}
|
|
|
|
// Add a separator after the hide/show menus if at least one exists
|
|
if (addHideShowSeparator)
|
|
[sApplicationMenu addItem:[NSMenuItem separatorItem]];
|
|
|
|
// Add quit menu item
|
|
itemBeingAdded = CreateNativeAppMenuItem(inMenu, NS_LITERAL_STRING("menu_FileQuitItem"), @selector(menuItemHit:),
|
|
eCommand_ID_Quit, nsMenuBarX::sNativeEventTarget);
|
|
if (itemBeingAdded) {
|
|
[sApplicationMenu addItem:itemBeingAdded];
|
|
[itemBeingAdded release];
|
|
itemBeingAdded = nil;
|
|
}
|
|
else {
|
|
// the current application does not have a DOM node for "Quit". Add one
|
|
// anyway, in English.
|
|
NSMenuItem* defaultQuitItem = [[[NSMenuItem alloc] initWithTitle:@"Quit" action:@selector(menuItemHit:)
|
|
keyEquivalent:@"q"] autorelease];
|
|
[defaultQuitItem setTarget:nsMenuBarX::sNativeEventTarget];
|
|
[defaultQuitItem setTag:eCommand_ID_Quit];
|
|
[sApplicationMenu addItem:defaultQuitItem];
|
|
}
|
|
}
|
|
|
|
return (sApplicationMenu) ? NS_OK : NS_ERROR_FAILURE;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
|
}
|
|
|
|
void nsMenuBarX::SetParent(nsIWidget* aParent)
|
|
{
|
|
mParentWindow = aParent;
|
|
}
|
|
|
|
|
|
//
|
|
// Objective-C class used to allow us to have keyboard commands
|
|
// look like they are doing something but actually do nothing.
|
|
// We allow mouse actions to work normally.
|
|
//
|
|
|
|
// Controls whether or not native menu items should invoke their commands.
|
|
static BOOL gMenuItemsExecuteCommands = YES;
|
|
|
|
@implementation GeckoNSMenu
|
|
|
|
// Keyboard commands should not cause menu items to invoke their
|
|
// commands when there is a key window because we'd rather send
|
|
// the keyboard command to the window. We still have the menus
|
|
// go through the mechanics so they'll give the proper visual
|
|
// feedback.
|
|
- (BOOL)performKeyEquivalent:(NSEvent *)theEvent
|
|
{
|
|
// We've noticed that Mac OS X expects this check in subclasses before
|
|
// calling NSMenu's "performKeyEquivalent:".
|
|
//
|
|
// There is no case in which we'd need to do anything or return YES
|
|
// when we have no items so we can just do this check first.
|
|
if ([self numberOfItems] <= 0) {
|
|
return NO;
|
|
}
|
|
|
|
NSWindow *keyWindow = [NSApp keyWindow];
|
|
|
|
// If there is no key window then just behave normally. This
|
|
// probably means that this menu is associated with Gecko's
|
|
// hidden window.
|
|
if (!keyWindow) {
|
|
return [super performKeyEquivalent:theEvent];
|
|
}
|
|
|
|
// Plugins normally eat all keyboard commands, this hack mitigates
|
|
// the problem.
|
|
BOOL handleForPluginHack = NO;
|
|
NSResponder *firstResponder = [keyWindow firstResponder];
|
|
if (firstResponder &&
|
|
[firstResponder isKindOfClass:[ChildView class]] &&
|
|
[(ChildView*)firstResponder isPluginView]) {
|
|
handleForPluginHack = YES;
|
|
// Maintain a list of cmd+key combinations that we never act on (in the
|
|
// browser) when the keyboard focus is in a plugin. What a particular
|
|
// cmd+key combo means here (to the browser) is governed by browser.dtd,
|
|
// which "contains the browser main menu items".
|
|
UInt32 modifierFlags = [theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask;
|
|
if (modifierFlags == NSCommandKeyMask) {
|
|
NSString *unmodchars = [theEvent charactersIgnoringModifiers];
|
|
if ([unmodchars length] == 1) {
|
|
if ([unmodchars characterAtIndex:0] == nsMenuBarX::GetLocalizedAccelKey("key_selectAll")) {
|
|
handleForPluginHack = NO;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
gMenuItemsExecuteCommands = handleForPluginHack;
|
|
[super performKeyEquivalent:theEvent];
|
|
gMenuItemsExecuteCommands = YES; // return to default
|
|
|
|
// Return YES if we invoked a command and there is now no key window or we changed
|
|
// the first responder. In this case we do not want to propagate the event because
|
|
// we don't want it handled again.
|
|
if (handleForPluginHack) {
|
|
if (![NSApp keyWindow] || [[NSApp keyWindow] firstResponder] != firstResponder) {
|
|
return YES;
|
|
}
|
|
}
|
|
|
|
// Return NO so that we can handle the event via NSView's "keyDown:".
|
|
return NO;
|
|
}
|
|
|
|
@end
|
|
|
|
//
|
|
// Objective-C class used as action target for menu items
|
|
//
|
|
|
|
@implementation NativeMenuItemTarget
|
|
|
|
// called when some menu item in this menu gets hit
|
|
-(IBAction)menuItemHit:(id)sender
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
// menuGroupOwner below is an nsMenuBarX object, which we sometimes access
|
|
// after it's been deleted, causing crashes (see bug 704866 and bug 670914).
|
|
// To fix this "correctly", in nsMenuBarX::~nsMenuBarX() we'd need to
|
|
// iterate through every NSMenuItem in nsMenuBarX::mNativeMenu and its
|
|
// submenus, which might be quite time consuming. (For every NSMenuItem
|
|
// that has a "representedObject" that's a MenuItemInfo object, we'd need
|
|
// need to null out its "menuGroupOwner" if it's the same as the nsMenuBarX
|
|
// object being destroyed.) But if the nsMenuBarX object being destroyed
|
|
// corresponds to the currently focused window, it's likely that the
|
|
// nsMenuBarX destructor will null out sLastGeckoMenuBarPainted. So we can
|
|
// probably eliminate most of these crashes if we use this variable being
|
|
// null as an indicator that we're likely to crash below when we dereference
|
|
// menuGroupOwner.
|
|
if (!nsMenuBarX::sLastGeckoMenuBarPainted) {
|
|
return;
|
|
}
|
|
|
|
if (!gMenuItemsExecuteCommands) {
|
|
return;
|
|
}
|
|
|
|
int tag = [sender tag];
|
|
|
|
MenuItemInfo* info = [sender representedObject];
|
|
if (!info)
|
|
return;
|
|
|
|
nsMenuGroupOwnerX* menuGroupOwner = [info menuGroupOwner];
|
|
if (!menuGroupOwner)
|
|
return;
|
|
|
|
nsMenuBarX* menuBar = nsnull;
|
|
if (menuGroupOwner->MenuObjectType() == eMenuBarObjectType)
|
|
menuBar = static_cast<nsMenuBarX*>(menuGroupOwner);
|
|
|
|
// Do special processing if this is for an app-global command.
|
|
if (tag == eCommand_ID_About) {
|
|
nsIContent* mostSpecificContent = sAboutItemContent;
|
|
if (menuBar && menuBar->mAboutItemContent)
|
|
mostSpecificContent = menuBar->mAboutItemContent;
|
|
nsMenuUtilsX::DispatchCommandTo(mostSpecificContent);
|
|
return;
|
|
}
|
|
else if (tag == eCommand_ID_Update) {
|
|
nsIContent* mostSpecificContent = sUpdateItemContent;
|
|
if (menuBar && menuBar->mUpdateItemContent)
|
|
mostSpecificContent = menuBar->mUpdateItemContent;
|
|
nsMenuUtilsX::DispatchCommandTo(mostSpecificContent);
|
|
}
|
|
else if (tag == eCommand_ID_Prefs) {
|
|
nsIContent* mostSpecificContent = sPrefItemContent;
|
|
if (menuBar && menuBar->mPrefItemContent)
|
|
mostSpecificContent = menuBar->mPrefItemContent;
|
|
nsMenuUtilsX::DispatchCommandTo(mostSpecificContent);
|
|
return;
|
|
}
|
|
else if (tag == eCommand_ID_HideApp) {
|
|
[NSApp hide:sender];
|
|
return;
|
|
}
|
|
else if (tag == eCommand_ID_HideOthers) {
|
|
[NSApp hideOtherApplications:sender];
|
|
return;
|
|
}
|
|
else if (tag == eCommand_ID_ShowAll) {
|
|
[NSApp unhideAllApplications:sender];
|
|
return;
|
|
}
|
|
else if (tag == eCommand_ID_Quit) {
|
|
nsIContent* mostSpecificContent = sQuitItemContent;
|
|
if (menuBar && menuBar->mQuitItemContent)
|
|
mostSpecificContent = menuBar->mQuitItemContent;
|
|
// If we have some content for quit we execute it. Otherwise we send a native app terminate
|
|
// message. If you want to stop a quit from happening, provide quit content and return
|
|
// the event as unhandled.
|
|
if (mostSpecificContent) {
|
|
nsMenuUtilsX::DispatchCommandTo(mostSpecificContent);
|
|
}
|
|
else {
|
|
[NSApp terminate:nil];
|
|
}
|
|
return;
|
|
}
|
|
|
|
// given the commandID, look it up in our hashtable and dispatch to
|
|
// that menu item.
|
|
if (menuGroupOwner) {
|
|
nsMenuItemX* menuItem = menuGroupOwner->GetMenuItemForCommandID(static_cast<PRUint32>(tag));
|
|
if (menuItem)
|
|
menuItem->DoCommand();
|
|
}
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
@end
|
|
|
|
// Objective-C class used for menu items on the Services menu to allow Gecko
|
|
// to override their standard behavior in order to stop key equivalents from
|
|
// firing in certain instances. When gMenuItemsExecuteCommands is NO, we return
|
|
// a dummy target and action instead of the actual target and action.
|
|
|
|
@implementation GeckoServicesNSMenuItem
|
|
|
|
- (id) target
|
|
{
|
|
id realTarget = [super target];
|
|
if (gMenuItemsExecuteCommands)
|
|
return realTarget;
|
|
else
|
|
return realTarget ? self : nil;
|
|
}
|
|
|
|
- (SEL) action
|
|
{
|
|
SEL realAction = [super action];
|
|
if (gMenuItemsExecuteCommands)
|
|
return realAction;
|
|
else
|
|
return realAction ? @selector(_doNothing:) : NULL;
|
|
}
|
|
|
|
- (void) _doNothing:(id)sender
|
|
{
|
|
}
|
|
|
|
@end
|
|
|
|
// Objective-C class used as the Services menu so that Gecko can override the
|
|
// standard behavior of the Services menu in order to stop key equivalents
|
|
// from firing in certain instances.
|
|
|
|
@implementation GeckoServicesNSMenu
|
|
|
|
- (void)addItem:(NSMenuItem *)newItem
|
|
{
|
|
[self _overrideClassOfMenuItem:newItem];
|
|
[super addItem:newItem];
|
|
}
|
|
|
|
- (NSMenuItem *)addItemWithTitle:(NSString *)aString action:(SEL)aSelector keyEquivalent:(NSString *)keyEquiv
|
|
{
|
|
NSMenuItem * newItem = [super addItemWithTitle:aString action:aSelector keyEquivalent:keyEquiv];
|
|
[self _overrideClassOfMenuItem:newItem];
|
|
return newItem;
|
|
}
|
|
|
|
- (void)insertItem:(NSMenuItem *)newItem atIndex:(NSInteger)index
|
|
{
|
|
[self _overrideClassOfMenuItem:newItem];
|
|
[super insertItem:newItem atIndex:index];
|
|
}
|
|
|
|
- (NSMenuItem *)insertItemWithTitle:(NSString *)aString action:(SEL)aSelector keyEquivalent:(NSString *)keyEquiv atIndex:(NSInteger)index
|
|
{
|
|
NSMenuItem * newItem = [super insertItemWithTitle:aString action:aSelector keyEquivalent:keyEquiv atIndex:index];
|
|
[self _overrideClassOfMenuItem:newItem];
|
|
return newItem;
|
|
}
|
|
|
|
- (void) _overrideClassOfMenuItem:(NSMenuItem *)menuItem
|
|
{
|
|
if ([menuItem class] == [NSMenuItem class])
|
|
object_setClass(menuItem, [GeckoServicesNSMenuItem class]);
|
|
}
|
|
|
|
@end
|