mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
5000953110
--HG-- rename : widget/public/LookAndFeel.h => widget/LookAndFeel.h rename : widget/public/WidgetTraceEvent.h => widget/WidgetTraceEvent.h rename : widget/src/android/AndroidBridge.cpp => widget/android/AndroidBridge.cpp rename : widget/src/android/AndroidBridge.h => widget/android/AndroidBridge.h rename : widget/src/android/AndroidDirectTexture.cpp => widget/android/AndroidDirectTexture.cpp rename : widget/src/android/AndroidDirectTexture.h => widget/android/AndroidDirectTexture.h rename : widget/src/android/AndroidGraphicBuffer.cpp => widget/android/AndroidGraphicBuffer.cpp rename : widget/src/android/AndroidGraphicBuffer.h => widget/android/AndroidGraphicBuffer.h rename : widget/src/android/AndroidJNI.cpp => widget/android/AndroidJNI.cpp rename : widget/src/android/AndroidJavaWrappers.cpp => widget/android/AndroidJavaWrappers.cpp rename : widget/src/android/AndroidJavaWrappers.h => widget/android/AndroidJavaWrappers.h rename : widget/src/android/GfxInfo.cpp => widget/android/GfxInfo.cpp rename : widget/src/android/GfxInfo.h => widget/android/GfxInfo.h rename : widget/src/android/Makefile.in => widget/android/Makefile.in rename : widget/src/android/nsAppShell.cpp => widget/android/nsAppShell.cpp rename : widget/src/android/nsAppShell.h => widget/android/nsAppShell.h rename : widget/src/android/nsClipboard.cpp => widget/android/nsClipboard.cpp rename : widget/src/android/nsClipboard.h => widget/android/nsClipboard.h rename : widget/src/android/nsDeviceContextAndroid.cpp => widget/android/nsDeviceContextAndroid.cpp rename : widget/src/android/nsDeviceContextAndroid.h => widget/android/nsDeviceContextAndroid.h rename : widget/src/android/nsFilePicker.cpp => widget/android/nsFilePicker.cpp rename : widget/src/android/nsFilePicker.h => widget/android/nsFilePicker.h rename : widget/src/android/nsIAndroidBridge.idl => widget/android/nsIAndroidBridge.idl rename : widget/src/android/nsIMEPicker.cpp => widget/android/nsIMEPicker.cpp rename : widget/src/android/nsIMEPicker.h => widget/android/nsIMEPicker.h rename : widget/src/android/nsIdleServiceAndroid.cpp => widget/android/nsIdleServiceAndroid.cpp rename : widget/src/android/nsIdleServiceAndroid.h => widget/android/nsIdleServiceAndroid.h rename : widget/src/android/nsLookAndFeel.cpp => widget/android/nsLookAndFeel.cpp rename : widget/src/android/nsLookAndFeel.h => widget/android/nsLookAndFeel.h rename : widget/src/android/nsPrintOptionsAndroid.cpp => widget/android/nsPrintOptionsAndroid.cpp rename : widget/src/android/nsPrintOptionsAndroid.h => widget/android/nsPrintOptionsAndroid.h rename : widget/src/android/nsScreenManagerAndroid.cpp => widget/android/nsScreenManagerAndroid.cpp rename : widget/src/android/nsScreenManagerAndroid.h => widget/android/nsScreenManagerAndroid.h rename : widget/src/android/nsWidgetFactory.cpp => widget/android/nsWidgetFactory.cpp rename : widget/src/android/nsWindow.cpp => widget/android/nsWindow.cpp rename : widget/src/android/nsWindow.h => widget/android/nsWindow.h rename : widget/src/build/Makefile.in => widget/build/Makefile.in rename : widget/src/build/nsWinWidgetFactory.cpp => widget/build/nsWinWidgetFactory.cpp rename : widget/src/build/res/aliasb.cur => widget/build/res/aliasb.cur rename : widget/src/build/res/cell.cur => widget/build/res/cell.cur rename : widget/src/build/res/col_resize.cur => widget/build/res/col_resize.cur rename : widget/src/build/res/copy.cur => widget/build/res/copy.cur rename : widget/src/build/res/grab.cur => widget/build/res/grab.cur rename : widget/src/build/res/grabbing.cur => widget/build/res/grabbing.cur rename : widget/src/build/res/none.cur => widget/build/res/none.cur rename : widget/src/build/res/row_resize.cur => widget/build/res/row_resize.cur rename : widget/src/build/res/select.cur => widget/build/res/select.cur rename : widget/src/build/res/vertical_text.cur => widget/build/res/vertical_text.cur rename : widget/src/build/res/zoom_in.cur => widget/build/res/zoom_in.cur rename : widget/src/build/res/zoom_out.cur => widget/build/res/zoom_out.cur rename : widget/src/build/widget.rc => widget/build/widget.rc rename : widget/src/cocoa/ComplexTextInputPanel.h => widget/cocoa/ComplexTextInputPanel.h rename : widget/src/cocoa/ComplexTextInputPanel.mm => widget/cocoa/ComplexTextInputPanel.mm rename : widget/src/cocoa/CustomCocoaEvents.h => widget/cocoa/CustomCocoaEvents.h rename : widget/src/cocoa/GfxInfo.h => widget/cocoa/GfxInfo.h rename : widget/src/cocoa/GfxInfo.mm => widget/cocoa/GfxInfo.mm rename : widget/src/cocoa/Makefile.in => widget/cocoa/Makefile.in rename : widget/src/cocoa/TextInputHandler.h => widget/cocoa/TextInputHandler.h rename : widget/src/cocoa/TextInputHandler.mm => widget/cocoa/TextInputHandler.mm rename : widget/src/cocoa/WidgetTraceEvent.mm => widget/cocoa/WidgetTraceEvent.mm rename : widget/src/cocoa/crashtests/373122-1-inner.html => widget/cocoa/crashtests/373122-1-inner.html rename : widget/src/cocoa/crashtests/373122-1.html => widget/cocoa/crashtests/373122-1.html rename : widget/src/cocoa/crashtests/397209-1.html => widget/cocoa/crashtests/397209-1.html rename : widget/src/cocoa/crashtests/403296-1.xhtml => widget/cocoa/crashtests/403296-1.xhtml rename : widget/src/cocoa/crashtests/419737-1.html => widget/cocoa/crashtests/419737-1.html rename : widget/src/cocoa/crashtests/435223-1.html => widget/cocoa/crashtests/435223-1.html rename : widget/src/cocoa/crashtests/444260-1.xul => widget/cocoa/crashtests/444260-1.xul rename : widget/src/cocoa/crashtests/444864-1.html => widget/cocoa/crashtests/444864-1.html rename : widget/src/cocoa/crashtests/449111-1.html => widget/cocoa/crashtests/449111-1.html rename : widget/src/cocoa/crashtests/460349-1.xhtml => widget/cocoa/crashtests/460349-1.xhtml rename : widget/src/cocoa/crashtests/460387-1.html => widget/cocoa/crashtests/460387-1.html rename : widget/src/cocoa/crashtests/464589-1.html => widget/cocoa/crashtests/464589-1.html rename : widget/src/cocoa/crashtests/crashtests.list => widget/cocoa/crashtests/crashtests.list rename : widget/src/cocoa/cursors/arrowN.tiff => widget/cocoa/cursors/arrowN.tiff rename : widget/src/cocoa/cursors/arrowS.tiff => widget/cocoa/cursors/arrowS.tiff rename : widget/src/cocoa/cursors/colResize.tiff => widget/cocoa/cursors/colResize.tiff rename : widget/src/cocoa/cursors/help.tiff => widget/cocoa/cursors/help.tiff rename : widget/src/cocoa/cursors/rowResize.tiff => widget/cocoa/cursors/rowResize.tiff rename : widget/src/cocoa/cursors/sizeNE.tiff => widget/cocoa/cursors/sizeNE.tiff rename : widget/src/cocoa/cursors/sizeNESW.tiff => widget/cocoa/cursors/sizeNESW.tiff rename : widget/src/cocoa/cursors/sizeNS.tiff => widget/cocoa/cursors/sizeNS.tiff rename : widget/src/cocoa/cursors/sizeNW.tiff => widget/cocoa/cursors/sizeNW.tiff rename : widget/src/cocoa/cursors/sizeNWSE.tiff => widget/cocoa/cursors/sizeNWSE.tiff rename : widget/src/cocoa/cursors/sizeSE.tiff => widget/cocoa/cursors/sizeSE.tiff rename : widget/src/cocoa/cursors/sizeSW.tiff => widget/cocoa/cursors/sizeSW.tiff rename : widget/src/cocoa/cursors/spin1.tiff => widget/cocoa/cursors/spin1.tiff rename : widget/src/cocoa/cursors/spin2.tiff => widget/cocoa/cursors/spin2.tiff rename : widget/src/cocoa/cursors/spin3.tiff => widget/cocoa/cursors/spin3.tiff rename : widget/src/cocoa/cursors/spin4.tiff => widget/cocoa/cursors/spin4.tiff rename : widget/src/cocoa/cursors/vtIBeam.tiff => widget/cocoa/cursors/vtIBeam.tiff rename : widget/src/cocoa/cursors/zoomIn.tiff => widget/cocoa/cursors/zoomIn.tiff rename : widget/src/cocoa/cursors/zoomOut.tiff => widget/cocoa/cursors/zoomOut.tiff rename : widget/src/cocoa/mozView.h => widget/cocoa/mozView.h rename : widget/src/cocoa/nsAppShell.h => widget/cocoa/nsAppShell.h rename : widget/src/cocoa/nsAppShell.mm => widget/cocoa/nsAppShell.mm rename : widget/src/cocoa/nsBidiKeyboard.h => widget/cocoa/nsBidiKeyboard.h rename : widget/src/cocoa/nsBidiKeyboard.mm => widget/cocoa/nsBidiKeyboard.mm rename : widget/src/cocoa/nsChangeObserver.h => widget/cocoa/nsChangeObserver.h rename : widget/src/cocoa/nsChildView.h => widget/cocoa/nsChildView.h rename : widget/src/cocoa/nsChildView.mm => widget/cocoa/nsChildView.mm rename : widget/src/cocoa/nsClipboard.h => widget/cocoa/nsClipboard.h rename : widget/src/cocoa/nsClipboard.mm => widget/cocoa/nsClipboard.mm rename : widget/src/cocoa/nsCocoaFeatures.h => widget/cocoa/nsCocoaFeatures.h rename : widget/src/cocoa/nsCocoaFeatures.mm => widget/cocoa/nsCocoaFeatures.mm rename : widget/src/cocoa/nsCocoaUtils.h => widget/cocoa/nsCocoaUtils.h rename : widget/src/cocoa/nsCocoaUtils.mm => widget/cocoa/nsCocoaUtils.mm rename : widget/src/cocoa/nsCocoaWindow.h => widget/cocoa/nsCocoaWindow.h rename : widget/src/cocoa/nsCocoaWindow.mm => widget/cocoa/nsCocoaWindow.mm rename : widget/src/cocoa/nsCursorManager.h => widget/cocoa/nsCursorManager.h rename : widget/src/cocoa/nsCursorManager.mm => widget/cocoa/nsCursorManager.mm rename : widget/src/cocoa/nsDeviceContextSpecX.h => widget/cocoa/nsDeviceContextSpecX.h rename : widget/src/cocoa/nsDeviceContextSpecX.mm => widget/cocoa/nsDeviceContextSpecX.mm rename : widget/src/cocoa/nsDragService.h => widget/cocoa/nsDragService.h rename : widget/src/cocoa/nsDragService.mm => widget/cocoa/nsDragService.mm rename : widget/src/cocoa/nsFilePicker.h => widget/cocoa/nsFilePicker.h rename : widget/src/cocoa/nsFilePicker.mm => widget/cocoa/nsFilePicker.mm rename : widget/src/cocoa/nsIdleServiceX.h => widget/cocoa/nsIdleServiceX.h rename : widget/src/cocoa/nsIdleServiceX.mm => widget/cocoa/nsIdleServiceX.mm rename : widget/src/cocoa/nsLookAndFeel.h => widget/cocoa/nsLookAndFeel.h rename : widget/src/cocoa/nsLookAndFeel.mm => widget/cocoa/nsLookAndFeel.mm rename : widget/src/cocoa/nsMacCursor.h => widget/cocoa/nsMacCursor.h rename : widget/src/cocoa/nsMacCursor.mm => widget/cocoa/nsMacCursor.mm rename : widget/src/cocoa/nsMacDockSupport.h => widget/cocoa/nsMacDockSupport.h rename : widget/src/cocoa/nsMacDockSupport.mm => widget/cocoa/nsMacDockSupport.mm rename : widget/src/cocoa/nsMenuBarX.h => widget/cocoa/nsMenuBarX.h rename : widget/src/cocoa/nsMenuBarX.mm => widget/cocoa/nsMenuBarX.mm rename : widget/src/cocoa/nsMenuBaseX.h => widget/cocoa/nsMenuBaseX.h rename : widget/src/cocoa/nsMenuGroupOwnerX.h => widget/cocoa/nsMenuGroupOwnerX.h rename : widget/src/cocoa/nsMenuGroupOwnerX.mm => widget/cocoa/nsMenuGroupOwnerX.mm rename : widget/src/cocoa/nsMenuItemIconX.h => widget/cocoa/nsMenuItemIconX.h rename : widget/src/cocoa/nsMenuItemIconX.mm => widget/cocoa/nsMenuItemIconX.mm rename : widget/src/cocoa/nsMenuItemX.h => widget/cocoa/nsMenuItemX.h rename : widget/src/cocoa/nsMenuItemX.mm => widget/cocoa/nsMenuItemX.mm rename : widget/src/cocoa/nsMenuUtilsX.h => widget/cocoa/nsMenuUtilsX.h rename : widget/src/cocoa/nsMenuUtilsX.mm => widget/cocoa/nsMenuUtilsX.mm rename : widget/src/cocoa/nsMenuX.h => widget/cocoa/nsMenuX.h rename : widget/src/cocoa/nsMenuX.mm => widget/cocoa/nsMenuX.mm rename : widget/src/cocoa/nsNativeThemeCocoa.h => widget/cocoa/nsNativeThemeCocoa.h rename : widget/src/cocoa/nsNativeThemeCocoa.mm => widget/cocoa/nsNativeThemeCocoa.mm rename : widget/src/cocoa/nsNativeThemeColors.h => widget/cocoa/nsNativeThemeColors.h rename : widget/src/cocoa/nsPIWidgetCocoa.idl => widget/cocoa/nsPIWidgetCocoa.idl rename : widget/src/cocoa/nsPrintDialogX.h => widget/cocoa/nsPrintDialogX.h rename : widget/src/cocoa/nsPrintDialogX.mm => widget/cocoa/nsPrintDialogX.mm rename : widget/src/cocoa/nsPrintOptionsX.h => widget/cocoa/nsPrintOptionsX.h rename : widget/src/cocoa/nsPrintOptionsX.mm => widget/cocoa/nsPrintOptionsX.mm rename : widget/src/cocoa/nsPrintSettingsX.h => widget/cocoa/nsPrintSettingsX.h rename : widget/src/cocoa/nsPrintSettingsX.mm => widget/cocoa/nsPrintSettingsX.mm rename : widget/src/cocoa/nsScreenCocoa.h => widget/cocoa/nsScreenCocoa.h rename : widget/src/cocoa/nsScreenCocoa.mm => widget/cocoa/nsScreenCocoa.mm rename : widget/src/cocoa/nsScreenManagerCocoa.h => widget/cocoa/nsScreenManagerCocoa.h rename : widget/src/cocoa/nsScreenManagerCocoa.mm => widget/cocoa/nsScreenManagerCocoa.mm rename : widget/src/cocoa/nsSound.h => widget/cocoa/nsSound.h rename : widget/src/cocoa/nsSound.mm => widget/cocoa/nsSound.mm rename : widget/src/cocoa/nsStandaloneNativeMenu.h => widget/cocoa/nsStandaloneNativeMenu.h rename : widget/src/cocoa/nsStandaloneNativeMenu.mm => widget/cocoa/nsStandaloneNativeMenu.mm rename : widget/src/cocoa/nsToolkit.h => widget/cocoa/nsToolkit.h rename : widget/src/cocoa/nsToolkit.mm => widget/cocoa/nsToolkit.mm rename : widget/src/cocoa/nsWidgetFactory.mm => widget/cocoa/nsWidgetFactory.mm rename : widget/src/cocoa/nsWindowMap.h => widget/cocoa/nsWindowMap.h rename : widget/src/cocoa/nsWindowMap.mm => widget/cocoa/nsWindowMap.mm rename : widget/src/cocoa/resources/MainMenu.nib/classes.nib => widget/cocoa/resources/MainMenu.nib/classes.nib rename : widget/src/cocoa/resources/MainMenu.nib/info.nib => widget/cocoa/resources/MainMenu.nib/info.nib rename : widget/src/cocoa/resources/MainMenu.nib/keyedobjects.nib => widget/cocoa/resources/MainMenu.nib/keyedobjects.nib rename : widget/src/crashtests/303901-1.html => widget/crashtests/303901-1.html rename : widget/src/crashtests/303901-2.html => widget/crashtests/303901-2.html rename : widget/src/crashtests/380359-1.xhtml => widget/crashtests/380359-1.xhtml rename : widget/src/crashtests/crashtests.list => widget/crashtests/crashtests.list rename : widget/src/gonk/Framebuffer.cpp => widget/gonk/Framebuffer.cpp rename : widget/src/gonk/Framebuffer.h => widget/gonk/Framebuffer.h rename : widget/src/gonk/Makefile.in => widget/gonk/Makefile.in rename : widget/src/gonk/nsAppShell.cpp => widget/gonk/nsAppShell.cpp rename : widget/src/gonk/nsAppShell.h => widget/gonk/nsAppShell.h rename : widget/src/gonk/nsLookAndFeel.cpp => widget/gonk/nsLookAndFeel.cpp rename : widget/src/gonk/nsLookAndFeel.h => widget/gonk/nsLookAndFeel.h rename : widget/src/gonk/nsScreenManagerGonk.cpp => widget/gonk/nsScreenManagerGonk.cpp rename : widget/src/gonk/nsScreenManagerGonk.h => widget/gonk/nsScreenManagerGonk.h rename : widget/src/gonk/nsWidgetFactory.cpp => widget/gonk/nsWidgetFactory.cpp rename : widget/src/gonk/nsWindow.cpp => widget/gonk/nsWindow.cpp rename : widget/src/gonk/nsWindow.h => widget/gonk/nsWindow.h rename : widget/src/gtk2/Makefile.in => widget/gtk2/Makefile.in rename : widget/src/gtk2/WidgetTraceEvent.cpp => widget/gtk2/WidgetTraceEvent.cpp rename : widget/src/gtk2/crashtests/673390-1.html => widget/gtk2/crashtests/673390-1.html rename : widget/src/gtk2/crashtests/crashtests.list => widget/gtk2/crashtests/crashtests.list rename : widget/src/gtk2/gtk2compat.h => widget/gtk2/gtk2compat.h rename : widget/src/gtk2/gtk2drawing.c => widget/gtk2/gtk2drawing.c rename : widget/src/gtk2/gtkdrawing.h => widget/gtk2/gtkdrawing.h rename : widget/src/gtk2/maiRedundantObjectFactory.c => widget/gtk2/maiRedundantObjectFactory.c rename : widget/src/gtk2/maiRedundantObjectFactory.h => widget/gtk2/maiRedundantObjectFactory.h rename : widget/src/gtk2/mozcontainer.c => widget/gtk2/mozcontainer.c rename : widget/src/gtk2/mozcontainer.h => widget/gtk2/mozcontainer.h rename : widget/src/gtk2/nsAppShell.cpp => widget/gtk2/nsAppShell.cpp rename : widget/src/gtk2/nsAppShell.h => widget/gtk2/nsAppShell.h rename : widget/src/gtk2/nsBidiKeyboard.cpp => widget/gtk2/nsBidiKeyboard.cpp rename : widget/src/gtk2/nsBidiKeyboard.h => widget/gtk2/nsBidiKeyboard.h rename : widget/src/gtk2/nsCUPSShim.cpp => widget/gtk2/nsCUPSShim.cpp rename : widget/src/gtk2/nsCUPSShim.h => widget/gtk2/nsCUPSShim.h rename : widget/src/gtk2/nsClipboard.cpp => widget/gtk2/nsClipboard.cpp rename : widget/src/gtk2/nsClipboard.h => widget/gtk2/nsClipboard.h rename : widget/src/gtk2/nsDeviceContextSpecG.cpp => widget/gtk2/nsDeviceContextSpecG.cpp rename : widget/src/gtk2/nsDeviceContextSpecG.h => widget/gtk2/nsDeviceContextSpecG.h rename : widget/src/gtk2/nsDragService.cpp => widget/gtk2/nsDragService.cpp rename : widget/src/gtk2/nsDragService.h => widget/gtk2/nsDragService.h rename : widget/src/gtk2/nsFilePicker.cpp => widget/gtk2/nsFilePicker.cpp rename : widget/src/gtk2/nsFilePicker.h => widget/gtk2/nsFilePicker.h rename : widget/src/gtk2/nsGTKToolkit.h => widget/gtk2/nsGTKToolkit.h rename : widget/src/gtk2/nsGtkCursors.h => widget/gtk2/nsGtkCursors.h rename : widget/src/gtk2/nsGtkIMModule.cpp => widget/gtk2/nsGtkIMModule.cpp rename : widget/src/gtk2/nsGtkIMModule.h => widget/gtk2/nsGtkIMModule.h rename : widget/src/gtk2/nsGtkKeyUtils.cpp => widget/gtk2/nsGtkKeyUtils.cpp rename : widget/src/gtk2/nsGtkKeyUtils.h => widget/gtk2/nsGtkKeyUtils.h rename : widget/src/gtk2/nsIImageToPixbuf.h => widget/gtk2/nsIImageToPixbuf.h rename : widget/src/gtk2/nsIdleServiceGTK.cpp => widget/gtk2/nsIdleServiceGTK.cpp rename : widget/src/gtk2/nsIdleServiceGTK.h => widget/gtk2/nsIdleServiceGTK.h rename : widget/src/gtk2/nsImageToPixbuf.cpp => widget/gtk2/nsImageToPixbuf.cpp rename : widget/src/gtk2/nsImageToPixbuf.h => widget/gtk2/nsImageToPixbuf.h rename : widget/src/gtk2/nsLookAndFeel.cpp => widget/gtk2/nsLookAndFeel.cpp rename : widget/src/gtk2/nsLookAndFeel.h => widget/gtk2/nsLookAndFeel.h rename : widget/src/gtk2/nsNativeKeyBindings.cpp => widget/gtk2/nsNativeKeyBindings.cpp rename : widget/src/gtk2/nsNativeKeyBindings.h => widget/gtk2/nsNativeKeyBindings.h rename : widget/src/gtk2/nsNativeThemeGTK.cpp => widget/gtk2/nsNativeThemeGTK.cpp rename : widget/src/gtk2/nsNativeThemeGTK.h => widget/gtk2/nsNativeThemeGTK.h rename : widget/src/gtk2/nsPSPrinters.cpp => widget/gtk2/nsPSPrinters.cpp rename : widget/src/gtk2/nsPSPrinters.h => widget/gtk2/nsPSPrinters.h rename : widget/src/gtk2/nsPaperPS.cpp => widget/gtk2/nsPaperPS.cpp rename : widget/src/gtk2/nsPaperPS.h => widget/gtk2/nsPaperPS.h rename : widget/src/gtk2/nsPrintDialogGTK.cpp => widget/gtk2/nsPrintDialogGTK.cpp rename : widget/src/gtk2/nsPrintDialogGTK.h => widget/gtk2/nsPrintDialogGTK.h rename : widget/src/gtk2/nsPrintOptionsGTK.cpp => widget/gtk2/nsPrintOptionsGTK.cpp rename : widget/src/gtk2/nsPrintOptionsGTK.h => widget/gtk2/nsPrintOptionsGTK.h rename : widget/src/gtk2/nsPrintSettingsGTK.cpp => widget/gtk2/nsPrintSettingsGTK.cpp rename : widget/src/gtk2/nsPrintSettingsGTK.h => widget/gtk2/nsPrintSettingsGTK.h rename : widget/src/gtk2/nsScreenGtk.cpp => widget/gtk2/nsScreenGtk.cpp rename : widget/src/gtk2/nsScreenGtk.h => widget/gtk2/nsScreenGtk.h rename : widget/src/gtk2/nsScreenManagerGtk.cpp => widget/gtk2/nsScreenManagerGtk.cpp rename : widget/src/gtk2/nsScreenManagerGtk.h => widget/gtk2/nsScreenManagerGtk.h rename : widget/src/gtk2/nsSound.cpp => widget/gtk2/nsSound.cpp rename : widget/src/gtk2/nsSound.h => widget/gtk2/nsSound.h rename : widget/src/gtk2/nsToolkit.cpp => widget/gtk2/nsToolkit.cpp rename : widget/src/gtk2/nsWidgetFactory.cpp => widget/gtk2/nsWidgetFactory.cpp rename : widget/src/gtk2/nsWindow.cpp => widget/gtk2/nsWindow.cpp rename : widget/src/gtk2/nsWindow.h => widget/gtk2/nsWindow.h rename : widget/src/gtkxtbin/Makefile.in => widget/gtkxtbin/Makefile.in rename : widget/src/gtkxtbin/gtk2xtbin.c => widget/gtkxtbin/gtk2xtbin.c rename : widget/src/gtkxtbin/gtk2xtbin.h => widget/gtkxtbin/gtk2xtbin.h rename : widget/src/gtkxtbin/xembed.h => widget/gtkxtbin/xembed.h rename : widget/public/nsEvent.h => widget/nsEvent.h rename : widget/public/nsGUIEvent.h => widget/nsGUIEvent.h rename : widget/public/nsGUIEventIPC.h => widget/nsGUIEventIPC.h rename : widget/public/nsIAppShell.idl => widget/nsIAppShell.idl rename : widget/public/nsIBaseWindow.idl => widget/nsIBaseWindow.idl rename : widget/public/nsIBidiKeyboard.idl => widget/nsIBidiKeyboard.idl rename : widget/public/nsIClipboard.idl => widget/nsIClipboard.idl rename : widget/public/nsIClipboardDragDropHookList.idl => widget/nsIClipboardDragDropHookList.idl rename : widget/public/nsIClipboardDragDropHooks.idl => widget/nsIClipboardDragDropHooks.idl rename : widget/public/nsIClipboardHelper.idl => widget/nsIClipboardHelper.idl rename : widget/public/nsIClipboardOwner.idl => widget/nsIClipboardOwner.idl rename : widget/public/nsIDeviceContextSpec.h => widget/nsIDeviceContextSpec.h rename : widget/public/nsIDragService.idl => widget/nsIDragService.idl rename : widget/public/nsIDragSession.idl => widget/nsIDragSession.idl rename : widget/public/nsIDragSessionGTK.h => widget/nsIDragSessionGTK.h rename : widget/public/nsIDragSessionOS2.h => widget/nsIDragSessionOS2.h rename : widget/public/nsIFilePicker.idl => widget/nsIFilePicker.idl rename : widget/public/nsIFormatConverter.idl => widget/nsIFormatConverter.idl rename : widget/public/nsIGfxInfo.idl => widget/nsIGfxInfo.idl rename : widget/public/nsIGfxInfoDebug.idl => widget/nsIGfxInfoDebug.idl rename : widget/public/nsIIMEPicker.idl => widget/nsIIMEPicker.idl rename : widget/public/nsIIdleService.idl => widget/nsIIdleService.idl rename : widget/public/nsIJumpListBuilder.idl => widget/nsIJumpListBuilder.idl rename : widget/public/nsIJumpListItem.idl => widget/nsIJumpListItem.idl rename : widget/public/nsIMacDockSupport.idl => widget/nsIMacDockSupport.idl rename : widget/public/nsINativeKeyBindings.h => widget/nsINativeKeyBindings.h rename : widget/public/nsINativeMenuService.h => widget/nsINativeMenuService.h rename : widget/public/nsIPluginWidget.h => widget/nsIPluginWidget.h rename : widget/public/nsIPrintDialogService.h => widget/nsIPrintDialogService.h rename : widget/public/nsIPrintOptions.idl => widget/nsIPrintOptions.idl rename : widget/public/nsIPrintSession.idl => widget/nsIPrintSession.idl rename : widget/public/nsIPrintSettings.idl => widget/nsIPrintSettings.idl rename : widget/public/nsIPrintSettingsService.idl => widget/nsIPrintSettingsService.idl rename : widget/public/nsIPrintSettingsWin.idl => widget/nsIPrintSettingsWin.idl rename : widget/public/nsIRollupListener.h => widget/nsIRollupListener.h rename : widget/public/nsIRwsService.idl => widget/nsIRwsService.idl rename : widget/public/nsIScreen.idl => widget/nsIScreen.idl rename : widget/public/nsIScreenManager.idl => widget/nsIScreenManager.idl rename : widget/public/nsISound.idl => widget/nsISound.idl rename : widget/public/nsIStandaloneNativeMenu.idl => widget/nsIStandaloneNativeMenu.idl rename : widget/public/nsITaskbarOverlayIconController.idl => widget/nsITaskbarOverlayIconController.idl rename : widget/public/nsITaskbarPreview.idl => widget/nsITaskbarPreview.idl rename : widget/public/nsITaskbarPreviewButton.idl => widget/nsITaskbarPreviewButton.idl rename : widget/public/nsITaskbarPreviewController.idl => widget/nsITaskbarPreviewController.idl rename : widget/public/nsITaskbarProgress.idl => widget/nsITaskbarProgress.idl rename : widget/public/nsITaskbarTabPreview.idl => widget/nsITaskbarTabPreview.idl rename : widget/public/nsITaskbarWindowPreview.idl => widget/nsITaskbarWindowPreview.idl rename : widget/public/nsITransferable.idl => widget/nsITransferable.idl rename : widget/public/nsIWidget.h => widget/nsIWidget.h rename : widget/public/nsIWinTaskbar.idl => widget/nsIWinTaskbar.idl rename : widget/public/nsNativeWidget.h => widget/nsNativeWidget.h rename : widget/public/nsWidgetInitData.h => widget/nsWidgetInitData.h rename : widget/public/nsWidgetsCID.h => widget/nsWidgetsCID.h rename : widget/src/os2/Makefile.in => widget/os2/Makefile.in rename : widget/src/os2/MozSounds.cmd => widget/os2/MozSounds.cmd rename : widget/src/os2/README.firefox => widget/os2/README.firefox rename : widget/src/os2/README.seamonkey => widget/os2/README.seamonkey rename : widget/src/os2/README.thunderbird => widget/os2/README.thunderbird rename : widget/src/os2/nsAppShell.cpp => widget/os2/nsAppShell.cpp rename : widget/src/os2/nsAppShell.h => widget/os2/nsAppShell.h rename : widget/src/os2/nsBidiKeyboard.cpp => widget/os2/nsBidiKeyboard.cpp rename : widget/src/os2/nsBidiKeyboard.h => widget/os2/nsBidiKeyboard.h rename : widget/src/os2/nsClipboard.cpp => widget/os2/nsClipboard.cpp rename : widget/src/os2/nsClipboard.h => widget/os2/nsClipboard.h rename : widget/src/os2/nsDeviceContextSpecOS2.cpp => widget/os2/nsDeviceContextSpecOS2.cpp rename : widget/src/os2/nsDeviceContextSpecOS2.h => widget/os2/nsDeviceContextSpecOS2.h rename : widget/src/os2/nsDragService.cpp => widget/os2/nsDragService.cpp rename : widget/src/os2/nsDragService.h => widget/os2/nsDragService.h rename : widget/src/os2/nsFilePicker.cpp => widget/os2/nsFilePicker.cpp rename : widget/src/os2/nsFilePicker.h => widget/os2/nsFilePicker.h rename : widget/src/os2/nsGfxDefs.h => widget/os2/nsGfxDefs.h rename : widget/src/os2/nsIdleServiceOS2.cpp => widget/os2/nsIdleServiceOS2.cpp rename : widget/src/os2/nsIdleServiceOS2.h => widget/os2/nsIdleServiceOS2.h rename : widget/src/os2/nsLookAndFeel.cpp => widget/os2/nsLookAndFeel.cpp rename : widget/src/os2/nsLookAndFeel.h => widget/os2/nsLookAndFeel.h rename : widget/src/os2/nsOS2Uni.cpp => widget/os2/nsOS2Uni.cpp rename : widget/src/os2/nsOS2Uni.h => widget/os2/nsOS2Uni.h rename : widget/src/os2/nsPrintOS2.cpp => widget/os2/nsPrintOS2.cpp rename : widget/src/os2/nsPrintOS2.h => widget/os2/nsPrintOS2.h rename : widget/src/os2/nsPrintOptionsOS2.cpp => widget/os2/nsPrintOptionsOS2.cpp rename : widget/src/os2/nsPrintOptionsOS2.h => widget/os2/nsPrintOptionsOS2.h rename : widget/src/os2/nsPrintdOS2.h => widget/os2/nsPrintdOS2.h rename : widget/src/os2/nsRwsService.cpp => widget/os2/nsRwsService.cpp rename : widget/src/os2/nsRwsService.h => widget/os2/nsRwsService.h rename : widget/src/os2/nsScreenManagerOS2.cpp => widget/os2/nsScreenManagerOS2.cpp rename : widget/src/os2/nsScreenManagerOS2.h => widget/os2/nsScreenManagerOS2.h rename : widget/src/os2/nsScreenOS2.cpp => widget/os2/nsScreenOS2.cpp rename : widget/src/os2/nsScreenOS2.h => widget/os2/nsScreenOS2.h rename : widget/src/os2/nsSound.cpp => widget/os2/nsSound.cpp rename : widget/src/os2/nsSound.h => widget/os2/nsSound.h rename : widget/src/os2/nsWidgetFactory.cpp => widget/os2/nsWidgetFactory.cpp rename : widget/src/os2/nsWindow.cpp => widget/os2/nsWindow.cpp rename : widget/src/os2/nsWindow.h => widget/os2/nsWindow.h rename : widget/src/os2/os2FrameWindow.cpp => widget/os2/os2FrameWindow.cpp rename : widget/src/os2/os2FrameWindow.h => widget/os2/os2FrameWindow.h rename : widget/src/os2/res/aliasb.ptr => widget/os2/res/aliasb.ptr rename : widget/src/os2/res/arrow_wait.ptr => widget/os2/res/arrow_wait.ptr rename : widget/src/os2/res/cell.ptr => widget/os2/res/cell.ptr rename : widget/src/os2/res/col_resize.ptr => widget/os2/res/col_resize.ptr rename : widget/src/os2/res/copy.ptr => widget/os2/res/copy.ptr rename : widget/src/os2/res/crosshair.ptr => widget/os2/res/crosshair.ptr rename : widget/src/os2/res/dndtext.ico => widget/os2/res/dndtext.ico rename : widget/src/os2/res/dndurl.ico => widget/os2/res/dndurl.ico rename : widget/src/os2/res/grab.ptr => widget/os2/res/grab.ptr rename : widget/src/os2/res/grabbing.ptr => widget/os2/res/grabbing.ptr rename : widget/src/os2/res/help.ptr => widget/os2/res/help.ptr rename : widget/src/os2/res/none.ptr => widget/os2/res/none.ptr rename : widget/src/os2/res/row_resize.ptr => widget/os2/res/row_resize.ptr rename : widget/src/os2/res/select.ptr => widget/os2/res/select.ptr rename : widget/src/os2/res/vertical_text.ptr => widget/os2/res/vertical_text.ptr rename : widget/src/os2/res/zoom_in.ptr => widget/os2/res/zoom_in.ptr rename : widget/src/os2/res/zoom_out.ptr => widget/os2/res/zoom_out.ptr rename : widget/src/os2/rws.h => widget/os2/rws.h rename : widget/src/os2/rwserr.h => widget/os2/rwserr.h rename : widget/src/os2/wdgtos2rc.h => widget/os2/wdgtos2rc.h rename : widget/src/os2/widget.rc => widget/os2/widget.rc rename : widget/src/qt/Makefile.in => widget/qt/Makefile.in rename : widget/src/qt/faststartupqt/Makefile.in => widget/qt/faststartupqt/Makefile.in rename : widget/src/qt/faststartupqt/mozqwidgetfast.cpp => widget/qt/faststartupqt/mozqwidgetfast.cpp rename : widget/src/qt/faststartupqt/mozqwidgetfast.h => widget/qt/faststartupqt/mozqwidgetfast.h rename : widget/src/qt/faststartupqt/nsFastStartupQt.cpp => widget/qt/faststartupqt/nsFastStartupQt.cpp rename : widget/src/qt/faststartupqt/nsFastStartupQt.h => widget/qt/faststartupqt/nsFastStartupQt.h rename : widget/src/qt/mozSwipeGesture.cpp => widget/qt/mozSwipeGesture.cpp rename : widget/src/qt/mozSwipeGesture.h => widget/qt/mozSwipeGesture.h rename : widget/src/qt/moziqwidget.h => widget/qt/moziqwidget.h rename : widget/src/qt/mozqorientationsensorfilter.cpp => widget/qt/mozqorientationsensorfilter.cpp rename : widget/src/qt/mozqorientationsensorfilter.h => widget/qt/mozqorientationsensorfilter.h rename : widget/src/qt/mozqwidget.cpp => widget/qt/mozqwidget.cpp rename : widget/src/qt/mozqwidget.h => widget/qt/mozqwidget.h rename : widget/src/qt/nsAppShell.cpp => widget/qt/nsAppShell.cpp rename : widget/src/qt/nsAppShell.h => widget/qt/nsAppShell.h rename : widget/src/qt/nsBidiKeyboard.cpp => widget/qt/nsBidiKeyboard.cpp rename : widget/src/qt/nsBidiKeyboard.h => widget/qt/nsBidiKeyboard.h rename : widget/src/qt/nsClipboard.cpp => widget/qt/nsClipboard.cpp rename : widget/src/qt/nsClipboard.h => widget/qt/nsClipboard.h rename : widget/src/qt/nsCommonWidget.cpp => widget/qt/nsCommonWidget.cpp rename : widget/src/qt/nsCommonWidget.h => widget/qt/nsCommonWidget.h rename : widget/src/qt/nsDeviceContextSpecQt.cpp => widget/qt/nsDeviceContextSpecQt.cpp rename : widget/src/qt/nsDeviceContextSpecQt.h => widget/qt/nsDeviceContextSpecQt.h rename : widget/src/qt/nsDragService.cpp => widget/qt/nsDragService.cpp rename : widget/src/qt/nsDragService.h => widget/qt/nsDragService.h rename : widget/src/qt/nsFilePicker.cpp => widget/qt/nsFilePicker.cpp rename : widget/src/qt/nsFilePicker.h => widget/qt/nsFilePicker.h rename : widget/src/qt/nsIdleServiceQt.cpp => widget/qt/nsIdleServiceQt.cpp rename : widget/src/qt/nsIdleServiceQt.h => widget/qt/nsIdleServiceQt.h rename : widget/src/qt/nsLookAndFeel.cpp => widget/qt/nsLookAndFeel.cpp rename : widget/src/qt/nsLookAndFeel.h => widget/qt/nsLookAndFeel.h rename : widget/src/qt/nsMFilePicker.cpp => widget/qt/nsMFilePicker.cpp rename : widget/src/qt/nsMFilePicker.h => widget/qt/nsMFilePicker.h rename : widget/src/qt/nsNativeThemeQt.cpp => widget/qt/nsNativeThemeQt.cpp rename : widget/src/qt/nsNativeThemeQt.h => widget/qt/nsNativeThemeQt.h rename : widget/src/qt/nsPrintDialogQt.cpp => widget/qt/nsPrintDialogQt.cpp rename : widget/src/qt/nsPrintDialogQt.h => widget/qt/nsPrintDialogQt.h rename : widget/src/qt/nsPrintOptionsQt.cpp => widget/qt/nsPrintOptionsQt.cpp rename : widget/src/qt/nsPrintOptionsQt.h => widget/qt/nsPrintOptionsQt.h rename : widget/src/qt/nsPrintSettingsQt.cpp => widget/qt/nsPrintSettingsQt.cpp rename : widget/src/qt/nsPrintSettingsQt.h => widget/qt/nsPrintSettingsQt.h rename : widget/src/qt/nsQtKeyUtils.cpp => widget/qt/nsQtKeyUtils.cpp rename : widget/src/qt/nsQtKeyUtils.h => widget/qt/nsQtKeyUtils.h rename : widget/src/qt/nsScreenManagerQt.cpp => widget/qt/nsScreenManagerQt.cpp rename : widget/src/qt/nsScreenManagerQt.h => widget/qt/nsScreenManagerQt.h rename : widget/src/qt/nsScreenQt.cpp => widget/qt/nsScreenQt.cpp rename : widget/src/qt/nsScreenQt.h => widget/qt/nsScreenQt.h rename : widget/src/qt/nsSound.cpp => widget/qt/nsSound.cpp rename : widget/src/qt/nsSound.h => widget/qt/nsSound.h rename : widget/src/qt/nsWidgetFactory.cpp => widget/qt/nsWidgetFactory.cpp rename : widget/src/qt/nsWindow.cpp => widget/qt/nsWindow.cpp rename : widget/src/qt/nsWindow.h => widget/qt/nsWindow.h rename : widget/src/shared/Makefile.in => widget/shared/Makefile.in rename : widget/src/shared/WidgetUtils.cpp => widget/shared/WidgetUtils.cpp rename : widget/src/shared/WidgetUtils.h => widget/shared/WidgetUtils.h rename : widget/src/shared/nsShmImage.cpp => widget/shared/nsShmImage.cpp rename : widget/src/shared/nsShmImage.h => widget/shared/nsShmImage.h rename : widget/src/shared/x11/Makefile.in => widget/shared/x11/Makefile.in rename : widget/src/shared/x11/keysym2ucs.c => widget/shared/x11/keysym2ucs.c rename : widget/src/shared/x11/keysym2ucs.h => widget/shared/x11/keysym2ucs.h rename : widget/src/windows/AudioSession.cpp => widget/windows/AudioSession.cpp rename : widget/src/windows/AudioSession.h => widget/windows/AudioSession.h rename : widget/src/windows/GfxInfo.cpp => widget/windows/GfxInfo.cpp rename : widget/src/windows/GfxInfo.h => widget/windows/GfxInfo.h rename : widget/src/windows/IEnumFE.cpp => widget/windows/IEnumFE.cpp rename : widget/src/windows/IEnumFE.h => widget/windows/IEnumFE.h rename : widget/src/windows/JumpListBuilder.cpp => widget/windows/JumpListBuilder.cpp rename : widget/src/windows/JumpListBuilder.h => widget/windows/JumpListBuilder.h rename : widget/src/windows/JumpListItem.cpp => widget/windows/JumpListItem.cpp rename : widget/src/windows/JumpListItem.h => widget/windows/JumpListItem.h rename : widget/src/windows/KeyboardLayout.cpp => widget/windows/KeyboardLayout.cpp rename : widget/src/windows/KeyboardLayout.h => widget/windows/KeyboardLayout.h rename : widget/src/windows/LSPAnnotator.cpp => widget/windows/LSPAnnotator.cpp rename : widget/src/windows/Makefile.in => widget/windows/Makefile.in rename : widget/src/windows/TaskbarPreview.cpp => widget/windows/TaskbarPreview.cpp rename : widget/src/windows/TaskbarPreview.h => widget/windows/TaskbarPreview.h rename : widget/src/windows/TaskbarPreviewButton.cpp => widget/windows/TaskbarPreviewButton.cpp rename : widget/src/windows/TaskbarPreviewButton.h => widget/windows/TaskbarPreviewButton.h rename : widget/src/windows/TaskbarTabPreview.cpp => widget/windows/TaskbarTabPreview.cpp rename : widget/src/windows/TaskbarTabPreview.h => widget/windows/TaskbarTabPreview.h rename : widget/src/windows/TaskbarWindowPreview.cpp => widget/windows/TaskbarWindowPreview.cpp rename : widget/src/windows/TaskbarWindowPreview.h => widget/windows/TaskbarWindowPreview.h rename : widget/src/windows/WidgetTraceEvent.cpp => widget/windows/WidgetTraceEvent.cpp rename : widget/src/windows/WinTaskbar.cpp => widget/windows/WinTaskbar.cpp rename : widget/src/windows/WinTaskbar.h => widget/windows/WinTaskbar.h rename : widget/src/windows/WindowHook.cpp => widget/windows/WindowHook.cpp rename : widget/src/windows/WindowHook.h => widget/windows/WindowHook.h rename : widget/src/windows/nsAppShell.cpp => widget/windows/nsAppShell.cpp rename : widget/src/windows/nsAppShell.h => widget/windows/nsAppShell.h rename : widget/src/windows/nsBidiKeyboard.cpp => widget/windows/nsBidiKeyboard.cpp rename : widget/src/windows/nsBidiKeyboard.h => widget/windows/nsBidiKeyboard.h rename : widget/src/windows/nsClipboard.cpp => widget/windows/nsClipboard.cpp rename : widget/src/windows/nsClipboard.h => widget/windows/nsClipboard.h rename : widget/src/windows/nsDataObj.cpp => widget/windows/nsDataObj.cpp rename : widget/src/windows/nsDataObj.h => widget/windows/nsDataObj.h rename : widget/src/windows/nsDataObjCollection.cpp => widget/windows/nsDataObjCollection.cpp rename : widget/src/windows/nsDataObjCollection.h => widget/windows/nsDataObjCollection.h rename : widget/src/windows/nsDeviceContextSpecWin.cpp => widget/windows/nsDeviceContextSpecWin.cpp rename : widget/src/windows/nsDeviceContextSpecWin.h => widget/windows/nsDeviceContextSpecWin.h rename : widget/src/windows/nsDragService.cpp => widget/windows/nsDragService.cpp rename : widget/src/windows/nsDragService.h => widget/windows/nsDragService.h rename : widget/src/windows/nsFilePicker.cpp => widget/windows/nsFilePicker.cpp rename : widget/src/windows/nsFilePicker.h => widget/windows/nsFilePicker.h rename : widget/src/windows/nsIMM32Handler.cpp => widget/windows/nsIMM32Handler.cpp rename : widget/src/windows/nsIMM32Handler.h => widget/windows/nsIMM32Handler.h rename : widget/src/windows/nsIdleServiceWin.cpp => widget/windows/nsIdleServiceWin.cpp rename : widget/src/windows/nsIdleServiceWin.h => widget/windows/nsIdleServiceWin.h rename : widget/src/windows/nsImageClipboard.cpp => widget/windows/nsImageClipboard.cpp rename : widget/src/windows/nsImageClipboard.h => widget/windows/nsImageClipboard.h rename : widget/src/windows/nsLookAndFeel.cpp => widget/windows/nsLookAndFeel.cpp rename : widget/src/windows/nsLookAndFeel.h => widget/windows/nsLookAndFeel.h rename : widget/src/windows/nsNativeDragSource.cpp => widget/windows/nsNativeDragSource.cpp rename : widget/src/windows/nsNativeDragSource.h => widget/windows/nsNativeDragSource.h rename : widget/src/windows/nsNativeDragTarget.cpp => widget/windows/nsNativeDragTarget.cpp rename : widget/src/windows/nsNativeDragTarget.h => widget/windows/nsNativeDragTarget.h rename : widget/src/windows/nsNativeThemeWin.cpp => widget/windows/nsNativeThemeWin.cpp rename : widget/src/windows/nsNativeThemeWin.h => widget/windows/nsNativeThemeWin.h rename : widget/src/windows/nsPrintOptionsWin.cpp => widget/windows/nsPrintOptionsWin.cpp rename : widget/src/windows/nsPrintOptionsWin.h => widget/windows/nsPrintOptionsWin.h rename : widget/src/windows/nsPrintSettingsWin.cpp => widget/windows/nsPrintSettingsWin.cpp rename : widget/src/windows/nsPrintSettingsWin.h => widget/windows/nsPrintSettingsWin.h rename : widget/src/windows/nsScreenManagerWin.cpp => widget/windows/nsScreenManagerWin.cpp rename : widget/src/windows/nsScreenManagerWin.h => widget/windows/nsScreenManagerWin.h rename : widget/src/windows/nsScreenWin.cpp => widget/windows/nsScreenWin.cpp rename : widget/src/windows/nsScreenWin.h => widget/windows/nsScreenWin.h rename : widget/src/windows/nsSound.cpp => widget/windows/nsSound.cpp rename : widget/src/windows/nsSound.h => widget/windows/nsSound.h rename : widget/src/windows/nsTextStore.cpp => widget/windows/nsTextStore.cpp rename : widget/src/windows/nsTextStore.h => widget/windows/nsTextStore.h rename : widget/src/windows/nsToolkit.cpp => widget/windows/nsToolkit.cpp rename : widget/src/windows/nsToolkit.h => widget/windows/nsToolkit.h rename : widget/src/windows/nsUXThemeConstants.h => widget/windows/nsUXThemeConstants.h rename : widget/src/windows/nsUXThemeData.cpp => widget/windows/nsUXThemeData.cpp rename : widget/src/windows/nsUXThemeData.h => widget/windows/nsUXThemeData.h rename : widget/src/windows/nsWinGesture.cpp => widget/windows/nsWinGesture.cpp rename : widget/src/windows/nsWinGesture.h => widget/windows/nsWinGesture.h rename : widget/src/windows/nsWindow.cpp => widget/windows/nsWindow.cpp rename : widget/src/windows/nsWindow.h => widget/windows/nsWindow.h rename : widget/src/windows/nsWindowDbg.cpp => widget/windows/nsWindowDbg.cpp rename : widget/src/windows/nsWindowDbg.h => widget/windows/nsWindowDbg.h rename : widget/src/windows/nsWindowDefs.h => widget/windows/nsWindowDefs.h rename : widget/src/windows/nsWindowGfx.cpp => widget/windows/nsWindowGfx.cpp rename : widget/src/windows/nsWindowGfx.h => widget/windows/nsWindowGfx.h rename : widget/src/windows/nsdefs.h => widget/windows/nsdefs.h rename : widget/src/windows/resource.h => widget/windows/resource.h rename : widget/src/windows/tests/Makefile.in => widget/windows/tests/Makefile.in rename : widget/src/windows/tests/TestWinDND.cpp => widget/windows/tests/TestWinDND.cpp rename : widget/src/xpwidgets/GfxDriverInfo.cpp => widget/xpwidgets/GfxDriverInfo.cpp rename : widget/src/xpwidgets/GfxDriverInfo.h => widget/xpwidgets/GfxDriverInfo.h rename : widget/src/xpwidgets/GfxInfoBase.cpp => widget/xpwidgets/GfxInfoBase.cpp rename : widget/src/xpwidgets/GfxInfoBase.h => widget/xpwidgets/GfxInfoBase.h rename : widget/src/xpwidgets/GfxInfoCollector.h => widget/xpwidgets/GfxInfoCollector.h rename : widget/src/xpwidgets/GfxInfoWebGL.cpp => widget/xpwidgets/GfxInfoWebGL.cpp rename : widget/src/xpwidgets/GfxInfoWebGL.h => widget/xpwidgets/GfxInfoWebGL.h rename : widget/src/xpwidgets/GfxInfoX11.cpp => widget/xpwidgets/GfxInfoX11.cpp rename : widget/src/xpwidgets/GfxInfoX11.h => widget/xpwidgets/GfxInfoX11.h rename : widget/src/xpwidgets/Makefile.in => widget/xpwidgets/Makefile.in rename : widget/src/xpwidgets/PuppetWidget.cpp => widget/xpwidgets/PuppetWidget.cpp rename : widget/src/xpwidgets/PuppetWidget.h => widget/xpwidgets/PuppetWidget.h rename : widget/src/xpwidgets/nsAppShellSingleton.h => widget/xpwidgets/nsAppShellSingleton.h rename : widget/src/xpwidgets/nsBaseAppShell.cpp => widget/xpwidgets/nsBaseAppShell.cpp rename : widget/src/xpwidgets/nsBaseAppShell.h => widget/xpwidgets/nsBaseAppShell.h rename : widget/src/xpwidgets/nsBaseClipboard.cpp => widget/xpwidgets/nsBaseClipboard.cpp rename : widget/src/xpwidgets/nsBaseClipboard.h => widget/xpwidgets/nsBaseClipboard.h rename : widget/src/xpwidgets/nsBaseDragService.cpp => widget/xpwidgets/nsBaseDragService.cpp rename : widget/src/xpwidgets/nsBaseDragService.h => widget/xpwidgets/nsBaseDragService.h rename : widget/src/xpwidgets/nsBaseFilePicker.cpp => widget/xpwidgets/nsBaseFilePicker.cpp rename : widget/src/xpwidgets/nsBaseFilePicker.h => widget/xpwidgets/nsBaseFilePicker.h rename : widget/src/xpwidgets/nsBaseWidget.cpp => widget/xpwidgets/nsBaseWidget.cpp rename : widget/src/xpwidgets/nsBaseWidget.h => widget/xpwidgets/nsBaseWidget.h rename : widget/src/xpwidgets/nsClipboardHelper.cpp => widget/xpwidgets/nsClipboardHelper.cpp rename : widget/src/xpwidgets/nsClipboardHelper.h => widget/xpwidgets/nsClipboardHelper.h rename : widget/src/xpwidgets/nsClipboardPrivacyHandler.cpp => widget/xpwidgets/nsClipboardPrivacyHandler.cpp rename : widget/src/xpwidgets/nsClipboardPrivacyHandler.h => widget/xpwidgets/nsClipboardPrivacyHandler.h rename : widget/src/xpwidgets/nsFilePickerProxy.cpp => widget/xpwidgets/nsFilePickerProxy.cpp rename : widget/src/xpwidgets/nsFilePickerProxy.h => widget/xpwidgets/nsFilePickerProxy.h rename : widget/src/xpwidgets/nsHTMLFormatConverter.cpp => widget/xpwidgets/nsHTMLFormatConverter.cpp rename : widget/src/xpwidgets/nsHTMLFormatConverter.h => widget/xpwidgets/nsHTMLFormatConverter.h rename : widget/src/xpwidgets/nsIdleService.cpp => widget/xpwidgets/nsIdleService.cpp rename : widget/src/xpwidgets/nsIdleService.h => widget/xpwidgets/nsIdleService.h rename : widget/src/xpwidgets/nsNativeTheme.cpp => widget/xpwidgets/nsNativeTheme.cpp rename : widget/src/xpwidgets/nsNativeTheme.h => widget/xpwidgets/nsNativeTheme.h rename : widget/src/xpwidgets/nsPrimitiveHelpers.cpp => widget/xpwidgets/nsPrimitiveHelpers.cpp rename : widget/src/xpwidgets/nsPrimitiveHelpers.h => widget/xpwidgets/nsPrimitiveHelpers.h rename : widget/src/xpwidgets/nsPrintOptionsImpl.cpp => widget/xpwidgets/nsPrintOptionsImpl.cpp rename : widget/src/xpwidgets/nsPrintOptionsImpl.h => widget/xpwidgets/nsPrintOptionsImpl.h rename : widget/src/xpwidgets/nsPrintSession.cpp => widget/xpwidgets/nsPrintSession.cpp rename : widget/src/xpwidgets/nsPrintSession.h => widget/xpwidgets/nsPrintSession.h rename : widget/src/xpwidgets/nsPrintSettingsImpl.cpp => widget/xpwidgets/nsPrintSettingsImpl.cpp rename : widget/src/xpwidgets/nsPrintSettingsImpl.h => widget/xpwidgets/nsPrintSettingsImpl.h rename : widget/src/xpwidgets/nsTransferable.cpp => widget/xpwidgets/nsTransferable.cpp rename : widget/src/xpwidgets/nsTransferable.h => widget/xpwidgets/nsTransferable.h rename : widget/src/xpwidgets/nsXPLookAndFeel.cpp => widget/xpwidgets/nsXPLookAndFeel.cpp rename : widget/src/xpwidgets/nsXPLookAndFeel.h => widget/xpwidgets/nsXPLookAndFeel.h rename : widget/src/xremoteclient/Makefile.in => widget/xremoteclient/Makefile.in rename : widget/src/xremoteclient/XRemoteClient.cpp => widget/xremoteclient/XRemoteClient.cpp rename : widget/src/xremoteclient/XRemoteClient.h => widget/xremoteclient/XRemoteClient.h rename : widget/src/xremoteclient/XRemoteClientFactory.cpp => widget/xremoteclient/XRemoteClientFactory.cpp rename : widget/src/xremoteclient/mozilla-xremote-client.cpp => widget/xremoteclient/mozilla-xremote-client.cpp rename : widget/src/xremoteclient/nsRemoteClient.h => widget/xremoteclient/nsRemoteClient.h
912 lines
27 KiB
C++
912 lines
27 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim:expandtab:shiftwidth=2:tabstop=8:
|
|
*/
|
|
/* vim:set ts=8 sw=2 et cindent: */
|
|
/* ***** 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
|
|
* Christopher Blizzard and Jamie Zawinski.
|
|
* Portions created by the Initial Developer are Copyright (C) 1994-2000
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
* of those above. If you wish to allow use of your version of this file only
|
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
* use your version of this file under the terms of the MPL, indicate your
|
|
* decision by deleting the provisions above and replace them with the notice
|
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
* the provisions above, a recipient may use your version of this file under
|
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
*
|
|
* ***** END LICENSE BLOCK ***** */
|
|
|
|
#include "XRemoteClient.h"
|
|
#include "prmem.h"
|
|
#include "prprf.h"
|
|
#include "plstr.h"
|
|
#include "prsystem.h"
|
|
#include "prlog.h"
|
|
#include "prenv.h"
|
|
#include "prdtoa.h"
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
#include <strings.h>
|
|
#include <sys/time.h>
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
#include <limits.h>
|
|
#include <X11/Xatom.h>
|
|
|
|
#define MOZILLA_VERSION_PROP "_MOZILLA_VERSION"
|
|
#define MOZILLA_LOCK_PROP "_MOZILLA_LOCK"
|
|
#define MOZILLA_COMMAND_PROP "_MOZILLA_COMMAND"
|
|
#define MOZILLA_COMMANDLINE_PROP "_MOZILLA_COMMANDLINE"
|
|
#define MOZILLA_RESPONSE_PROP "_MOZILLA_RESPONSE"
|
|
#define MOZILLA_USER_PROP "_MOZILLA_USER"
|
|
#define MOZILLA_PROFILE_PROP "_MOZILLA_PROFILE"
|
|
#define MOZILLA_PROGRAM_PROP "_MOZILLA_PROGRAM"
|
|
|
|
#ifdef IS_BIG_ENDIAN
|
|
#define TO_LITTLE_ENDIAN32(x) \
|
|
((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \
|
|
(((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
|
|
#else
|
|
#define TO_LITTLE_ENDIAN32(x) (x)
|
|
#endif
|
|
|
|
#ifndef MAX_PATH
|
|
#ifdef PATH_MAX
|
|
#define MAX_PATH PATH_MAX
|
|
#else
|
|
#define MAX_PATH 1024
|
|
#endif
|
|
#endif
|
|
|
|
#define ARRAY_LENGTH(array_) (sizeof(array_)/sizeof(array_[0]))
|
|
|
|
static PRLogModuleInfo *sRemoteLm = NULL;
|
|
|
|
static int (*sOldHandler)(Display *, XErrorEvent *);
|
|
static bool sGotBadWindow;
|
|
|
|
XRemoteClient::XRemoteClient()
|
|
{
|
|
mDisplay = 0;
|
|
mInitialized = false;
|
|
mMozVersionAtom = 0;
|
|
mMozLockAtom = 0;
|
|
mMozCommandAtom = 0;
|
|
mMozResponseAtom = 0;
|
|
mMozWMStateAtom = 0;
|
|
mMozUserAtom = 0;
|
|
mLockData = 0;
|
|
if (!sRemoteLm)
|
|
sRemoteLm = PR_NewLogModule("XRemoteClient");
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("XRemoteClient::XRemoteClient"));
|
|
}
|
|
|
|
XRemoteClient::~XRemoteClient()
|
|
{
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("XRemoteClient::~XRemoteClient"));
|
|
if (mInitialized)
|
|
Shutdown();
|
|
}
|
|
|
|
// Minimize the roundtrips to the X-server
|
|
static char *XAtomNames[] = {
|
|
MOZILLA_VERSION_PROP,
|
|
MOZILLA_LOCK_PROP,
|
|
MOZILLA_COMMAND_PROP,
|
|
MOZILLA_RESPONSE_PROP,
|
|
"WM_STATE",
|
|
MOZILLA_USER_PROP,
|
|
MOZILLA_PROFILE_PROP,
|
|
MOZILLA_PROGRAM_PROP,
|
|
MOZILLA_COMMANDLINE_PROP
|
|
};
|
|
static Atom XAtoms[ARRAY_LENGTH(XAtomNames)];
|
|
|
|
nsresult
|
|
XRemoteClient::Init()
|
|
{
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("XRemoteClient::Init"));
|
|
|
|
if (mInitialized)
|
|
return NS_OK;
|
|
|
|
// try to open the display
|
|
mDisplay = XOpenDisplay(0);
|
|
if (!mDisplay)
|
|
return NS_ERROR_FAILURE;
|
|
|
|
// get our atoms
|
|
XInternAtoms(mDisplay, XAtomNames, ARRAY_LENGTH(XAtomNames), False, XAtoms);
|
|
|
|
int i = 0;
|
|
mMozVersionAtom = XAtoms[i++];
|
|
mMozLockAtom = XAtoms[i++];
|
|
mMozCommandAtom = XAtoms[i++];
|
|
mMozResponseAtom = XAtoms[i++];
|
|
mMozWMStateAtom = XAtoms[i++];
|
|
mMozUserAtom = XAtoms[i++];
|
|
mMozProfileAtom = XAtoms[i++];
|
|
mMozProgramAtom = XAtoms[i++];
|
|
mMozCommandLineAtom = XAtoms[i++];
|
|
|
|
mInitialized = true;
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
void
|
|
XRemoteClient::Shutdown (void)
|
|
{
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("XRemoteClient::Shutdown"));
|
|
|
|
if (!mInitialized)
|
|
return;
|
|
|
|
// shut everything down
|
|
XCloseDisplay(mDisplay);
|
|
mDisplay = 0;
|
|
mInitialized = false;
|
|
if (mLockData) {
|
|
free(mLockData);
|
|
mLockData = 0;
|
|
}
|
|
}
|
|
|
|
nsresult
|
|
XRemoteClient::SendCommand (const char *aProgram, const char *aUsername,
|
|
const char *aProfile, const char *aCommand,
|
|
const char* aDesktopStartupID,
|
|
char **aResponse, bool *aWindowFound)
|
|
{
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("XRemoteClient::SendCommand"));
|
|
|
|
return SendCommandInternal(aProgram, aUsername, aProfile,
|
|
aCommand, 0, nsnull,
|
|
aDesktopStartupID,
|
|
aResponse, aWindowFound);
|
|
}
|
|
|
|
nsresult
|
|
XRemoteClient::SendCommandLine (const char *aProgram, const char *aUsername,
|
|
const char *aProfile,
|
|
PRInt32 argc, char **argv,
|
|
const char* aDesktopStartupID,
|
|
char **aResponse, bool *aWindowFound)
|
|
{
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("XRemoteClient::SendCommandLine"));
|
|
|
|
return SendCommandInternal(aProgram, aUsername, aProfile,
|
|
nsnull, argc, argv,
|
|
aDesktopStartupID,
|
|
aResponse, aWindowFound);
|
|
}
|
|
|
|
static int
|
|
HandleBadWindow(Display *display, XErrorEvent *event)
|
|
{
|
|
if (event->error_code == BadWindow) {
|
|
sGotBadWindow = true;
|
|
return 0; // ignored
|
|
}
|
|
else {
|
|
return (*sOldHandler)(display, event);
|
|
}
|
|
}
|
|
|
|
nsresult
|
|
XRemoteClient::SendCommandInternal(const char *aProgram, const char *aUsername,
|
|
const char *aProfile, const char *aCommand,
|
|
PRInt32 argc, char **argv,
|
|
const char* aDesktopStartupID,
|
|
char **aResponse, bool *aWindowFound)
|
|
{
|
|
*aWindowFound = false;
|
|
bool isCommandLine = !aCommand;
|
|
|
|
// FindBestWindow() iterates down the window hierarchy, so catch X errors
|
|
// when windows get destroyed before being accessed.
|
|
sOldHandler = XSetErrorHandler(HandleBadWindow);
|
|
|
|
Window w = FindBestWindow(aProgram, aUsername, aProfile, isCommandLine);
|
|
|
|
nsresult rv = NS_OK;
|
|
|
|
if (w) {
|
|
// ok, let the caller know that we at least found a window.
|
|
*aWindowFound = true;
|
|
|
|
// Ignore BadWindow errors up to this point. The last request from
|
|
// FindBestWindow() was a synchronous XGetWindowProperty(), so no need to
|
|
// Sync. Leave the error handler installed to detect if w gets destroyed.
|
|
sGotBadWindow = false;
|
|
|
|
// make sure we get the right events on that window
|
|
XSelectInput(mDisplay, w,
|
|
(PropertyChangeMask|StructureNotifyMask));
|
|
|
|
bool destroyed = false;
|
|
|
|
// get the lock on the window
|
|
rv = GetLock(w, &destroyed);
|
|
|
|
if (NS_SUCCEEDED(rv)) {
|
|
// send our command
|
|
if (isCommandLine) {
|
|
rv = DoSendCommandLine(w, argc, argv, aDesktopStartupID, aResponse,
|
|
&destroyed);
|
|
}
|
|
else {
|
|
rv = DoSendCommand(w, aCommand, aDesktopStartupID, aResponse,
|
|
&destroyed);
|
|
}
|
|
|
|
// if the window was destroyed, don't bother trying to free the
|
|
// lock.
|
|
if (!destroyed)
|
|
FreeLock(w); // doesn't really matter what this returns
|
|
|
|
}
|
|
}
|
|
|
|
XSetErrorHandler(sOldHandler);
|
|
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("SendCommandInternal returning 0x%x\n", rv));
|
|
|
|
return rv;
|
|
}
|
|
|
|
Window
|
|
XRemoteClient::CheckWindow(Window aWindow)
|
|
{
|
|
Atom type = None;
|
|
int format;
|
|
unsigned long nitems, bytesafter;
|
|
unsigned char *data;
|
|
Window innerWindow;
|
|
|
|
XGetWindowProperty(mDisplay, aWindow, mMozWMStateAtom,
|
|
0, 0, False, AnyPropertyType,
|
|
&type, &format, &nitems, &bytesafter, &data);
|
|
|
|
if (type) {
|
|
XFree(data);
|
|
return aWindow;
|
|
}
|
|
|
|
// didn't find it here so check the children of this window
|
|
innerWindow = CheckChildren(aWindow);
|
|
|
|
if (innerWindow)
|
|
return innerWindow;
|
|
|
|
return aWindow;
|
|
}
|
|
|
|
Window
|
|
XRemoteClient::CheckChildren(Window aWindow)
|
|
{
|
|
Window root, parent;
|
|
Window *children;
|
|
unsigned int nchildren;
|
|
unsigned int i;
|
|
Atom type = None;
|
|
int format;
|
|
unsigned long nitems, after;
|
|
unsigned char *data;
|
|
Window retval = None;
|
|
|
|
if (!XQueryTree(mDisplay, aWindow, &root, &parent, &children,
|
|
&nchildren))
|
|
return None;
|
|
|
|
// scan the list first before recursing into the list of windows
|
|
// which can get quite deep.
|
|
for (i=0; !retval && (i < nchildren); i++) {
|
|
XGetWindowProperty(mDisplay, children[i], mMozWMStateAtom,
|
|
0, 0, False, AnyPropertyType, &type, &format,
|
|
&nitems, &after, &data);
|
|
if (type) {
|
|
XFree(data);
|
|
retval = children[i];
|
|
}
|
|
}
|
|
|
|
// otherwise recurse into the list
|
|
for (i=0; !retval && (i < nchildren); i++) {
|
|
retval = CheckChildren(children[i]);
|
|
}
|
|
|
|
if (children)
|
|
XFree((char *)children);
|
|
|
|
return retval;
|
|
}
|
|
|
|
nsresult
|
|
XRemoteClient::GetLock(Window aWindow, bool *aDestroyed)
|
|
{
|
|
bool locked = false;
|
|
bool waited = false;
|
|
*aDestroyed = false;
|
|
|
|
nsresult rv = NS_OK;
|
|
|
|
if (!mLockData) {
|
|
|
|
char pidstr[32];
|
|
char sysinfobuf[SYS_INFO_BUFFER_LENGTH];
|
|
PR_snprintf(pidstr, sizeof(pidstr), "pid%d@", getpid());
|
|
PRStatus status;
|
|
status = PR_GetSystemInfo(PR_SI_HOSTNAME, sysinfobuf,
|
|
SYS_INFO_BUFFER_LENGTH);
|
|
if (status != PR_SUCCESS) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
// allocate enough space for the string plus the terminating
|
|
// char
|
|
mLockData = (char *)malloc(strlen(pidstr) + strlen(sysinfobuf) + 1);
|
|
if (!mLockData)
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
|
|
strcpy(mLockData, pidstr);
|
|
if (!strcat(mLockData, sysinfobuf))
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
do {
|
|
int result;
|
|
Atom actual_type;
|
|
int actual_format;
|
|
unsigned long nitems, bytes_after;
|
|
unsigned char *data = 0;
|
|
|
|
XGrabServer(mDisplay);
|
|
|
|
result = XGetWindowProperty (mDisplay, aWindow, mMozLockAtom,
|
|
0, (65536 / sizeof (long)),
|
|
False, /* don't delete */
|
|
XA_STRING,
|
|
&actual_type, &actual_format,
|
|
&nitems, &bytes_after,
|
|
&data);
|
|
|
|
// aWindow may have been destroyed before XSelectInput was processed, in
|
|
// which case there may not be any DestroyNotify event in the queue to
|
|
// tell us. XGetWindowProperty() was synchronous so error responses have
|
|
// now been processed, setting sGotBadWindow.
|
|
if (sGotBadWindow) {
|
|
*aDestroyed = true;
|
|
rv = NS_ERROR_FAILURE;
|
|
}
|
|
else if (result != Success || actual_type == None) {
|
|
/* It's not now locked - lock it. */
|
|
XChangeProperty (mDisplay, aWindow, mMozLockAtom, XA_STRING, 8,
|
|
PropModeReplace,
|
|
(unsigned char *)mLockData,
|
|
strlen(mLockData));
|
|
locked = True;
|
|
}
|
|
|
|
XUngrabServer(mDisplay);
|
|
XFlush(mDisplay); // ungrab now!
|
|
|
|
if (!locked && !NS_FAILED(rv)) {
|
|
/* We tried to grab the lock this time, and failed because someone
|
|
else is holding it already. So, wait for a PropertyDelete event
|
|
to come in, and try again. */
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("window 0x%x is locked by %s; waiting...\n",
|
|
(unsigned int) aWindow, data));
|
|
waited = True;
|
|
while (1) {
|
|
XEvent event;
|
|
int select_retval;
|
|
fd_set select_set;
|
|
struct timeval delay;
|
|
delay.tv_sec = 10;
|
|
delay.tv_usec = 0;
|
|
|
|
FD_ZERO(&select_set);
|
|
// add the x event queue to the select set
|
|
FD_SET(ConnectionNumber(mDisplay), &select_set);
|
|
select_retval = select(ConnectionNumber(mDisplay) + 1,
|
|
&select_set, NULL, NULL, &delay);
|
|
// did we time out?
|
|
if (select_retval == 0) {
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("timed out waiting for window\n"));
|
|
rv = NS_ERROR_FAILURE;
|
|
break;
|
|
}
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("xevent...\n"));
|
|
XNextEvent (mDisplay, &event);
|
|
if (event.xany.type == DestroyNotify &&
|
|
event.xdestroywindow.window == aWindow) {
|
|
*aDestroyed = true;
|
|
rv = NS_ERROR_FAILURE;
|
|
break;
|
|
}
|
|
else if (event.xany.type == PropertyNotify &&
|
|
event.xproperty.state == PropertyDelete &&
|
|
event.xproperty.window == aWindow &&
|
|
event.xproperty.atom == mMozLockAtom) {
|
|
/* Ok! Someone deleted their lock, so now we can try
|
|
again. */
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("(0x%x unlocked, trying again...)\n",
|
|
(unsigned int) aWindow));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (data)
|
|
XFree(data);
|
|
} while (!locked && !NS_FAILED(rv));
|
|
|
|
if (waited && locked) {
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("obtained lock.\n"));
|
|
} else if (*aDestroyed) {
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("window 0x%x unexpectedly destroyed.\n",
|
|
(unsigned int) aWindow));
|
|
}
|
|
|
|
return rv;
|
|
}
|
|
|
|
Window
|
|
XRemoteClient::FindBestWindow(const char *aProgram, const char *aUsername,
|
|
const char *aProfile,
|
|
bool aSupportsCommandLine)
|
|
{
|
|
Window root = RootWindowOfScreen(DefaultScreenOfDisplay(mDisplay));
|
|
Window bestWindow = 0;
|
|
Window root2, parent, *kids;
|
|
unsigned int nkids;
|
|
|
|
// Get a list of the children of the root window, walk the list
|
|
// looking for the best window that fits the criteria.
|
|
if (!XQueryTree(mDisplay, root, &root2, &parent, &kids, &nkids)) {
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("XQueryTree failed in XRemoteClient::FindBestWindow"));
|
|
return 0;
|
|
}
|
|
|
|
if (!(kids && nkids)) {
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("root window has no children"));
|
|
return 0;
|
|
}
|
|
|
|
// We'll walk the list of windows looking for a window that best
|
|
// fits the criteria here.
|
|
|
|
for (unsigned int i = 0; i < nkids; i++) {
|
|
Atom type;
|
|
int format;
|
|
unsigned long nitems, bytesafter;
|
|
unsigned char *data_return = 0;
|
|
Window w;
|
|
w = kids[i];
|
|
// find the inner window with WM_STATE on it
|
|
w = CheckWindow(w);
|
|
|
|
int status = XGetWindowProperty(mDisplay, w, mMozVersionAtom,
|
|
0, (65536 / sizeof (long)),
|
|
False, XA_STRING,
|
|
&type, &format, &nitems, &bytesafter,
|
|
&data_return);
|
|
|
|
if (!data_return)
|
|
continue;
|
|
|
|
PRFloat64 version = PR_strtod((char*) data_return, nsnull);
|
|
XFree(data_return);
|
|
|
|
if (aSupportsCommandLine && !(version >= 5.1 && version < 6))
|
|
continue;
|
|
|
|
data_return = 0;
|
|
|
|
if (status != Success || type == None)
|
|
continue;
|
|
|
|
// If someone passed in a program name, check it against this one
|
|
// unless it's "any" in which case, we don't care. If someone did
|
|
// pass in a program name and this window doesn't support that
|
|
// protocol, we don't include it in our list.
|
|
if (aProgram && strcmp(aProgram, "any")) {
|
|
status = XGetWindowProperty(mDisplay, w, mMozProgramAtom,
|
|
0, (65536 / sizeof(long)),
|
|
False, XA_STRING,
|
|
&type, &format, &nitems, &bytesafter,
|
|
&data_return);
|
|
|
|
// If the return name is not the same as what someone passed in,
|
|
// we don't want this window.
|
|
if (data_return) {
|
|
if (strcmp(aProgram, (const char *)data_return)) {
|
|
XFree(data_return);
|
|
continue;
|
|
}
|
|
|
|
// This is actually the success condition.
|
|
XFree(data_return);
|
|
}
|
|
else {
|
|
// Doesn't support the protocol, even though the user
|
|
// requested it. So we're not going to use this window.
|
|
continue;
|
|
}
|
|
}
|
|
|
|
// Check to see if it has the user atom on that window. If there
|
|
// is then we need to make sure that it matches what we have.
|
|
const char *username;
|
|
if (aUsername) {
|
|
username = aUsername;
|
|
}
|
|
else {
|
|
username = PR_GetEnv("LOGNAME");
|
|
}
|
|
|
|
if (username) {
|
|
status = XGetWindowProperty(mDisplay, w, mMozUserAtom,
|
|
0, (65536 / sizeof(long)),
|
|
False, XA_STRING,
|
|
&type, &format, &nitems, &bytesafter,
|
|
&data_return);
|
|
|
|
// if there's a username compare it with what we have
|
|
if (data_return) {
|
|
// If the IDs aren't equal, we don't want this window.
|
|
if (strcmp(username, (const char *)data_return)) {
|
|
XFree(data_return);
|
|
continue;
|
|
}
|
|
|
|
XFree(data_return);
|
|
}
|
|
}
|
|
|
|
// Check to see if there's a profile name on this window. If
|
|
// there is, then we need to make sure it matches what someone
|
|
// passed in.
|
|
if (aProfile) {
|
|
status = XGetWindowProperty(mDisplay, w, mMozProfileAtom,
|
|
0, (65536 / sizeof(long)),
|
|
False, XA_STRING,
|
|
&type, &format, &nitems, &bytesafter,
|
|
&data_return);
|
|
|
|
// If there's a profile compare it with what we have
|
|
if (data_return) {
|
|
// If the profiles aren't equal, we don't want this window.
|
|
if (strcmp(aProfile, (const char *)data_return)) {
|
|
XFree(data_return);
|
|
continue;
|
|
}
|
|
|
|
XFree(data_return);
|
|
}
|
|
}
|
|
|
|
// Check to see if the window supports the new command-line passing
|
|
// protocol, if that is requested.
|
|
|
|
// If we got this far, this is the best window. It passed
|
|
// all the tests.
|
|
bestWindow = w;
|
|
break;
|
|
}
|
|
|
|
if (kids)
|
|
XFree((char *) kids);
|
|
|
|
return bestWindow;
|
|
}
|
|
|
|
nsresult
|
|
XRemoteClient::FreeLock(Window aWindow)
|
|
{
|
|
int result;
|
|
Atom actual_type;
|
|
int actual_format;
|
|
unsigned long nitems, bytes_after;
|
|
unsigned char *data = 0;
|
|
|
|
result = XGetWindowProperty(mDisplay, aWindow, mMozLockAtom,
|
|
0, (65536 / sizeof(long)),
|
|
True, /* atomic delete after */
|
|
XA_STRING,
|
|
&actual_type, &actual_format,
|
|
&nitems, &bytes_after,
|
|
&data);
|
|
if (result != Success) {
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("unable to read and delete " MOZILLA_LOCK_PROP
|
|
" property\n"));
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
else if (!data || !*data){
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("invalid data on " MOZILLA_LOCK_PROP
|
|
" of window 0x%x.\n",
|
|
(unsigned int) aWindow));
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
else if (strcmp((char *)data, mLockData)) {
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
(MOZILLA_LOCK_PROP " was stolen! Expected \"%s\", saw \"%s\"!\n",
|
|
mLockData, data));
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
if (data)
|
|
XFree(data);
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
XRemoteClient::DoSendCommand(Window aWindow, const char *aCommand,
|
|
const char* aDesktopStartupID,
|
|
char **aResponse, bool *aDestroyed)
|
|
{
|
|
*aDestroyed = false;
|
|
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("(writing " MOZILLA_COMMAND_PROP " \"%s\" to 0x%x)\n",
|
|
aCommand, (unsigned int) aWindow));
|
|
|
|
// We add the DESKTOP_STARTUP_ID setting as an extra line of
|
|
// the command string. Firefox ignores all lines but the first.
|
|
static char desktopStartupPrefix[] = "\nDESKTOP_STARTUP_ID=";
|
|
|
|
PRInt32 len = strlen(aCommand);
|
|
if (aDesktopStartupID) {
|
|
len += sizeof(desktopStartupPrefix) - 1 + strlen(aDesktopStartupID);
|
|
}
|
|
char* buffer = (char*)malloc(len + 1);
|
|
if (!buffer)
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
|
|
strcpy(buffer, aCommand);
|
|
if (aDesktopStartupID) {
|
|
strcat(buffer, desktopStartupPrefix);
|
|
strcat(buffer, aDesktopStartupID);
|
|
}
|
|
|
|
XChangeProperty (mDisplay, aWindow, mMozCommandAtom, XA_STRING, 8,
|
|
PropModeReplace, (unsigned char *)buffer, len);
|
|
|
|
free(buffer);
|
|
|
|
if (!WaitForResponse(aWindow, aResponse, aDestroyed, mMozCommandAtom))
|
|
return NS_ERROR_FAILURE;
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
/* like strcpy, but return the char after the final null */
|
|
static char*
|
|
estrcpy(const char* s, char* d)
|
|
{
|
|
while (*s)
|
|
*d++ = *s++;
|
|
|
|
*d++ = '\0';
|
|
return d;
|
|
}
|
|
|
|
nsresult
|
|
XRemoteClient::DoSendCommandLine(Window aWindow, PRInt32 argc, char **argv,
|
|
const char* aDesktopStartupID,
|
|
char **aResponse, bool *aDestroyed)
|
|
{
|
|
*aDestroyed = false;
|
|
|
|
char cwdbuf[MAX_PATH];
|
|
if (!getcwd(cwdbuf, MAX_PATH))
|
|
return NS_ERROR_UNEXPECTED;
|
|
|
|
// the commandline property is constructed as an array of PRInt32
|
|
// followed by a series of null-terminated strings:
|
|
//
|
|
// [argc][offsetargv0][offsetargv1...]<workingdir>\0<argv[0]>\0argv[1]...\0
|
|
// (offset is from the beginning of the buffer)
|
|
|
|
static char desktopStartupPrefix[] = " DESKTOP_STARTUP_ID=";
|
|
|
|
PRInt32 argvlen = strlen(cwdbuf);
|
|
for (int i = 0; i < argc; ++i) {
|
|
PRInt32 len = strlen(argv[i]);
|
|
if (i == 0 && aDesktopStartupID) {
|
|
len += sizeof(desktopStartupPrefix) - 1 + strlen(aDesktopStartupID);
|
|
}
|
|
argvlen += len;
|
|
}
|
|
|
|
PRInt32* buffer = (PRInt32*) malloc(argvlen + argc + 1 +
|
|
sizeof(PRInt32) * (argc + 1));
|
|
if (!buffer)
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
|
|
buffer[0] = TO_LITTLE_ENDIAN32(argc);
|
|
|
|
char *bufend = (char*) (buffer + argc + 1);
|
|
|
|
bufend = estrcpy(cwdbuf, bufend);
|
|
|
|
for (int i = 0; i < argc; ++i) {
|
|
buffer[i + 1] = TO_LITTLE_ENDIAN32(bufend - ((char*) buffer));
|
|
bufend = estrcpy(argv[i], bufend);
|
|
if (i == 0 && aDesktopStartupID) {
|
|
bufend = estrcpy(desktopStartupPrefix, bufend - 1);
|
|
bufend = estrcpy(aDesktopStartupID, bufend - 1);
|
|
}
|
|
}
|
|
|
|
#ifdef DEBUG_bsmedberg
|
|
PRInt32 debug_argc = TO_LITTLE_ENDIAN32(*buffer);
|
|
char *debug_workingdir = (char*) (buffer + argc + 1);
|
|
|
|
printf("Sending command line:\n"
|
|
" working dir: %s\n"
|
|
" argc:\t%i",
|
|
debug_workingdir,
|
|
debug_argc);
|
|
|
|
PRInt32 *debug_offset = buffer + 1;
|
|
for (int debug_i = 0; debug_i < debug_argc; ++debug_i)
|
|
printf(" argv[%i]:\t%s\n", debug_i,
|
|
((char*) buffer) + TO_LITTLE_ENDIAN32(debug_offset[debug_i]));
|
|
#endif
|
|
|
|
XChangeProperty (mDisplay, aWindow, mMozCommandLineAtom, XA_STRING, 8,
|
|
PropModeReplace, (unsigned char *) buffer,
|
|
bufend - ((char*) buffer));
|
|
free(buffer);
|
|
|
|
if (!WaitForResponse(aWindow, aResponse, aDestroyed, mMozCommandLineAtom))
|
|
return NS_ERROR_FAILURE;
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
bool
|
|
XRemoteClient::WaitForResponse(Window aWindow, char **aResponse,
|
|
bool *aDestroyed, Atom aCommandAtom)
|
|
{
|
|
bool done = false;
|
|
bool accepted = false;
|
|
|
|
while (!done) {
|
|
XEvent event;
|
|
XNextEvent (mDisplay, &event);
|
|
if (event.xany.type == DestroyNotify &&
|
|
event.xdestroywindow.window == aWindow) {
|
|
/* Print to warn user...*/
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("window 0x%x was destroyed.\n",
|
|
(unsigned int) aWindow));
|
|
*aResponse = strdup("Window was destroyed while reading response.");
|
|
*aDestroyed = true;
|
|
return false;
|
|
}
|
|
else if (event.xany.type == PropertyNotify &&
|
|
event.xproperty.state == PropertyNewValue &&
|
|
event.xproperty.window == aWindow &&
|
|
event.xproperty.atom == mMozResponseAtom) {
|
|
Atom actual_type;
|
|
int actual_format;
|
|
unsigned long nitems, bytes_after;
|
|
unsigned char *data = 0;
|
|
Bool result;
|
|
result = XGetWindowProperty (mDisplay, aWindow, mMozResponseAtom,
|
|
0, (65536 / sizeof (long)),
|
|
True, /* atomic delete after */
|
|
XA_STRING,
|
|
&actual_type, &actual_format,
|
|
&nitems, &bytes_after,
|
|
&data);
|
|
if (result != Success) {
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("failed reading " MOZILLA_RESPONSE_PROP
|
|
" from window 0x%0x.\n",
|
|
(unsigned int) aWindow));
|
|
*aResponse = strdup("Internal error reading response from window.");
|
|
done = true;
|
|
}
|
|
else if (!data || strlen((char *) data) < 5) {
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("invalid data on " MOZILLA_RESPONSE_PROP
|
|
" property of window 0x%0x.\n",
|
|
(unsigned int) aWindow));
|
|
*aResponse = strdup("Server returned invalid data in response.");
|
|
done = true;
|
|
}
|
|
else if (*data == '1') { /* positive preliminary reply */
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("%s\n", data + 4));
|
|
/* keep going */
|
|
done = false;
|
|
}
|
|
|
|
else if (!strncmp ((char *)data, "200", 3)) { /* positive completion */
|
|
*aResponse = strdup((char *)data);
|
|
accepted = true;
|
|
done = true;
|
|
}
|
|
|
|
else if (*data == '2') { /* positive completion */
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("%s\n", data + 4));
|
|
*aResponse = strdup((char *)data);
|
|
accepted = true;
|
|
done = true;
|
|
}
|
|
|
|
else if (*data == '3') { /* positive intermediate reply */
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("internal error: "
|
|
"server wants more information? (%s)\n",
|
|
data));
|
|
*aResponse = strdup((char *)data);
|
|
done = true;
|
|
}
|
|
|
|
else if (*data == '4' || /* transient negative completion */
|
|
*data == '5') { /* permanent negative completion */
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG, ("%s\n", data + 4));
|
|
*aResponse = strdup((char *)data);
|
|
done = true;
|
|
}
|
|
|
|
else {
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("unrecognised " MOZILLA_RESPONSE_PROP
|
|
" from window 0x%x: %s\n",
|
|
(unsigned int) aWindow, data));
|
|
*aResponse = strdup((char *)data);
|
|
done = true;
|
|
}
|
|
|
|
if (data)
|
|
XFree(data);
|
|
}
|
|
|
|
else if (event.xany.type == PropertyNotify &&
|
|
event.xproperty.window == aWindow &&
|
|
event.xproperty.state == PropertyDelete &&
|
|
event.xproperty.atom == aCommandAtom) {
|
|
PR_LOG(sRemoteLm, PR_LOG_DEBUG,
|
|
("(server 0x%x has accepted "
|
|
MOZILLA_COMMAND_PROP ".)\n",
|
|
(unsigned int) aWindow));
|
|
}
|
|
|
|
}
|
|
|
|
return accepted;
|
|
}
|