mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
05fe36a0da
--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
1483 lines
50 KiB
C++
1483 lines
50 KiB
C++
/* -*- 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) 2002
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
* Brian Ryner <bryner@brianryner.com> (Original Author)
|
|
* Michael Ventnor <m.ventnor@gmail.com>
|
|
* Teune van Steeg <t.vansteeg@gmail.com>
|
|
* Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
|
|
*
|
|
* 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 "nsNativeThemeGTK.h"
|
|
#include "nsThemeConstants.h"
|
|
#include "gtkdrawing.h"
|
|
|
|
#include "nsIObserverService.h"
|
|
#include "nsIServiceManager.h"
|
|
#include "nsIFrame.h"
|
|
#include "nsIPresShell.h"
|
|
#include "nsIDocument.h"
|
|
#include "nsIContent.h"
|
|
#include "nsIViewManager.h"
|
|
#include "nsINameSpaceManager.h"
|
|
#include "nsGfxCIID.h"
|
|
#include "nsTransform2D.h"
|
|
#include "nsMenuFrame.h"
|
|
#include "prlink.h"
|
|
#include "nsIDOMHTMLInputElement.h"
|
|
#include "nsRenderingContext.h"
|
|
#include "nsGkAtoms.h"
|
|
#include "mozilla/Services.h"
|
|
|
|
#include <gdk/gdkprivate.h>
|
|
#include <gtk/gtk.h>
|
|
|
|
#include "gfxContext.h"
|
|
#include "gfxPlatformGtk.h"
|
|
#include "gfxGdkNativeRenderer.h"
|
|
|
|
NS_IMPL_ISUPPORTS_INHERITED2(nsNativeThemeGTK, nsNativeTheme, nsITheme,
|
|
nsIObserver)
|
|
|
|
static int gLastGdkError;
|
|
|
|
nsNativeThemeGTK::nsNativeThemeGTK()
|
|
{
|
|
if (moz_gtk_init() != MOZ_GTK_SUCCESS) {
|
|
memset(mDisabledWidgetTypes, 0xff, sizeof(mDisabledWidgetTypes));
|
|
return;
|
|
}
|
|
|
|
// We have to call moz_gtk_shutdown before the event loop stops running.
|
|
nsCOMPtr<nsIObserverService> obsServ =
|
|
mozilla::services::GetObserverService();
|
|
obsServ->AddObserver(this, "xpcom-shutdown", false);
|
|
|
|
memset(mDisabledWidgetTypes, 0, sizeof(mDisabledWidgetTypes));
|
|
memset(mSafeWidgetStates, 0, sizeof(mSafeWidgetStates));
|
|
}
|
|
|
|
nsNativeThemeGTK::~nsNativeThemeGTK() {
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsNativeThemeGTK::Observe(nsISupports *aSubject, const char *aTopic,
|
|
const PRUnichar *aData)
|
|
{
|
|
if (!nsCRT::strcmp(aTopic, "xpcom-shutdown")) {
|
|
moz_gtk_shutdown();
|
|
} else {
|
|
NS_NOTREACHED("unexpected topic");
|
|
return NS_ERROR_UNEXPECTED;
|
|
}
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
void
|
|
nsNativeThemeGTK::RefreshWidgetWindow(nsIFrame* aFrame)
|
|
{
|
|
nsIPresShell *shell = GetPresShell(aFrame);
|
|
if (!shell)
|
|
return;
|
|
|
|
nsIViewManager* vm = shell->GetViewManager();
|
|
if (!vm)
|
|
return;
|
|
|
|
vm->UpdateAllViews(NS_VMREFRESH_NO_SYNC);
|
|
}
|
|
|
|
static bool IsFrameContentNodeInNamespace(nsIFrame *aFrame, PRUint32 aNamespace)
|
|
{
|
|
nsIContent *content = aFrame ? aFrame->GetContent() : nsnull;
|
|
if (!content)
|
|
return false;
|
|
return content->IsInNamespace(aNamespace);
|
|
}
|
|
|
|
static bool IsWidgetTypeDisabled(PRUint8* aDisabledVector, PRUint8 aWidgetType) {
|
|
return (aDisabledVector[aWidgetType >> 3] & (1 << (aWidgetType & 7))) != 0;
|
|
}
|
|
|
|
static void SetWidgetTypeDisabled(PRUint8* aDisabledVector, PRUint8 aWidgetType) {
|
|
aDisabledVector[aWidgetType >> 3] |= (1 << (aWidgetType & 7));
|
|
}
|
|
|
|
static inline PRUint16
|
|
GetWidgetStateKey(PRUint8 aWidgetType, GtkWidgetState *aWidgetState)
|
|
{
|
|
return (aWidgetState->active |
|
|
aWidgetState->focused << 1 |
|
|
aWidgetState->inHover << 2 |
|
|
aWidgetState->disabled << 3 |
|
|
aWidgetState->isDefault << 4 |
|
|
aWidgetType << 5);
|
|
}
|
|
|
|
static bool IsWidgetStateSafe(PRUint8* aSafeVector,
|
|
PRUint8 aWidgetType,
|
|
GtkWidgetState *aWidgetState)
|
|
{
|
|
PRUint8 key = GetWidgetStateKey(aWidgetType, aWidgetState);
|
|
return (aSafeVector[key >> 3] & (1 << (key & 7))) != 0;
|
|
}
|
|
|
|
static void SetWidgetStateSafe(PRUint8 *aSafeVector,
|
|
PRUint8 aWidgetType,
|
|
GtkWidgetState *aWidgetState)
|
|
{
|
|
PRUint8 key = GetWidgetStateKey(aWidgetType, aWidgetState);
|
|
aSafeVector[key >> 3] |= (1 << (key & 7));
|
|
}
|
|
|
|
static GtkTextDirection GetTextDirection(nsIFrame* aFrame)
|
|
{
|
|
if (!aFrame)
|
|
return GTK_TEXT_DIR_NONE;
|
|
|
|
switch (aFrame->GetStyleVisibility()->mDirection) {
|
|
case NS_STYLE_DIRECTION_RTL:
|
|
return GTK_TEXT_DIR_RTL;
|
|
case NS_STYLE_DIRECTION_LTR:
|
|
return GTK_TEXT_DIR_LTR;
|
|
}
|
|
|
|
return GTK_TEXT_DIR_NONE;
|
|
}
|
|
|
|
// Returns positive for negative margins (otherwise 0).
|
|
gint
|
|
nsNativeThemeGTK::GetTabMarginPixels(nsIFrame* aFrame)
|
|
{
|
|
nscoord margin =
|
|
IsBottomTab(aFrame) ? aFrame->GetUsedMargin().top
|
|
: aFrame->GetUsedMargin().bottom;
|
|
|
|
return NS_MIN<gint>(MOZ_GTK_TAB_MARGIN_MASK,
|
|
NS_MAX(0,
|
|
aFrame->PresContext()->AppUnitsToDevPixels(-margin)));
|
|
}
|
|
|
|
bool
|
|
nsNativeThemeGTK::GetGtkWidgetAndState(PRUint8 aWidgetType, nsIFrame* aFrame,
|
|
GtkThemeWidgetType& aGtkWidgetType,
|
|
GtkWidgetState* aState,
|
|
gint* aWidgetFlags)
|
|
{
|
|
if (aState) {
|
|
if (!aFrame) {
|
|
// reset the entire struct to zero
|
|
memset(aState, 0, sizeof(GtkWidgetState));
|
|
} else {
|
|
|
|
// For XUL checkboxes and radio buttons, the state of the parent
|
|
// determines our state.
|
|
nsIFrame *stateFrame = aFrame;
|
|
if (aFrame && ((aWidgetFlags && (aWidgetType == NS_THEME_CHECKBOX ||
|
|
aWidgetType == NS_THEME_RADIO)) ||
|
|
aWidgetType == NS_THEME_CHECKBOX_LABEL ||
|
|
aWidgetType == NS_THEME_RADIO_LABEL)) {
|
|
|
|
nsIAtom* atom = nsnull;
|
|
if (IsFrameContentNodeInNamespace(aFrame, kNameSpaceID_XUL)) {
|
|
if (aWidgetType == NS_THEME_CHECKBOX_LABEL ||
|
|
aWidgetType == NS_THEME_RADIO_LABEL) {
|
|
// Adjust stateFrame so GetContentState finds the correct state.
|
|
stateFrame = aFrame = aFrame->GetParent()->GetParent();
|
|
} else {
|
|
// GetContentState knows to look one frame up for radio/checkbox
|
|
// widgets, so don't adjust stateFrame here.
|
|
aFrame = aFrame->GetParent();
|
|
}
|
|
if (aWidgetFlags) {
|
|
if (!atom) {
|
|
atom = (aWidgetType == NS_THEME_CHECKBOX ||
|
|
aWidgetType == NS_THEME_CHECKBOX_LABEL) ? nsGkAtoms::checked
|
|
: nsGkAtoms::selected;
|
|
}
|
|
*aWidgetFlags = CheckBooleanAttr(aFrame, atom);
|
|
}
|
|
} else {
|
|
if (aWidgetFlags) {
|
|
nsCOMPtr<nsIDOMHTMLInputElement> inputElt(do_QueryInterface(aFrame->GetContent()));
|
|
*aWidgetFlags = 0;
|
|
if (inputElt) {
|
|
bool isHTMLChecked;
|
|
inputElt->GetChecked(&isHTMLChecked);
|
|
if (isHTMLChecked)
|
|
*aWidgetFlags |= MOZ_GTK_WIDGET_CHECKED;
|
|
}
|
|
|
|
if (GetIndeterminate(aFrame))
|
|
*aWidgetFlags |= MOZ_GTK_WIDGET_INCONSISTENT;
|
|
}
|
|
}
|
|
} else if (aWidgetType == NS_THEME_TOOLBAR_BUTTON_DROPDOWN ||
|
|
aWidgetType == NS_THEME_TREEVIEW_HEADER_SORTARROW ||
|
|
aWidgetType == NS_THEME_BUTTON_ARROW_PREVIOUS ||
|
|
aWidgetType == NS_THEME_BUTTON_ARROW_NEXT ||
|
|
aWidgetType == NS_THEME_BUTTON_ARROW_UP ||
|
|
aWidgetType == NS_THEME_BUTTON_ARROW_DOWN) {
|
|
// The state of an arrow comes from its parent.
|
|
stateFrame = aFrame = aFrame->GetParent();
|
|
}
|
|
|
|
nsEventStates eventState = GetContentState(stateFrame, aWidgetType);
|
|
|
|
aState->disabled = IsDisabled(aFrame, eventState) || IsReadOnly(aFrame);
|
|
aState->active = eventState.HasState(NS_EVENT_STATE_ACTIVE);
|
|
aState->focused = eventState.HasState(NS_EVENT_STATE_FOCUS);
|
|
aState->inHover = eventState.HasState(NS_EVENT_STATE_HOVER);
|
|
aState->isDefault = IsDefaultButton(aFrame);
|
|
aState->canDefault = FALSE; // XXX fix me
|
|
aState->depressed = FALSE;
|
|
|
|
if (IsFrameContentNodeInNamespace(aFrame, kNameSpaceID_XUL)) {
|
|
// For these widget types, some element (either a child or parent)
|
|
// actually has element focus, so we check the focused attribute
|
|
// to see whether to draw in the focused state.
|
|
if (aWidgetType == NS_THEME_TEXTFIELD ||
|
|
aWidgetType == NS_THEME_TEXTFIELD_MULTILINE ||
|
|
aWidgetType == NS_THEME_DROPDOWN_TEXTFIELD ||
|
|
aWidgetType == NS_THEME_SPINNER_TEXTFIELD ||
|
|
aWidgetType == NS_THEME_RADIO_CONTAINER ||
|
|
aWidgetType == NS_THEME_RADIO_LABEL) {
|
|
aState->focused = IsFocused(aFrame);
|
|
} else if (aWidgetType == NS_THEME_RADIO ||
|
|
aWidgetType == NS_THEME_CHECKBOX) {
|
|
// In XUL, checkboxes and radios shouldn't have focus rings, their labels do
|
|
aState->focused = FALSE;
|
|
}
|
|
|
|
if (aWidgetType == NS_THEME_SCROLLBAR_THUMB_VERTICAL ||
|
|
aWidgetType == NS_THEME_SCROLLBAR_THUMB_HORIZONTAL) {
|
|
// for scrollbars we need to go up two to go from the thumb to
|
|
// the slider to the actual scrollbar object
|
|
nsIFrame *tmpFrame = aFrame->GetParent()->GetParent();
|
|
|
|
aState->curpos = CheckIntAttr(tmpFrame, nsGkAtoms::curpos, 0);
|
|
aState->maxpos = CheckIntAttr(tmpFrame, nsGkAtoms::maxpos, 100);
|
|
}
|
|
|
|
if (aWidgetType == NS_THEME_SCROLLBAR_BUTTON_UP ||
|
|
aWidgetType == NS_THEME_SCROLLBAR_BUTTON_DOWN ||
|
|
aWidgetType == NS_THEME_SCROLLBAR_BUTTON_LEFT ||
|
|
aWidgetType == NS_THEME_SCROLLBAR_BUTTON_RIGHT) {
|
|
// set the state to disabled when the scrollbar is scrolled to
|
|
// the beginning or the end, depending on the button type.
|
|
PRInt32 curpos = CheckIntAttr(aFrame, nsGkAtoms::curpos, 0);
|
|
PRInt32 maxpos = CheckIntAttr(aFrame, nsGkAtoms::maxpos, 100);
|
|
if ((curpos == 0 && (aWidgetType == NS_THEME_SCROLLBAR_BUTTON_UP ||
|
|
aWidgetType == NS_THEME_SCROLLBAR_BUTTON_LEFT)) ||
|
|
(curpos == maxpos &&
|
|
(aWidgetType == NS_THEME_SCROLLBAR_BUTTON_DOWN ||
|
|
aWidgetType == NS_THEME_SCROLLBAR_BUTTON_RIGHT)))
|
|
aState->disabled = true;
|
|
|
|
// In order to simulate native GTK scrollbar click behavior,
|
|
// we set the active attribute on the element to true if it's
|
|
// pressed with any mouse button.
|
|
// This allows us to show that it's active without setting :active
|
|
else if (CheckBooleanAttr(aFrame, nsGkAtoms::active))
|
|
aState->active = true;
|
|
|
|
if (aWidgetFlags) {
|
|
*aWidgetFlags = GetScrollbarButtonType(aFrame);
|
|
if (aWidgetType - NS_THEME_SCROLLBAR_BUTTON_UP < 2)
|
|
*aWidgetFlags |= MOZ_GTK_STEPPER_VERTICAL;
|
|
}
|
|
}
|
|
|
|
// menu item state is determined by the attribute "_moz-menuactive",
|
|
// and not by the mouse hovering (accessibility). as a special case,
|
|
// menus which are children of a menu bar are only marked as prelight
|
|
// if they are open, not on normal hover.
|
|
|
|
if (aWidgetType == NS_THEME_MENUITEM ||
|
|
aWidgetType == NS_THEME_CHECKMENUITEM ||
|
|
aWidgetType == NS_THEME_RADIOMENUITEM ||
|
|
aWidgetType == NS_THEME_MENUSEPARATOR ||
|
|
aWidgetType == NS_THEME_MENUARROW) {
|
|
bool isTopLevel = false;
|
|
nsMenuFrame *menuFrame = do_QueryFrame(aFrame);
|
|
if (menuFrame) {
|
|
isTopLevel = menuFrame->IsOnMenuBar();
|
|
}
|
|
|
|
if (isTopLevel) {
|
|
aState->inHover = menuFrame->IsOpen();
|
|
*aWidgetFlags |= MOZ_TOPLEVEL_MENU_ITEM;
|
|
} else {
|
|
aState->inHover = CheckBooleanAttr(aFrame, nsGkAtoms::menuactive);
|
|
*aWidgetFlags &= ~MOZ_TOPLEVEL_MENU_ITEM;
|
|
}
|
|
|
|
aState->active = FALSE;
|
|
|
|
if (aWidgetType == NS_THEME_CHECKMENUITEM ||
|
|
aWidgetType == NS_THEME_RADIOMENUITEM) {
|
|
*aWidgetFlags = 0;
|
|
if (aFrame && aFrame->GetContent()) {
|
|
*aWidgetFlags = aFrame->GetContent()->
|
|
AttrValueIs(kNameSpaceID_None, nsGkAtoms::checked,
|
|
nsGkAtoms::_true, eIgnoreCase);
|
|
}
|
|
}
|
|
}
|
|
|
|
// A button with drop down menu open or an activated toggle button
|
|
// should always appear depressed.
|
|
if (aWidgetType == NS_THEME_BUTTON ||
|
|
aWidgetType == NS_THEME_TOOLBAR_BUTTON ||
|
|
aWidgetType == NS_THEME_TOOLBAR_DUAL_BUTTON ||
|
|
aWidgetType == NS_THEME_TOOLBAR_BUTTON_DROPDOWN ||
|
|
aWidgetType == NS_THEME_DROPDOWN ||
|
|
aWidgetType == NS_THEME_DROPDOWN_BUTTON) {
|
|
bool menuOpen = IsOpenButton(aFrame);
|
|
aState->depressed = IsCheckedButton(aFrame) || menuOpen;
|
|
// we must not highlight buttons with open drop down menus on hover.
|
|
aState->inHover = aState->inHover && !menuOpen;
|
|
}
|
|
|
|
// When the input field of the drop down button has focus, some themes
|
|
// should draw focus for the drop down button as well.
|
|
if (aWidgetType == NS_THEME_DROPDOWN_BUTTON && aWidgetFlags) {
|
|
*aWidgetFlags = CheckBooleanAttr(aFrame, nsGkAtoms::parentfocused);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
switch (aWidgetType) {
|
|
case NS_THEME_BUTTON:
|
|
case NS_THEME_TOOLBAR_BUTTON:
|
|
case NS_THEME_TOOLBAR_DUAL_BUTTON:
|
|
if (aWidgetFlags)
|
|
*aWidgetFlags = (aWidgetType == NS_THEME_BUTTON) ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE;
|
|
aGtkWidgetType = MOZ_GTK_BUTTON;
|
|
break;
|
|
case NS_THEME_CHECKBOX:
|
|
case NS_THEME_RADIO:
|
|
aGtkWidgetType = (aWidgetType == NS_THEME_RADIO) ? MOZ_GTK_RADIOBUTTON : MOZ_GTK_CHECKBUTTON;
|
|
break;
|
|
case NS_THEME_SCROLLBAR_BUTTON_UP:
|
|
case NS_THEME_SCROLLBAR_BUTTON_DOWN:
|
|
case NS_THEME_SCROLLBAR_BUTTON_LEFT:
|
|
case NS_THEME_SCROLLBAR_BUTTON_RIGHT:
|
|
aGtkWidgetType = MOZ_GTK_SCROLLBAR_BUTTON;
|
|
break;
|
|
case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
|
|
aGtkWidgetType = MOZ_GTK_SCROLLBAR_TRACK_VERTICAL;
|
|
break;
|
|
case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL:
|
|
aGtkWidgetType = MOZ_GTK_SCROLLBAR_TRACK_HORIZONTAL;
|
|
break;
|
|
case NS_THEME_SCROLLBAR_THUMB_VERTICAL:
|
|
aGtkWidgetType = MOZ_GTK_SCROLLBAR_THUMB_VERTICAL;
|
|
break;
|
|
case NS_THEME_SCROLLBAR_THUMB_HORIZONTAL:
|
|
aGtkWidgetType = MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL;
|
|
break;
|
|
case NS_THEME_SPINNER:
|
|
aGtkWidgetType = MOZ_GTK_SPINBUTTON;
|
|
break;
|
|
case NS_THEME_SPINNER_UP_BUTTON:
|
|
aGtkWidgetType = MOZ_GTK_SPINBUTTON_UP;
|
|
break;
|
|
case NS_THEME_SPINNER_DOWN_BUTTON:
|
|
aGtkWidgetType = MOZ_GTK_SPINBUTTON_DOWN;
|
|
break;
|
|
case NS_THEME_SPINNER_TEXTFIELD:
|
|
aGtkWidgetType = MOZ_GTK_SPINBUTTON_ENTRY;
|
|
break;
|
|
case NS_THEME_SCALE_HORIZONTAL:
|
|
if (aWidgetFlags)
|
|
*aWidgetFlags = GTK_ORIENTATION_HORIZONTAL;
|
|
aGtkWidgetType = MOZ_GTK_SCALE_HORIZONTAL;
|
|
break;
|
|
case NS_THEME_SCALE_THUMB_HORIZONTAL:
|
|
if (aWidgetFlags)
|
|
*aWidgetFlags = GTK_ORIENTATION_HORIZONTAL;
|
|
aGtkWidgetType = MOZ_GTK_SCALE_THUMB_HORIZONTAL;
|
|
break;
|
|
case NS_THEME_SCALE_VERTICAL:
|
|
if (aWidgetFlags)
|
|
*aWidgetFlags = GTK_ORIENTATION_VERTICAL;
|
|
aGtkWidgetType = MOZ_GTK_SCALE_VERTICAL;
|
|
break;
|
|
case NS_THEME_TOOLBAR_SEPARATOR:
|
|
aGtkWidgetType = MOZ_GTK_TOOLBAR_SEPARATOR;
|
|
break;
|
|
case NS_THEME_SCALE_THUMB_VERTICAL:
|
|
if (aWidgetFlags)
|
|
*aWidgetFlags = GTK_ORIENTATION_VERTICAL;
|
|
aGtkWidgetType = MOZ_GTK_SCALE_THUMB_VERTICAL;
|
|
break;
|
|
case NS_THEME_TOOLBAR_GRIPPER:
|
|
aGtkWidgetType = MOZ_GTK_GRIPPER;
|
|
break;
|
|
case NS_THEME_RESIZER:
|
|
aGtkWidgetType = MOZ_GTK_RESIZER;
|
|
break;
|
|
case NS_THEME_TEXTFIELD:
|
|
case NS_THEME_TEXTFIELD_MULTILINE:
|
|
aGtkWidgetType = MOZ_GTK_ENTRY;
|
|
break;
|
|
case NS_THEME_TEXTFIELD_CARET:
|
|
aGtkWidgetType = MOZ_GTK_ENTRY_CARET;
|
|
break;
|
|
case NS_THEME_LISTBOX:
|
|
case NS_THEME_TREEVIEW:
|
|
aGtkWidgetType = MOZ_GTK_TREEVIEW;
|
|
break;
|
|
case NS_THEME_TREEVIEW_HEADER_CELL:
|
|
if (aWidgetFlags) {
|
|
// In this case, the flag denotes whether the header is the sorted one or not
|
|
if (GetTreeSortDirection(aFrame) == eTreeSortDirection_Natural)
|
|
*aWidgetFlags = false;
|
|
else
|
|
*aWidgetFlags = true;
|
|
}
|
|
aGtkWidgetType = MOZ_GTK_TREE_HEADER_CELL;
|
|
break;
|
|
case NS_THEME_TREEVIEW_HEADER_SORTARROW:
|
|
if (aWidgetFlags) {
|
|
switch (GetTreeSortDirection(aFrame)) {
|
|
case eTreeSortDirection_Ascending:
|
|
*aWidgetFlags = GTK_ARROW_DOWN;
|
|
break;
|
|
case eTreeSortDirection_Descending:
|
|
*aWidgetFlags = GTK_ARROW_UP;
|
|
break;
|
|
case eTreeSortDirection_Natural:
|
|
default:
|
|
/* GTK_ARROW_NONE is implemented since GTK 2.10
|
|
* This prevents the treecolums from getting smaller
|
|
* and wider when switching sort direction off and on
|
|
* */
|
|
#if GTK_CHECK_VERSION(2,10,0)
|
|
*aWidgetFlags = GTK_ARROW_NONE;
|
|
#else
|
|
return false; // Don't draw when we shouldn't
|
|
#endif // GTK_CHECK_VERSION(2,10,0)
|
|
break;
|
|
}
|
|
}
|
|
aGtkWidgetType = MOZ_GTK_TREE_HEADER_SORTARROW;
|
|
break;
|
|
case NS_THEME_TREEVIEW_TWISTY:
|
|
aGtkWidgetType = MOZ_GTK_TREEVIEW_EXPANDER;
|
|
if (aWidgetFlags)
|
|
*aWidgetFlags = GTK_EXPANDER_COLLAPSED;
|
|
break;
|
|
case NS_THEME_TREEVIEW_TWISTY_OPEN:
|
|
aGtkWidgetType = MOZ_GTK_TREEVIEW_EXPANDER;
|
|
if (aWidgetFlags)
|
|
*aWidgetFlags = GTK_EXPANDER_EXPANDED;
|
|
break;
|
|
case NS_THEME_DROPDOWN:
|
|
aGtkWidgetType = MOZ_GTK_DROPDOWN;
|
|
if (aWidgetFlags)
|
|
*aWidgetFlags = IsFrameContentNodeInNamespace(aFrame, kNameSpaceID_XHTML);
|
|
break;
|
|
case NS_THEME_DROPDOWN_TEXT:
|
|
return false; // nothing to do, but prevents the bg from being drawn
|
|
case NS_THEME_DROPDOWN_TEXTFIELD:
|
|
aGtkWidgetType = MOZ_GTK_DROPDOWN_ENTRY;
|
|
break;
|
|
case NS_THEME_DROPDOWN_BUTTON:
|
|
aGtkWidgetType = MOZ_GTK_DROPDOWN_ARROW;
|
|
break;
|
|
case NS_THEME_TOOLBAR_BUTTON_DROPDOWN:
|
|
case NS_THEME_BUTTON_ARROW_DOWN:
|
|
case NS_THEME_BUTTON_ARROW_UP:
|
|
case NS_THEME_BUTTON_ARROW_NEXT:
|
|
case NS_THEME_BUTTON_ARROW_PREVIOUS:
|
|
aGtkWidgetType = MOZ_GTK_TOOLBARBUTTON_ARROW;
|
|
if (aWidgetFlags) {
|
|
*aWidgetFlags = GTK_ARROW_DOWN;
|
|
|
|
if (aWidgetType == NS_THEME_BUTTON_ARROW_UP)
|
|
*aWidgetFlags = GTK_ARROW_UP;
|
|
else if (aWidgetType == NS_THEME_BUTTON_ARROW_NEXT)
|
|
*aWidgetFlags = GTK_ARROW_RIGHT;
|
|
else if (aWidgetType == NS_THEME_BUTTON_ARROW_PREVIOUS)
|
|
*aWidgetFlags = GTK_ARROW_LEFT;
|
|
}
|
|
break;
|
|
case NS_THEME_CHECKBOX_CONTAINER:
|
|
aGtkWidgetType = MOZ_GTK_CHECKBUTTON_CONTAINER;
|
|
break;
|
|
case NS_THEME_RADIO_CONTAINER:
|
|
aGtkWidgetType = MOZ_GTK_RADIOBUTTON_CONTAINER;
|
|
break;
|
|
case NS_THEME_CHECKBOX_LABEL:
|
|
aGtkWidgetType = MOZ_GTK_CHECKBUTTON_LABEL;
|
|
break;
|
|
case NS_THEME_RADIO_LABEL:
|
|
aGtkWidgetType = MOZ_GTK_RADIOBUTTON_LABEL;
|
|
break;
|
|
case NS_THEME_TOOLBAR:
|
|
aGtkWidgetType = MOZ_GTK_TOOLBAR;
|
|
break;
|
|
case NS_THEME_TOOLTIP:
|
|
aGtkWidgetType = MOZ_GTK_TOOLTIP;
|
|
break;
|
|
case NS_THEME_STATUSBAR_PANEL:
|
|
case NS_THEME_STATUSBAR_RESIZER_PANEL:
|
|
aGtkWidgetType = MOZ_GTK_FRAME;
|
|
break;
|
|
case NS_THEME_PROGRESSBAR:
|
|
case NS_THEME_PROGRESSBAR_VERTICAL:
|
|
aGtkWidgetType = MOZ_GTK_PROGRESSBAR;
|
|
break;
|
|
case NS_THEME_PROGRESSBAR_CHUNK:
|
|
case NS_THEME_PROGRESSBAR_CHUNK_VERTICAL:
|
|
{
|
|
nsIFrame* stateFrame = aFrame->GetParent();
|
|
nsEventStates eventStates = GetContentState(stateFrame, aWidgetType);
|
|
|
|
aGtkWidgetType = IsIndeterminateProgress(stateFrame, eventStates)
|
|
? (stateFrame->GetStyleDisplay()->mOrient == NS_STYLE_ORIENT_VERTICAL)
|
|
? MOZ_GTK_PROGRESS_CHUNK_VERTICAL_INDETERMINATE
|
|
: MOZ_GTK_PROGRESS_CHUNK_INDETERMINATE
|
|
: MOZ_GTK_PROGRESS_CHUNK;
|
|
}
|
|
break;
|
|
case NS_THEME_TAB_SCROLLARROW_BACK:
|
|
case NS_THEME_TAB_SCROLLARROW_FORWARD:
|
|
if (aWidgetFlags)
|
|
*aWidgetFlags = aWidgetType == NS_THEME_TAB_SCROLLARROW_BACK ?
|
|
GTK_ARROW_LEFT : GTK_ARROW_RIGHT;
|
|
aGtkWidgetType = MOZ_GTK_TAB_SCROLLARROW;
|
|
break;
|
|
case NS_THEME_TAB_PANELS:
|
|
aGtkWidgetType = MOZ_GTK_TABPANELS;
|
|
break;
|
|
case NS_THEME_TAB:
|
|
{
|
|
if (aWidgetFlags) {
|
|
/* First bits will be used to store max(0,-bmargin) where bmargin
|
|
* is the bottom margin of the tab in pixels (resp. top margin,
|
|
* for bottom tabs). */
|
|
if (IsBottomTab(aFrame)) {
|
|
*aWidgetFlags = MOZ_GTK_TAB_BOTTOM;
|
|
} else {
|
|
*aWidgetFlags = 0;
|
|
}
|
|
|
|
*aWidgetFlags |= GetTabMarginPixels(aFrame);
|
|
|
|
if (IsSelectedTab(aFrame))
|
|
*aWidgetFlags |= MOZ_GTK_TAB_SELECTED;
|
|
|
|
if (IsFirstTab(aFrame))
|
|
*aWidgetFlags |= MOZ_GTK_TAB_FIRST;
|
|
}
|
|
|
|
aGtkWidgetType = MOZ_GTK_TAB;
|
|
}
|
|
break;
|
|
case NS_THEME_SPLITTER:
|
|
if (IsHorizontal(aFrame))
|
|
aGtkWidgetType = MOZ_GTK_SPLITTER_VERTICAL;
|
|
else
|
|
aGtkWidgetType = MOZ_GTK_SPLITTER_HORIZONTAL;
|
|
break;
|
|
case NS_THEME_MENUBAR:
|
|
aGtkWidgetType = MOZ_GTK_MENUBAR;
|
|
break;
|
|
case NS_THEME_MENUPOPUP:
|
|
aGtkWidgetType = MOZ_GTK_MENUPOPUP;
|
|
break;
|
|
case NS_THEME_MENUITEM:
|
|
aGtkWidgetType = MOZ_GTK_MENUITEM;
|
|
break;
|
|
case NS_THEME_MENUSEPARATOR:
|
|
aGtkWidgetType = MOZ_GTK_MENUSEPARATOR;
|
|
break;
|
|
case NS_THEME_MENUARROW:
|
|
aGtkWidgetType = MOZ_GTK_MENUARROW;
|
|
break;
|
|
case NS_THEME_CHECKMENUITEM:
|
|
aGtkWidgetType = MOZ_GTK_CHECKMENUITEM;
|
|
break;
|
|
case NS_THEME_RADIOMENUITEM:
|
|
aGtkWidgetType = MOZ_GTK_RADIOMENUITEM;
|
|
break;
|
|
case NS_THEME_WINDOW:
|
|
case NS_THEME_DIALOG:
|
|
aGtkWidgetType = MOZ_GTK_WINDOW;
|
|
break;
|
|
default:
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
class ThemeRenderer : public gfxGdkNativeRenderer {
|
|
public:
|
|
ThemeRenderer(GtkWidgetState aState, GtkThemeWidgetType aGTKWidgetType,
|
|
gint aFlags, GtkTextDirection aDirection,
|
|
const GdkRectangle& aGDKRect, const GdkRectangle& aGDKClip)
|
|
: mState(aState), mGTKWidgetType(aGTKWidgetType), mFlags(aFlags),
|
|
mDirection(aDirection), mGDKRect(aGDKRect), mGDKClip(aGDKClip) {}
|
|
nsresult DrawWithGDK(GdkDrawable * drawable, gint offsetX, gint offsetY,
|
|
GdkRectangle * clipRects, PRUint32 numClipRects);
|
|
private:
|
|
GtkWidgetState mState;
|
|
GtkThemeWidgetType mGTKWidgetType;
|
|
gint mFlags;
|
|
GtkTextDirection mDirection;
|
|
GdkWindow* mWindow;
|
|
const GdkRectangle& mGDKRect;
|
|
const GdkRectangle& mGDKClip;
|
|
};
|
|
|
|
nsresult
|
|
ThemeRenderer::DrawWithGDK(GdkDrawable * drawable, gint offsetX,
|
|
gint offsetY, GdkRectangle * clipRects, PRUint32 numClipRects)
|
|
{
|
|
GdkRectangle gdk_rect = mGDKRect;
|
|
gdk_rect.x += offsetX;
|
|
gdk_rect.y += offsetY;
|
|
|
|
GdkRectangle gdk_clip = mGDKClip;
|
|
gdk_clip.x += offsetX;
|
|
gdk_clip.y += offsetY;
|
|
|
|
GdkRectangle surfaceRect;
|
|
surfaceRect.x = 0;
|
|
surfaceRect.y = 0;
|
|
gdk_drawable_get_size(drawable, &surfaceRect.width, &surfaceRect.height);
|
|
gdk_rectangle_intersect(&gdk_clip, &surfaceRect, &gdk_clip);
|
|
|
|
NS_ASSERTION(numClipRects == 0, "We don't support clipping!!!");
|
|
moz_gtk_widget_paint(mGTKWidgetType, drawable, &gdk_rect, &gdk_clip,
|
|
&mState, mFlags, mDirection);
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
bool
|
|
nsNativeThemeGTK::GetExtraSizeForWidget(nsIFrame* aFrame, PRUint8 aWidgetType,
|
|
nsIntMargin* aExtra)
|
|
{
|
|
*aExtra = nsIntMargin(0,0,0,0);
|
|
// Allow an extra one pixel above and below the thumb for certain
|
|
// GTK2 themes (Ximian Industrial, Bluecurve, Misty, at least);
|
|
// We modify the frame's overflow area. See bug 297508.
|
|
switch (aWidgetType) {
|
|
case NS_THEME_SCROLLBAR_THUMB_VERTICAL:
|
|
aExtra->top = aExtra->bottom = 1;
|
|
return true;
|
|
case NS_THEME_SCROLLBAR_THUMB_HORIZONTAL:
|
|
aExtra->left = aExtra->right = 1;
|
|
return true;
|
|
|
|
// Include the indicator spacing (the padding around the control).
|
|
case NS_THEME_CHECKBOX:
|
|
case NS_THEME_RADIO:
|
|
{
|
|
gint indicator_size, indicator_spacing;
|
|
|
|
if (aWidgetType == NS_THEME_CHECKBOX) {
|
|
moz_gtk_checkbox_get_metrics(&indicator_size, &indicator_spacing);
|
|
} else {
|
|
moz_gtk_radio_get_metrics(&indicator_size, &indicator_spacing);
|
|
}
|
|
|
|
aExtra->top = indicator_spacing;
|
|
aExtra->right = indicator_spacing;
|
|
aExtra->bottom = indicator_spacing;
|
|
aExtra->left = indicator_spacing;
|
|
return true;
|
|
}
|
|
case NS_THEME_BUTTON :
|
|
{
|
|
if (IsDefaultButton(aFrame)) {
|
|
// Some themes draw a default indicator outside the widget,
|
|
// include that in overflow
|
|
gint top, left, bottom, right;
|
|
moz_gtk_button_get_default_overflow(&top, &left, &bottom, &right);
|
|
aExtra->top = top;
|
|
aExtra->right = right;
|
|
aExtra->bottom = bottom;
|
|
aExtra->left = left;
|
|
return true;
|
|
}
|
|
}
|
|
case NS_THEME_TAB :
|
|
{
|
|
if (!IsSelectedTab(aFrame))
|
|
return false;
|
|
|
|
gint gap_height = moz_gtk_get_tab_thickness();
|
|
|
|
PRInt32 extra = gap_height - GetTabMarginPixels(aFrame);
|
|
if (extra <= 0)
|
|
return false;
|
|
|
|
if (IsBottomTab(aFrame)) {
|
|
aExtra->top = extra;
|
|
} else {
|
|
aExtra->bottom = extra;
|
|
}
|
|
}
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsNativeThemeGTK::DrawWidgetBackground(nsRenderingContext* aContext,
|
|
nsIFrame* aFrame,
|
|
PRUint8 aWidgetType,
|
|
const nsRect& aRect,
|
|
const nsRect& aDirtyRect)
|
|
{
|
|
GtkWidgetState state;
|
|
GtkThemeWidgetType gtkWidgetType;
|
|
GtkTextDirection direction = GetTextDirection(aFrame);
|
|
gint flags;
|
|
if (!GetGtkWidgetAndState(aWidgetType, aFrame, gtkWidgetType, &state,
|
|
&flags))
|
|
return NS_OK;
|
|
|
|
gfxContext* ctx = aContext->ThebesContext();
|
|
nsPresContext *presContext = aFrame->PresContext();
|
|
|
|
gfxRect rect = presContext->AppUnitsToGfxUnits(aRect);
|
|
gfxRect dirtyRect = presContext->AppUnitsToGfxUnits(aDirtyRect);
|
|
|
|
// Align to device pixels where sensible
|
|
// to provide crisper and faster drawing.
|
|
// Don't snap if it's a non-unit scale factor. We're going to have to take
|
|
// slow paths then in any case.
|
|
bool snapXY = ctx->UserToDevicePixelSnapped(rect);
|
|
if (snapXY) {
|
|
// Leave rect in device coords but make dirtyRect consistent.
|
|
dirtyRect = ctx->UserToDevice(dirtyRect);
|
|
}
|
|
|
|
// Translate the dirty rect so that it is wrt the widget top-left.
|
|
dirtyRect.MoveBy(-rect.TopLeft());
|
|
// Round out the dirty rect to gdk pixels to ensure that gtk draws
|
|
// enough pixels for interpolation to device pixels.
|
|
dirtyRect.RoundOut();
|
|
|
|
// GTK themes can only draw an integer number of pixels
|
|
// (even when not snapped).
|
|
nsIntRect widgetRect(0, 0, NS_lround(rect.Width()), NS_lround(rect.Height()));
|
|
nsIntRect overflowRect(widgetRect);
|
|
nsIntMargin extraSize;
|
|
if (GetExtraSizeForWidget(aFrame, aWidgetType, &extraSize)) {
|
|
overflowRect.Inflate(extraSize);
|
|
}
|
|
|
|
// This is the rectangle that will actually be drawn, in gdk pixels
|
|
nsIntRect drawingRect(PRInt32(dirtyRect.X()),
|
|
PRInt32(dirtyRect.Y()),
|
|
PRInt32(dirtyRect.Width()),
|
|
PRInt32(dirtyRect.Height()));
|
|
if (widgetRect.IsEmpty()
|
|
|| !drawingRect.IntersectRect(overflowRect, drawingRect))
|
|
return NS_OK;
|
|
|
|
// gdk rectangles are wrt the drawing rect.
|
|
|
|
// The gdk_clip is just advisory here, meaning "you don't
|
|
// need to draw outside this rect if you don't feel like it!"
|
|
GdkRectangle gdk_clip = {0, 0, drawingRect.width, drawingRect.height};
|
|
|
|
GdkRectangle gdk_rect = {-drawingRect.x, -drawingRect.y,
|
|
widgetRect.width, widgetRect.height};
|
|
|
|
ThemeRenderer renderer(state, gtkWidgetType, flags, direction,
|
|
gdk_rect, gdk_clip);
|
|
|
|
// Some themes (e.g. Clearlooks) just don't clip properly to any
|
|
// clip rect we provide, so we cannot advertise support for clipping within
|
|
// the widget bounds.
|
|
PRUint32 rendererFlags = 0;
|
|
if (GetWidgetTransparency(aFrame, aWidgetType) == eOpaque) {
|
|
rendererFlags |= gfxGdkNativeRenderer::DRAW_IS_OPAQUE;
|
|
}
|
|
|
|
// translate everything so (0,0) is the top left of the drawingRect
|
|
gfxContextAutoSaveRestore autoSR(ctx);
|
|
if (snapXY) {
|
|
// Rects are in device coords.
|
|
ctx->IdentityMatrix();
|
|
}
|
|
ctx->Translate(rect.TopLeft() + gfxPoint(drawingRect.x, drawingRect.y));
|
|
|
|
NS_ASSERTION(!IsWidgetTypeDisabled(mDisabledWidgetTypes, aWidgetType),
|
|
"Trying to render an unsafe widget!");
|
|
|
|
bool safeState = IsWidgetStateSafe(mSafeWidgetStates, aWidgetType, &state);
|
|
if (!safeState) {
|
|
gLastGdkError = 0;
|
|
gdk_error_trap_push ();
|
|
}
|
|
|
|
// GtkStyles (used by the widget drawing backend) are created for a
|
|
// particular colormap/visual.
|
|
GdkColormap* colormap = moz_gtk_widget_get_colormap();
|
|
|
|
renderer.Draw(ctx, drawingRect.Size(), rendererFlags, colormap);
|
|
|
|
if (!safeState) {
|
|
gdk_flush();
|
|
gLastGdkError = gdk_error_trap_pop ();
|
|
|
|
if (gLastGdkError) {
|
|
#ifdef DEBUG
|
|
printf("GTK theme failed for widget type %d, error was %d, state was "
|
|
"[active=%d,focused=%d,inHover=%d,disabled=%d]\n",
|
|
aWidgetType, gLastGdkError, state.active, state.focused,
|
|
state.inHover, state.disabled);
|
|
#endif
|
|
NS_WARNING("GTK theme failed; disabling unsafe widget");
|
|
SetWidgetTypeDisabled(mDisabledWidgetTypes, aWidgetType);
|
|
// force refresh of the window, because the widget was not
|
|
// successfully drawn it must be redrawn using the default look
|
|
RefreshWidgetWindow(aFrame);
|
|
} else {
|
|
SetWidgetStateSafe(mSafeWidgetStates, aWidgetType, &state);
|
|
}
|
|
}
|
|
|
|
// Indeterminate progress bar are animated.
|
|
if (gtkWidgetType == MOZ_GTK_PROGRESS_CHUNK_INDETERMINATE ||
|
|
gtkWidgetType == MOZ_GTK_PROGRESS_CHUNK_VERTICAL_INDETERMINATE) {
|
|
if (!QueueAnimatedContentForRefresh(aFrame->GetContent(), 30)) {
|
|
NS_WARNING("unable to animate widget!");
|
|
}
|
|
}
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsNativeThemeGTK::GetWidgetBorder(nsDeviceContext* aContext, nsIFrame* aFrame,
|
|
PRUint8 aWidgetType, nsIntMargin* aResult)
|
|
{
|
|
GtkTextDirection direction = GetTextDirection(aFrame);
|
|
aResult->top = aResult->left = aResult->right = aResult->bottom = 0;
|
|
switch (aWidgetType) {
|
|
case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
|
|
case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL:
|
|
{
|
|
MozGtkScrollbarMetrics metrics;
|
|
moz_gtk_get_scrollbar_metrics(&metrics);
|
|
aResult->top = aResult->left = aResult->right = aResult->bottom = metrics.trough_border;
|
|
}
|
|
break;
|
|
case NS_THEME_TOOLBOX:
|
|
// gtk has no toolbox equivalent. So, although we map toolbox to
|
|
// gtk's 'toolbar' for purposes of painting the widget background,
|
|
// we don't use the toolbar border for toolbox.
|
|
break;
|
|
case NS_THEME_TOOLBAR_DUAL_BUTTON:
|
|
// TOOLBAR_DUAL_BUTTON is an interesting case. We want a border to draw
|
|
// around the entire button + dropdown, and also an inner border if you're
|
|
// over the button part. But, we want the inner button to be right up
|
|
// against the edge of the outer button so that the borders overlap.
|
|
// To make this happen, we draw a button border for the outer button,
|
|
// but don't reserve any space for it.
|
|
break;
|
|
case NS_THEME_TAB:
|
|
// Top tabs have no bottom border, bottom tabs have no top border
|
|
moz_gtk_get_widget_border(MOZ_GTK_TAB, &aResult->left, &aResult->top,
|
|
&aResult->right, &aResult->bottom, direction,
|
|
FALSE);
|
|
if (IsBottomTab(aFrame))
|
|
aResult->top = 0;
|
|
else
|
|
aResult->bottom = 0;
|
|
break;
|
|
case NS_THEME_MENUITEM:
|
|
case NS_THEME_CHECKMENUITEM:
|
|
case NS_THEME_RADIOMENUITEM:
|
|
// For regular menuitems, we will be using GetWidgetPadding instead of
|
|
// GetWidgetBorder to pad up the widget's internals; other menuitems
|
|
// will need to fall through and use the default case as before.
|
|
if (IsRegularMenuItem(aFrame))
|
|
break;
|
|
default:
|
|
{
|
|
GtkThemeWidgetType gtkWidgetType;
|
|
if (GetGtkWidgetAndState(aWidgetType, aFrame, gtkWidgetType, nsnull,
|
|
nsnull)) {
|
|
moz_gtk_get_widget_border(gtkWidgetType, &aResult->left, &aResult->top,
|
|
&aResult->right, &aResult->bottom, direction,
|
|
IsFrameContentNodeInNamespace(aFrame, kNameSpaceID_XHTML));
|
|
}
|
|
}
|
|
}
|
|
return NS_OK;
|
|
}
|
|
|
|
bool
|
|
nsNativeThemeGTK::GetWidgetPadding(nsDeviceContext* aContext,
|
|
nsIFrame* aFrame, PRUint8 aWidgetType,
|
|
nsIntMargin* aResult)
|
|
{
|
|
switch (aWidgetType) {
|
|
case NS_THEME_BUTTON_FOCUS:
|
|
case NS_THEME_TOOLBAR_BUTTON:
|
|
case NS_THEME_TOOLBAR_DUAL_BUTTON:
|
|
case NS_THEME_TAB_SCROLLARROW_BACK:
|
|
case NS_THEME_TAB_SCROLLARROW_FORWARD:
|
|
case NS_THEME_DROPDOWN_BUTTON:
|
|
case NS_THEME_TOOLBAR_BUTTON_DROPDOWN:
|
|
case NS_THEME_BUTTON_ARROW_UP:
|
|
case NS_THEME_BUTTON_ARROW_DOWN:
|
|
case NS_THEME_BUTTON_ARROW_NEXT:
|
|
case NS_THEME_BUTTON_ARROW_PREVIOUS:
|
|
// Radios and checkboxes return a fixed size in GetMinimumWidgetSize
|
|
// and have a meaningful baseline, so they can't have
|
|
// author-specified padding.
|
|
case NS_THEME_CHECKBOX:
|
|
case NS_THEME_RADIO:
|
|
aResult->SizeTo(0, 0, 0, 0);
|
|
return true;
|
|
case NS_THEME_MENUITEM:
|
|
case NS_THEME_CHECKMENUITEM:
|
|
case NS_THEME_RADIOMENUITEM:
|
|
{
|
|
// Menubar and menulist have their padding specified in CSS.
|
|
if (!IsRegularMenuItem(aFrame))
|
|
return false;
|
|
|
|
aResult->SizeTo(0, 0, 0, 0);
|
|
GtkThemeWidgetType gtkWidgetType;
|
|
if (GetGtkWidgetAndState(aWidgetType, aFrame, gtkWidgetType, nsnull,
|
|
nsnull)) {
|
|
moz_gtk_get_widget_border(gtkWidgetType, &aResult->left, &aResult->top,
|
|
&aResult->right, &aResult->bottom, GetTextDirection(aFrame),
|
|
IsFrameContentNodeInNamespace(aFrame, kNameSpaceID_XHTML));
|
|
}
|
|
|
|
gint horizontal_padding;
|
|
|
|
if (aWidgetType == NS_THEME_MENUITEM)
|
|
moz_gtk_menuitem_get_horizontal_padding(&horizontal_padding);
|
|
else
|
|
moz_gtk_checkmenuitem_get_horizontal_padding(&horizontal_padding);
|
|
|
|
aResult->left += horizontal_padding;
|
|
aResult->right += horizontal_padding;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool
|
|
nsNativeThemeGTK::GetWidgetOverflow(nsDeviceContext* aContext,
|
|
nsIFrame* aFrame, PRUint8 aWidgetType,
|
|
nsRect* aOverflowRect)
|
|
{
|
|
nsMargin m;
|
|
PRInt32 p2a;
|
|
nsIntMargin extraSize;
|
|
if (!GetExtraSizeForWidget(aFrame, aWidgetType, &extraSize))
|
|
return false;
|
|
|
|
p2a = aContext->AppUnitsPerDevPixel();
|
|
m = nsMargin(NSIntPixelsToAppUnits(extraSize.left, p2a),
|
|
NSIntPixelsToAppUnits(extraSize.top, p2a),
|
|
NSIntPixelsToAppUnits(extraSize.right, p2a),
|
|
NSIntPixelsToAppUnits(extraSize.bottom, p2a));
|
|
|
|
aOverflowRect->Inflate(m);
|
|
return true;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsNativeThemeGTK::GetMinimumWidgetSize(nsRenderingContext* aContext,
|
|
nsIFrame* aFrame, PRUint8 aWidgetType,
|
|
nsIntSize* aResult, bool* aIsOverridable)
|
|
{
|
|
aResult->width = aResult->height = 0;
|
|
*aIsOverridable = true;
|
|
|
|
switch (aWidgetType) {
|
|
case NS_THEME_SCROLLBAR_BUTTON_UP:
|
|
case NS_THEME_SCROLLBAR_BUTTON_DOWN:
|
|
{
|
|
MozGtkScrollbarMetrics metrics;
|
|
moz_gtk_get_scrollbar_metrics(&metrics);
|
|
|
|
aResult->width = metrics.slider_width;
|
|
aResult->height = metrics.stepper_size;
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
case NS_THEME_SCROLLBAR_BUTTON_LEFT:
|
|
case NS_THEME_SCROLLBAR_BUTTON_RIGHT:
|
|
{
|
|
MozGtkScrollbarMetrics metrics;
|
|
moz_gtk_get_scrollbar_metrics(&metrics);
|
|
|
|
aResult->width = metrics.stepper_size;
|
|
aResult->height = metrics.slider_width;
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
case NS_THEME_SPLITTER:
|
|
{
|
|
gint metrics;
|
|
if (IsHorizontal(aFrame)) {
|
|
moz_gtk_splitter_get_metrics(GTK_ORIENTATION_HORIZONTAL, &metrics);
|
|
aResult->width = metrics;
|
|
aResult->height = 0;
|
|
} else {
|
|
moz_gtk_splitter_get_metrics(GTK_ORIENTATION_VERTICAL, &metrics);
|
|
aResult->width = 0;
|
|
aResult->height = metrics;
|
|
}
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL:
|
|
case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
|
|
{
|
|
/* While we enforce a minimum size for the thumb, this is ignored
|
|
* for the some scrollbars if buttons are hidden (bug 513006) because
|
|
* the thumb isn't a direct child of the scrollbar, unlike the buttons
|
|
* or track. So add a minimum size to the track as well to prevent a
|
|
* 0-width scrollbar. */
|
|
MozGtkScrollbarMetrics metrics;
|
|
moz_gtk_get_scrollbar_metrics(&metrics);
|
|
|
|
if (aWidgetType == NS_THEME_SCROLLBAR_TRACK_VERTICAL)
|
|
aResult->width = metrics.slider_width;
|
|
else
|
|
aResult->height = metrics.slider_width;
|
|
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
case NS_THEME_SCROLLBAR_THUMB_VERTICAL:
|
|
case NS_THEME_SCROLLBAR_THUMB_HORIZONTAL:
|
|
{
|
|
MozGtkScrollbarMetrics metrics;
|
|
moz_gtk_get_scrollbar_metrics(&metrics);
|
|
|
|
nsRect rect = aFrame->GetParent()->GetRect();
|
|
PRInt32 p2a = aFrame->PresContext()->DeviceContext()->
|
|
AppUnitsPerDevPixel();
|
|
nsMargin margin;
|
|
|
|
/* Get the available space, if that is smaller then the minimum size,
|
|
* adjust the mininum size to fit into it.
|
|
* Setting aIsOverridable to true has no effect for thumbs. */
|
|
aFrame->GetMargin(margin);
|
|
rect.Deflate(margin);
|
|
aFrame->GetParent()->GetBorderAndPadding(margin);
|
|
rect.Deflate(margin);
|
|
|
|
if (aWidgetType == NS_THEME_SCROLLBAR_THUMB_VERTICAL) {
|
|
aResult->width = metrics.slider_width;
|
|
aResult->height = NS_MIN(NSAppUnitsToIntPixels(rect.height, p2a),
|
|
metrics.min_slider_size);
|
|
} else {
|
|
aResult->height = metrics.slider_width;
|
|
aResult->width = NS_MIN(NSAppUnitsToIntPixels(rect.width, p2a),
|
|
metrics.min_slider_size);
|
|
}
|
|
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
case NS_THEME_SCALE_THUMB_HORIZONTAL:
|
|
case NS_THEME_SCALE_THUMB_VERTICAL:
|
|
{
|
|
gint thumb_length, thumb_height;
|
|
|
|
if (aWidgetType == NS_THEME_SCALE_THUMB_VERTICAL) {
|
|
moz_gtk_get_scalethumb_metrics(GTK_ORIENTATION_VERTICAL, &thumb_length, &thumb_height);
|
|
aResult->width = thumb_height;
|
|
aResult->height = thumb_length;
|
|
} else {
|
|
moz_gtk_get_scalethumb_metrics(GTK_ORIENTATION_HORIZONTAL, &thumb_length, &thumb_height);
|
|
aResult->width = thumb_length;
|
|
aResult->height = thumb_height;
|
|
}
|
|
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
case NS_THEME_TAB_SCROLLARROW_BACK:
|
|
case NS_THEME_TAB_SCROLLARROW_FORWARD:
|
|
{
|
|
moz_gtk_get_tab_scroll_arrow_size(&aResult->width, &aResult->height);
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
case NS_THEME_DROPDOWN_BUTTON:
|
|
{
|
|
moz_gtk_get_combo_box_entry_button_size(&aResult->width,
|
|
&aResult->height);
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
case NS_THEME_MENUSEPARATOR:
|
|
{
|
|
gint separator_height;
|
|
|
|
moz_gtk_get_menu_separator_height(&separator_height);
|
|
aResult->height = separator_height;
|
|
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
case NS_THEME_CHECKBOX:
|
|
case NS_THEME_RADIO:
|
|
{
|
|
gint indicator_size, indicator_spacing;
|
|
|
|
if (aWidgetType == NS_THEME_CHECKBOX) {
|
|
moz_gtk_checkbox_get_metrics(&indicator_size, &indicator_spacing);
|
|
} else {
|
|
moz_gtk_radio_get_metrics(&indicator_size, &indicator_spacing);
|
|
}
|
|
|
|
// Include space for the indicator and the padding around it.
|
|
aResult->width = indicator_size;
|
|
aResult->height = indicator_size;
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
case NS_THEME_TOOLBAR_BUTTON_DROPDOWN:
|
|
case NS_THEME_BUTTON_ARROW_UP:
|
|
case NS_THEME_BUTTON_ARROW_DOWN:
|
|
case NS_THEME_BUTTON_ARROW_NEXT:
|
|
case NS_THEME_BUTTON_ARROW_PREVIOUS:
|
|
{
|
|
moz_gtk_get_arrow_size(&aResult->width, &aResult->height);
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
case NS_THEME_CHECKBOX_CONTAINER:
|
|
case NS_THEME_RADIO_CONTAINER:
|
|
case NS_THEME_CHECKBOX_LABEL:
|
|
case NS_THEME_RADIO_LABEL:
|
|
case NS_THEME_BUTTON:
|
|
case NS_THEME_DROPDOWN:
|
|
case NS_THEME_TOOLBAR_BUTTON:
|
|
case NS_THEME_TREEVIEW_HEADER_CELL:
|
|
{
|
|
// Just include our border, and let the box code augment the size.
|
|
nsIntMargin border;
|
|
nsNativeThemeGTK::GetWidgetBorder(aContext->DeviceContext(),
|
|
aFrame, aWidgetType, &border);
|
|
aResult->width = border.left + border.right;
|
|
aResult->height = border.top + border.bottom;
|
|
}
|
|
break;
|
|
case NS_THEME_TOOLBAR_SEPARATOR:
|
|
{
|
|
gint separator_width;
|
|
|
|
moz_gtk_get_toolbar_separator_width(&separator_width);
|
|
|
|
aResult->width = separator_width;
|
|
}
|
|
break;
|
|
case NS_THEME_SPINNER:
|
|
// hard code these sizes
|
|
aResult->width = 14;
|
|
aResult->height = 26;
|
|
break;
|
|
case NS_THEME_TREEVIEW_HEADER_SORTARROW:
|
|
case NS_THEME_SPINNER_UP_BUTTON:
|
|
case NS_THEME_SPINNER_DOWN_BUTTON:
|
|
// hard code these sizes
|
|
aResult->width = 14;
|
|
aResult->height = 13;
|
|
break;
|
|
case NS_THEME_RESIZER:
|
|
// same as Windows to make our lives easier
|
|
aResult->width = aResult->height = 15;
|
|
*aIsOverridable = false;
|
|
break;
|
|
case NS_THEME_TREEVIEW_TWISTY:
|
|
case NS_THEME_TREEVIEW_TWISTY_OPEN:
|
|
{
|
|
gint expander_size;
|
|
|
|
moz_gtk_get_treeview_expander_size(&expander_size);
|
|
aResult->width = aResult->height = expander_size;
|
|
*aIsOverridable = false;
|
|
}
|
|
break;
|
|
}
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsNativeThemeGTK::WidgetStateChanged(nsIFrame* aFrame, PRUint8 aWidgetType,
|
|
nsIAtom* aAttribute, bool* aShouldRepaint)
|
|
{
|
|
// Some widget types just never change state.
|
|
if (aWidgetType == NS_THEME_TOOLBOX ||
|
|
aWidgetType == NS_THEME_TOOLBAR ||
|
|
aWidgetType == NS_THEME_STATUSBAR ||
|
|
aWidgetType == NS_THEME_STATUSBAR_PANEL ||
|
|
aWidgetType == NS_THEME_STATUSBAR_RESIZER_PANEL ||
|
|
aWidgetType == NS_THEME_PROGRESSBAR_CHUNK ||
|
|
aWidgetType == NS_THEME_PROGRESSBAR_CHUNK_VERTICAL ||
|
|
aWidgetType == NS_THEME_PROGRESSBAR ||
|
|
aWidgetType == NS_THEME_PROGRESSBAR_VERTICAL ||
|
|
aWidgetType == NS_THEME_MENUBAR ||
|
|
aWidgetType == NS_THEME_MENUPOPUP ||
|
|
aWidgetType == NS_THEME_TOOLTIP ||
|
|
aWidgetType == NS_THEME_MENUSEPARATOR ||
|
|
aWidgetType == NS_THEME_WINDOW ||
|
|
aWidgetType == NS_THEME_DIALOG) {
|
|
*aShouldRepaint = false;
|
|
return NS_OK;
|
|
}
|
|
|
|
if ((aWidgetType == NS_THEME_SCROLLBAR_BUTTON_UP ||
|
|
aWidgetType == NS_THEME_SCROLLBAR_BUTTON_DOWN ||
|
|
aWidgetType == NS_THEME_SCROLLBAR_BUTTON_LEFT ||
|
|
aWidgetType == NS_THEME_SCROLLBAR_BUTTON_RIGHT) &&
|
|
(aAttribute == nsGkAtoms::curpos ||
|
|
aAttribute == nsGkAtoms::maxpos)) {
|
|
*aShouldRepaint = true;
|
|
return NS_OK;
|
|
}
|
|
|
|
// XXXdwh Not sure what can really be done here. Can at least guess for
|
|
// specific widgets that they're highly unlikely to have certain states.
|
|
// For example, a toolbar doesn't care about any states.
|
|
if (!aAttribute) {
|
|
// Hover/focus/active changed. Always repaint.
|
|
*aShouldRepaint = true;
|
|
}
|
|
else {
|
|
// Check the attribute to see if it's relevant.
|
|
// disabled, checked, dlgtype, default, etc.
|
|
*aShouldRepaint = false;
|
|
if (aAttribute == nsGkAtoms::disabled ||
|
|
aAttribute == nsGkAtoms::checked ||
|
|
aAttribute == nsGkAtoms::selected ||
|
|
aAttribute == nsGkAtoms::focused ||
|
|
aAttribute == nsGkAtoms::readonly ||
|
|
aAttribute == nsGkAtoms::_default ||
|
|
aAttribute == nsGkAtoms::menuactive ||
|
|
aAttribute == nsGkAtoms::open ||
|
|
aAttribute == nsGkAtoms::parentfocused)
|
|
*aShouldRepaint = true;
|
|
}
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsNativeThemeGTK::ThemeChanged()
|
|
{
|
|
nsDeviceContext::ClearCachedSystemFonts();
|
|
|
|
memset(mDisabledWidgetTypes, 0, sizeof(mDisabledWidgetTypes));
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP_(bool)
|
|
nsNativeThemeGTK::ThemeSupportsWidget(nsPresContext* aPresContext,
|
|
nsIFrame* aFrame,
|
|
PRUint8 aWidgetType)
|
|
{
|
|
if (IsWidgetTypeDisabled(mDisabledWidgetTypes, aWidgetType))
|
|
return false;
|
|
|
|
switch (aWidgetType) {
|
|
case NS_THEME_BUTTON:
|
|
case NS_THEME_BUTTON_FOCUS:
|
|
case NS_THEME_RADIO:
|
|
case NS_THEME_CHECKBOX:
|
|
case NS_THEME_TOOLBOX: // N/A
|
|
case NS_THEME_TOOLBAR:
|
|
case NS_THEME_TOOLBAR_BUTTON:
|
|
case NS_THEME_TOOLBAR_DUAL_BUTTON: // so we can override the border with 0
|
|
case NS_THEME_TOOLBAR_BUTTON_DROPDOWN:
|
|
case NS_THEME_BUTTON_ARROW_UP:
|
|
case NS_THEME_BUTTON_ARROW_DOWN:
|
|
case NS_THEME_BUTTON_ARROW_NEXT:
|
|
case NS_THEME_BUTTON_ARROW_PREVIOUS:
|
|
case NS_THEME_TOOLBAR_SEPARATOR:
|
|
case NS_THEME_TOOLBAR_GRIPPER:
|
|
case NS_THEME_STATUSBAR:
|
|
case NS_THEME_STATUSBAR_PANEL:
|
|
case NS_THEME_STATUSBAR_RESIZER_PANEL:
|
|
case NS_THEME_RESIZER:
|
|
case NS_THEME_LISTBOX:
|
|
// case NS_THEME_LISTBOX_LISTITEM:
|
|
case NS_THEME_TREEVIEW:
|
|
// case NS_THEME_TREEVIEW_TREEITEM:
|
|
case NS_THEME_TREEVIEW_TWISTY:
|
|
// case NS_THEME_TREEVIEW_LINE:
|
|
// case NS_THEME_TREEVIEW_HEADER:
|
|
case NS_THEME_TREEVIEW_HEADER_CELL:
|
|
case NS_THEME_TREEVIEW_HEADER_SORTARROW:
|
|
case NS_THEME_TREEVIEW_TWISTY_OPEN:
|
|
case NS_THEME_PROGRESSBAR:
|
|
case NS_THEME_PROGRESSBAR_CHUNK:
|
|
case NS_THEME_PROGRESSBAR_VERTICAL:
|
|
case NS_THEME_PROGRESSBAR_CHUNK_VERTICAL:
|
|
case NS_THEME_TAB:
|
|
// case NS_THEME_TAB_PANEL:
|
|
case NS_THEME_TAB_PANELS:
|
|
case NS_THEME_TAB_SCROLLARROW_BACK:
|
|
case NS_THEME_TAB_SCROLLARROW_FORWARD:
|
|
case NS_THEME_TOOLTIP:
|
|
case NS_THEME_SPINNER:
|
|
case NS_THEME_SPINNER_UP_BUTTON:
|
|
case NS_THEME_SPINNER_DOWN_BUTTON:
|
|
case NS_THEME_SPINNER_TEXTFIELD:
|
|
// case NS_THEME_SCROLLBAR: (n/a for gtk)
|
|
// case NS_THEME_SCROLLBAR_SMALL: (n/a for gtk)
|
|
case NS_THEME_SCROLLBAR_BUTTON_UP:
|
|
case NS_THEME_SCROLLBAR_BUTTON_DOWN:
|
|
case NS_THEME_SCROLLBAR_BUTTON_LEFT:
|
|
case NS_THEME_SCROLLBAR_BUTTON_RIGHT:
|
|
case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL:
|
|
case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
|
|
case NS_THEME_SCROLLBAR_THUMB_HORIZONTAL:
|
|
case NS_THEME_SCROLLBAR_THUMB_VERTICAL:
|
|
case NS_THEME_TEXTFIELD:
|
|
case NS_THEME_TEXTFIELD_MULTILINE:
|
|
case NS_THEME_TEXTFIELD_CARET:
|
|
case NS_THEME_DROPDOWN_TEXTFIELD:
|
|
case NS_THEME_SCALE_HORIZONTAL:
|
|
case NS_THEME_SCALE_THUMB_HORIZONTAL:
|
|
case NS_THEME_SCALE_VERTICAL:
|
|
case NS_THEME_SCALE_THUMB_VERTICAL:
|
|
// case NS_THEME_SCALE_THUMB_START:
|
|
// case NS_THEME_SCALE_THUMB_END:
|
|
// case NS_THEME_SCALE_TICK:
|
|
case NS_THEME_CHECKBOX_CONTAINER:
|
|
case NS_THEME_RADIO_CONTAINER:
|
|
case NS_THEME_CHECKBOX_LABEL:
|
|
case NS_THEME_RADIO_LABEL:
|
|
case NS_THEME_MENUBAR:
|
|
case NS_THEME_MENUPOPUP:
|
|
case NS_THEME_MENUITEM:
|
|
case NS_THEME_MENUARROW:
|
|
case NS_THEME_MENUSEPARATOR:
|
|
case NS_THEME_CHECKMENUITEM:
|
|
case NS_THEME_RADIOMENUITEM:
|
|
case NS_THEME_SPLITTER:
|
|
case NS_THEME_WINDOW:
|
|
case NS_THEME_DIALOG:
|
|
case NS_THEME_DROPDOWN:
|
|
case NS_THEME_DROPDOWN_TEXT:
|
|
return !IsWidgetStyled(aPresContext, aFrame, aWidgetType);
|
|
|
|
case NS_THEME_DROPDOWN_BUTTON:
|
|
// "Native" dropdown buttons cause padding and margin problems, but only
|
|
// in HTML so allow them in XUL.
|
|
return (!aFrame || IsFrameContentNodeInNamespace(aFrame, kNameSpaceID_XUL)) &&
|
|
!IsWidgetStyled(aPresContext, aFrame, aWidgetType);
|
|
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
NS_IMETHODIMP_(bool)
|
|
nsNativeThemeGTK::WidgetIsContainer(PRUint8 aWidgetType)
|
|
{
|
|
// XXXdwh At some point flesh all of this out.
|
|
if (aWidgetType == NS_THEME_DROPDOWN_BUTTON ||
|
|
aWidgetType == NS_THEME_RADIO ||
|
|
aWidgetType == NS_THEME_CHECKBOX ||
|
|
aWidgetType == NS_THEME_TAB_SCROLLARROW_BACK ||
|
|
aWidgetType == NS_THEME_TAB_SCROLLARROW_FORWARD ||
|
|
aWidgetType == NS_THEME_BUTTON_ARROW_UP ||
|
|
aWidgetType == NS_THEME_BUTTON_ARROW_DOWN ||
|
|
aWidgetType == NS_THEME_BUTTON_ARROW_NEXT ||
|
|
aWidgetType == NS_THEME_BUTTON_ARROW_PREVIOUS)
|
|
return false;
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
nsNativeThemeGTK::ThemeDrawsFocusForWidget(nsPresContext* aPresContext, nsIFrame* aFrame, PRUint8 aWidgetType)
|
|
{
|
|
if (aWidgetType == NS_THEME_DROPDOWN ||
|
|
aWidgetType == NS_THEME_BUTTON ||
|
|
aWidgetType == NS_THEME_TREEVIEW_HEADER_CELL)
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
bool
|
|
nsNativeThemeGTK::ThemeNeedsComboboxDropmarker()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
nsITheme::Transparency
|
|
nsNativeThemeGTK::GetWidgetTransparency(nsIFrame* aFrame, PRUint8 aWidgetType)
|
|
{
|
|
switch (aWidgetType) {
|
|
// These widgets always draw a default background.
|
|
case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
|
|
case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL:
|
|
case NS_THEME_SCALE_HORIZONTAL:
|
|
case NS_THEME_SCALE_VERTICAL:
|
|
case NS_THEME_TOOLBAR:
|
|
case NS_THEME_MENUBAR:
|
|
case NS_THEME_MENUPOPUP:
|
|
case NS_THEME_WINDOW:
|
|
case NS_THEME_DIALOG:
|
|
// Tooltips use gtk_paint_flat_box().
|
|
case NS_THEME_TOOLTIP:
|
|
return eOpaque;
|
|
}
|
|
|
|
return eUnknownTransparency;
|
|
}
|