diff --git a/accessible/src/msaa/AccessibleWrap.cpp b/accessible/src/msaa/AccessibleWrap.cpp index 0fb928483fc..4fdf8af981f 100644 --- a/accessible/src/msaa/AccessibleWrap.cpp +++ b/accessible/src/msaa/AccessibleWrap.cpp @@ -1626,21 +1626,17 @@ AccessibleWrap::GetHWNDFor(Accessible* aAccessible) nsIFrame* frame = aAccessible->GetFrame(); if (frame) { nsIWidget* widget = frame->GetNearestWidget(); - if (widget) { - bool isVisible = false; - widget->IsVisible(isVisible); - if (isVisible) { - nsIPresShell* shell = document->PresShell(); - nsIViewManager* vm = shell->GetViewManager(); - if (vm) { - nsCOMPtr rootWidget; - vm->GetRootWidget(getter_AddRefs(rootWidget)); - // Make sure the accessible belongs to popup. If not then use - // document HWND (which might be different from root widget in the - // case of window emulation). - if (rootWidget != widget) - return static_cast(widget->GetNativeData(NS_NATIVE_WINDOW)); - } + if (widget && widget->IsVisible()) { + nsIPresShell* shell = document->PresShell(); + nsIViewManager* vm = shell->GetViewManager(); + if (vm) { + nsCOMPtr rootWidget; + vm->GetRootWidget(getter_AddRefs(rootWidget)); + // Make sure the accessible belongs to popup. If not then use + // document HWND (which might be different from root widget in the + // case of window emulation). + if (rootWidget != widget) + return static_cast(widget->GetNativeData(NS_NATIVE_WINDOW)); } } } diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp index ba4d4da86d5..13c3227b86c 100644 --- a/dom/plugins/base/nsPluginHost.cpp +++ b/dom/plugins/base/nsPluginHost.cpp @@ -3873,7 +3873,7 @@ CheckForDisabledWindows() nsCOMPtr widget; baseWin->GetMainWidget(getter_AddRefs(widget)); if (widget && !widget->GetParent() && - NS_SUCCEEDED(widget->IsVisible(aFlag)) && aFlag == true && + widget->IsVisible() && NS_SUCCEEDED(widget->IsEnabled(&aFlag)) && aFlag == false) { nsIWidget * child = widget->GetFirstChild(); bool enable = true; diff --git a/embedding/components/windowwatcher/src/nsWindowWatcher.cpp b/embedding/components/windowwatcher/src/nsWindowWatcher.cpp index 2de87cc55fc..83071776ad0 100644 --- a/embedding/components/windowwatcher/src/nsWindowWatcher.cpp +++ b/embedding/components/windowwatcher/src/nsWindowWatcher.cpp @@ -646,16 +646,12 @@ nsWindowWatcher::OpenWindowJSInternal(nsIDOMWindow *aParent, // where we can't shut down because an invisible window is open. If // someone tries to do this, throw. if (!hasChromeParent && (chromeFlags & nsIWebBrowserChrome::CHROME_MODAL)) { - bool parentVisible = true; nsCOMPtr parentWindow(do_GetInterface(parentTreeOwner)); nsCOMPtr parentWidget; if (parentWindow) parentWindow->GetMainWidget(getter_AddRefs(parentWidget)); - if (parentWidget) - parentWidget->IsVisible(parentVisible); - if (!parentVisible) { + if (parentWidget && !parentWidget->IsVisible()) return NS_ERROR_NOT_AVAILABLE; - } } NS_ASSERTION(mWindowCreator, diff --git a/view/src/nsViewManager.cpp b/view/src/nsViewManager.cpp index 75fac1604f2..6f462f803b9 100644 --- a/view/src/nsViewManager.cpp +++ b/view/src/nsViewManager.cpp @@ -442,11 +442,8 @@ nsViewManager::InvalidateWidgetArea(nsView *aWidgetView, #endif // If the widget is hidden, it don't cover nothing - if (widget) { - bool visible; - widget->IsVisible(visible); - if (!visible) - return; + if (widget && !widget->IsVisible()) { + return; } if (!widget) { @@ -466,11 +463,9 @@ nsViewManager::InvalidateWidgetArea(nsView *aWidgetView, childWidget = childWidget->GetNextSibling()) { nsView* view = nsView::GetViewFor(childWidget); NS_ASSERTION(view != aWidgetView, "will recur infinitely"); - bool visible; - childWidget->IsVisible(visible); nsWindowType type; childWidget->GetWindowType(type); - if (view && visible && type != eWindowType_popup) { + if (view && childWidget->IsVisible() && type != eWindowType_popup) { NS_ASSERTION(type == eWindowType_plugin, "Only plugin or popup widgets can be children!"); diff --git a/widget/android/nsWindow.cpp b/widget/android/nsWindow.cpp index 2e5d87f984e..4aeb590ee1c 100644 --- a/widget/android/nsWindow.cpp +++ b/widget/android/nsWindow.cpp @@ -384,11 +384,10 @@ nsWindow::SetModal(bool aState) return NS_OK; } -NS_IMETHODIMP -nsWindow::IsVisible(bool& aState) +bool +nsWindow::IsVisible() const { - aState = mIsVisible; - return NS_OK; + return mIsVisible; } NS_IMETHODIMP diff --git a/widget/android/nsWindow.h b/widget/android/nsWindow.h index 343755da933..bcb313bb737 100644 --- a/widget/android/nsWindow.h +++ b/widget/android/nsWindow.h @@ -76,7 +76,7 @@ public: virtual float GetDPI(); NS_IMETHOD Show(bool aState); NS_IMETHOD SetModal(bool aModal); - NS_IMETHOD IsVisible(bool & aState); + virtual bool IsVisible() const; NS_IMETHOD ConstrainPosition(bool aAllowSlop, PRInt32 *aX, PRInt32 *aY); diff --git a/widget/cocoa/nsChildView.h b/widget/cocoa/nsChildView.h index 25e1d685f0f..3f95a81f3c3 100644 --- a/widget/cocoa/nsChildView.h +++ b/widget/cocoa/nsChildView.h @@ -395,7 +395,7 @@ public: NS_IMETHOD Destroy(); NS_IMETHOD Show(bool aState); - NS_IMETHOD IsVisible(bool& outState); + virtual bool IsVisible() const; NS_IMETHOD SetParent(nsIWidget* aNewParent); virtual nsIWidget* GetParent(void); diff --git a/widget/cocoa/nsChildView.mm b/widget/cocoa/nsChildView.mm index ce0788a8326..034d2340ff8 100644 --- a/widget/cocoa/nsChildView.mm +++ b/widget/cocoa/nsChildView.mm @@ -526,26 +526,20 @@ void nsChildView::SetTransparencyMode(nsTransparencyMode aMode) NS_OBJC_END_TRY_ABORT_BLOCK; } -NS_IMETHODIMP nsChildView::IsVisible(bool& outState) +bool nsChildView::IsVisible() const { - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; + NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; if (!mVisible) { - outState = mVisible; - } - else { - // mVisible does not accurately reflect the state of a hidden tabbed view - // so verify that the view has a window as well - outState = ([mView window] != nil); - // now check native widget hierarchy visibility - if (outState && NSIsEmptyRect([mView visibleRect])) { - outState = false; - } + return mVisible; } - return NS_OK; + // mVisible does not accurately reflect the state of a hidden tabbed view + // so verify that the view has a window as well + // then check native widget hierarchy visibility + return ([mView window] != nil) && !NSIsEmptyRect([mView visibleRect]); - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; + NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(false); } void nsChildView::HidePlugin() @@ -976,9 +970,7 @@ NS_IMETHODIMP nsChildView::GetPluginClipRect(nsIntRect& outClipRect, nsIntPoint& outOrigin.x = -NSToIntRound(viewOrigin.x); outOrigin.y = -NSToIntRound(viewOrigin.y); - bool isVisible; - IsVisible(isVisible); - if (isVisible && [mView window] != nil) { + if (IsVisible() && [mView window] != nil) { outClipRect.width = NSToIntRound(visibleBounds.origin.x + visibleBounds.size.width) - NSToIntRound(visibleBounds.origin.x); outClipRect.height = NSToIntRound(visibleBounds.origin.y + visibleBounds.size.height) - NSToIntRound(visibleBounds.origin.y); @@ -2484,9 +2476,7 @@ NSEvent* gLastDragMouseDownEvent = nil; - (void)drawRect:(NSRect)aRect inContext:(CGContextRef)aContext { SAMPLE_LABEL("widget", "ChildView::drawRect"); - bool isVisible; - if (!mGeckoChild || NS_FAILED(mGeckoChild->IsVisible(isVisible)) || - !isVisible) + if (!mGeckoChild || !mGeckoChild->IsVisible()) return; #ifndef NP_NO_QUICKDRAW diff --git a/widget/cocoa/nsCocoaWindow.h b/widget/cocoa/nsCocoaWindow.h index a738877fe0b..9cf928cb35c 100644 --- a/widget/cocoa/nsCocoaWindow.h +++ b/widget/cocoa/nsCocoaWindow.h @@ -214,7 +214,7 @@ public: NS_IMETHOD Enable(bool aState); NS_IMETHOD IsEnabled(bool *aState); NS_IMETHOD SetModal(bool aState); - NS_IMETHOD IsVisible(bool & aState); + virtual bool IsVisible() const; NS_IMETHOD SetFocus(bool aState=false); virtual nsIntPoint WidgetToScreenOffset(); virtual nsIntPoint GetClientOffset(); diff --git a/widget/cocoa/nsCocoaWindow.mm b/widget/cocoa/nsCocoaWindow.mm index ba9005af745..776cc6cbaad 100644 --- a/widget/cocoa/nsCocoaWindow.mm +++ b/widget/cocoa/nsCocoaWindow.mm @@ -545,14 +545,13 @@ void* nsCocoaWindow::GetNativeData(PRUint32 aDataType) NS_OBJC_END_TRY_ABORT_BLOCK_NSNULL; } -NS_IMETHODIMP nsCocoaWindow::IsVisible(bool & aState) +bool nsCocoaWindow::IsVisible() const { - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; + NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - aState = (mWindow && ([mWindow isVisible] || mSheetNeedsShow)); - return NS_OK; + return (mWindow && ([mWindow isVisible] || mSheetNeedsShow)); - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; + NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(false); } NS_IMETHODIMP nsCocoaWindow::SetModal(bool aState) diff --git a/widget/gonk/nsWindow.cpp b/widget/gonk/nsWindow.cpp index 3545efb44d6..0e539c642f8 100644 --- a/widget/gonk/nsWindow.cpp +++ b/widget/gonk/nsWindow.cpp @@ -319,11 +319,10 @@ nsWindow::Show(bool aState) return NS_OK; } -NS_IMETHODIMP -nsWindow::IsVisible(bool & aState) +bool +nsWindow::IsVisible() const { - aState = mVisible; - return NS_OK; + return mVisible; } NS_IMETHODIMP diff --git a/widget/gonk/nsWindow.h b/widget/gonk/nsWindow.h index 8fbf28b9d0f..04f1fc4a05d 100644 --- a/widget/gonk/nsWindow.h +++ b/widget/gonk/nsWindow.h @@ -46,7 +46,7 @@ public: NS_IMETHOD Destroy(void); NS_IMETHOD Show(bool aState); - NS_IMETHOD IsVisible(bool & aState); + virtual bool IsVisible() const; NS_IMETHOD ConstrainPosition(bool aAllowSlop, PRInt32 *aX, PRInt32 *aY); diff --git a/widget/gtk2/nsWindow.cpp b/widget/gtk2/nsWindow.cpp index ffb6195a64e..395b3653462 100644 --- a/widget/gtk2/nsWindow.cpp +++ b/widget/gtk2/nsWindow.cpp @@ -908,11 +908,10 @@ nsWindow::SetModal(bool aModal) } // nsIWidget method, which means IsShown. -NS_IMETHODIMP -nsWindow::IsVisible(bool& aState) +bool +nsWindow::IsVisible() const { - aState = mIsShown; - return NS_OK; + return mIsShown; } NS_IMETHODIMP diff --git a/widget/gtk2/nsWindow.h b/widget/gtk2/nsWindow.h index d868d7a66b2..1581d931658 100644 --- a/widget/gtk2/nsWindow.h +++ b/widget/gtk2/nsWindow.h @@ -107,7 +107,7 @@ public: virtual float GetDPI(); virtual nsresult SetParent(nsIWidget* aNewParent); NS_IMETHOD SetModal(bool aModal); - NS_IMETHOD IsVisible(bool & aState); + virtual bool IsVisible() const; NS_IMETHOD ConstrainPosition(bool aAllowSlop, PRInt32 *aX, PRInt32 *aY); diff --git a/widget/nsIWidget.h b/widget/nsIWidget.h index 8d5adcf141a..3d5c637b53d 100644 --- a/widget/nsIWidget.h +++ b/widget/nsIWidget.h @@ -609,7 +609,7 @@ class nsIWidget : public nsISupports { * Returns whether the window is visible * */ - NS_IMETHOD IsVisible(bool & aState) = 0; + virtual bool IsVisible() const = 0; /** * Perform platform-dependent sanity check on a potential window position. diff --git a/widget/os2/nsWindow.cpp b/widget/os2/nsWindow.cpp index a45f7c36a27..b8e3e5ca90e 100644 --- a/widget/os2/nsWindow.cpp +++ b/widget/os2/nsWindow.cpp @@ -585,9 +585,7 @@ NS_METHOD nsWindow::Show(bool aState) // don't try to show new windows (e.g. the Bookmark menu) // during a native dragover because they'll remain invisible; if (CheckDragStatus(ACTION_SHOW, 0)) { - bool isVisible; - IsVisible(isVisible); - if (!isVisible) { + if (!IsVisible()) { PlaceBehind(eZPlacementTop, 0, false); } WinShowWindow(mWnd, true); @@ -602,10 +600,9 @@ NS_METHOD nsWindow::Show(bool aState) //----------------------------------------------------------------------------- -NS_METHOD nsWindow::IsVisible(bool& aState) +bool nsWindow::IsVisible() const { - aState = WinIsWindowVisible(GetMainWindow()) ? true : false; - return NS_OK; + return WinIsWindowVisible(GetMainWindow()); } //----------------------------------------------------------------------------- diff --git a/widget/os2/nsWindow.h b/widget/os2/nsWindow.h index 1d10c3d03f6..ca6047737e9 100644 --- a/widget/os2/nsWindow.h +++ b/widget/os2/nsWindow.h @@ -140,7 +140,7 @@ public: NS_IMETHOD Enable(bool aState); NS_IMETHOD IsEnabled(bool* aState); NS_IMETHOD Show(bool aState); - NS_IMETHOD IsVisible(bool& aState); + virtual bool IsVisible() const; NS_IMETHOD SetFocus(bool aRaise); NS_IMETHOD Invalidate(const nsIntRect& aRect); gfxASurface* GetThebesSurface(); diff --git a/widget/qt/nsWindow.cpp b/widget/qt/nsWindow.cpp index c950f140251..fdf84509572 100644 --- a/widget/qt/nsWindow.cpp +++ b/widget/qt/nsWindow.cpp @@ -475,11 +475,10 @@ nsWindow::SetModal(bool aModal) return NS_OK; } -NS_IMETHODIMP -nsWindow::IsVisible(bool & aState) +bool +nsWindow::IsVisible() const { - aState = mIsShown; - return NS_OK; + return mIsShown; } NS_IMETHODIMP diff --git a/widget/qt/nsWindow.h b/widget/qt/nsWindow.h index 017e50740e8..e57261978c9 100644 --- a/widget/qt/nsWindow.h +++ b/widget/qt/nsWindow.h @@ -112,7 +112,7 @@ public: virtual float GetDPI(); NS_IMETHOD Show(bool aState); NS_IMETHOD SetModal(bool aModal); - NS_IMETHOD IsVisible(bool & aState); + virtual bool IsVisible() const; NS_IMETHOD ConstrainPosition(bool aAllowSlop, PRInt32 *aX, PRInt32 *aY); diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp index 596fe5c0f84..47ccf4be2e7 100644 --- a/widget/windows/nsWindow.cpp +++ b/widget/windows/nsWindow.cpp @@ -1190,10 +1190,9 @@ NS_METHOD nsWindow::Show(bool bState) **************************************************************/ // Return true if the whether the component is visible, false otherwise -NS_METHOD nsWindow::IsVisible(bool & bState) +bool nsWindow::IsVisible() const { - bState = mIsVisible; - return NS_OK; + return mIsVisible; } /************************************************************** diff --git a/widget/windows/nsWindow.h b/widget/windows/nsWindow.h index a07bc57fcd1..18d6c3a2c21 100644 --- a/widget/windows/nsWindow.h +++ b/widget/windows/nsWindow.h @@ -92,7 +92,7 @@ public: virtual nsIWidget* GetParent(void); virtual float GetDPI(); NS_IMETHOD Show(bool bState); - NS_IMETHOD IsVisible(bool & aState); + virtual bool IsVisible() const; NS_IMETHOD ConstrainPosition(bool aAllowSlop, PRInt32 *aX, PRInt32 *aY); NS_IMETHOD Move(PRInt32 aX, PRInt32 aY); NS_IMETHOD Resize(PRInt32 aWidth, PRInt32 aHeight, bool aRepaint); diff --git a/widget/xpwidgets/PuppetWidget.h b/widget/xpwidgets/PuppetWidget.h index ae3e82fca64..e6e8d3ca2a5 100644 --- a/widget/xpwidgets/PuppetWidget.h +++ b/widget/xpwidgets/PuppetWidget.h @@ -64,8 +64,9 @@ public: NS_IMETHOD Destroy(); NS_IMETHOD Show(bool aState); - NS_IMETHOD IsVisible(bool& aState) - { aState = mVisible; return NS_OK; } + + virtual bool IsVisible() const + { return mVisible; } NS_IMETHOD ConstrainPosition(bool /*ignored aAllowSlop*/, PRInt32* aX, diff --git a/xpfe/appshell/src/nsXULWindow.cpp b/xpfe/appshell/src/nsXULWindow.cpp index 0045f6aa5a7..3869d352ff0 100644 --- a/xpfe/appshell/src/nsXULWindow.cpp +++ b/xpfe/appshell/src/nsXULWindow.cpp @@ -456,12 +456,9 @@ NS_IMETHODIMP nsXULWindow::Destroy() // only if the parent is visible. nsCOMPtr parent(do_QueryReferent(mParentWindow)); if (parent) { - bool parentVisible = true; nsCOMPtr parentWidget; parent->GetMainWidget(getter_AddRefs(parentWidget)); - if (parentWidget) - parentWidget->IsVisible(parentVisible); - if (parentVisible) { + if (!parentWidget || parentWidget->IsVisible()) { nsCOMPtr baseHiddenWindow; if (appShell) { nsCOMPtr hiddenWindow;