author | Nicholas Nethercote <nnethercote@mozilla.com> |
Wed, 25 Nov 2015 21:42:59 -0800 | |
changeset 309543 | d1167d19ab51196d6e075017c949dea459e21abf |
parent 309542 | de467557ee9ef4d31e1674bc5595dbe9c9cc8834 |
child 309544 | 7a398dd6f5f300d779e9700e17b171ae7a501563 |
push id | 5513 |
push user | raliiev@mozilla.com |
push date | Mon, 25 Jan 2016 13:55:34 +0000 |
treeherder | mozilla-beta@5ee97dd05b5c [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | botond |
bugs | 1229237 |
milestone | 45.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/layout/base/nsLayoutUtils.cpp +++ b/layout/base/nsLayoutUtils.cpp @@ -3434,21 +3434,20 @@ nsLayoutUtils::PaintFrame(nsRenderingCon // and plugin clip regions and bounds. if ((aFlags & PAINT_WIDGET_LAYERS) && !(aFlags & PAINT_DOCUMENT_RELATIVE)) { nsIWidget *widget = aFrame->GetNearestWidget(); if (widget) { nsRegion opaqueRegion; opaqueRegion.And(builder.GetWindowExcludeGlassRegion(), builder.GetWindowOpaqueRegion()); widget->UpdateOpaqueRegion( - opaqueRegion.ToNearestPixels(presContext->AppUnitsPerDevPixel())); - - const nsIntRegion& draggingRegion = - builder.GetWindowDraggingRegion().ToUnknownRegion(); - widget->UpdateWindowDraggingRegion(draggingRegion); + LayoutDeviceIntRegion::FromUnknownRegion( + opaqueRegion.ToNearestPixels(presContext->AppUnitsPerDevPixel()))); + + widget->UpdateWindowDraggingRegion(builder.GetWindowDraggingRegion()); } } if (builder.WillComputePluginGeometry()) { // For single process compute and apply plugin geometry updates to plugin // windows, then request composition. For content processes skip eveything // except requesting composition. Geometry updates were calculated and // shipped to the chrome process in nsDisplayList when the layer
--- a/widget/cocoa/nsChildView.h +++ b/widget/cocoa/nsChildView.h @@ -487,17 +487,17 @@ public: virtual void CleanupWindowEffects() override; virtual bool PreRender(LayerManagerComposite* aManager) override; virtual void PostRender(LayerManagerComposite* aManager) override; virtual void DrawWindowOverlay(LayerManagerComposite* aManager, LayoutDeviceIntRect aRect) override; virtual void UpdateThemeGeometries(const nsTArray<ThemeGeometry>& aThemeGeometries) override; - virtual void UpdateWindowDraggingRegion(const nsIntRegion& aRegion) override; + virtual void UpdateWindowDraggingRegion(const LayoutDeviceIntRegion& aRegion) override; const LayoutDeviceIntRegion& GetDraggableRegion() { return mDraggableRegion; } virtual void ReportSwipeStarted(uint64_t aInputBlockId, bool aStartSwipe) override; void ResetParent(); static bool DoHasPendingInputEvent(); static uint32_t GetCurrentInputEventCount();
--- a/widget/cocoa/nsChildView.mm +++ b/widget/cocoa/nsChildView.mm @@ -2708,22 +2708,20 @@ nsChildView::DoRemoteComposition(const L DrawWindowOverlay(mGLPresenter, aRenderRect); mGLPresenter->EndFrame(); [(ChildView*)mView postRender:mGLPresenter->GetNSOpenGLContext()]; } void -nsChildView::UpdateWindowDraggingRegion(const nsIntRegion& aRegion) -{ - LayoutDeviceIntRegion region = - LayoutDeviceIntRegion::FromUnknownRegion(aRegion); - if (mDraggableRegion != region) { - mDraggableRegion = region; +nsChildView::UpdateWindowDraggingRegion(const LayoutDeviceIntRegion& aRegion) +{ + if (mDraggableRegion != aRegion) { + mDraggableRegion = aRegion; [(ChildView*)mView updateWindowDraggableState]; } } void nsChildView::ReportSwipeStarted(uint64_t aInputBlockId, bool aStartSwipe) {
--- a/widget/nsIWidget.h +++ b/widget/nsIWidget.h @@ -1291,22 +1291,22 @@ class nsIWidget : public nsISupports { */ virtual void UpdateThemeGeometries(const nsTArray<ThemeGeometry>& aThemeGeometries) = 0; /** * Informs the widget about the region of the window that is opaque. * * @param aOpaqueRegion the region of the window that is opaque. */ - virtual void UpdateOpaqueRegion(const nsIntRegion &aOpaqueRegion) {} + virtual void UpdateOpaqueRegion(const LayoutDeviceIntRegion& aOpaqueRegion) {} /** * Informs the widget about the region of the window that is draggable. */ - virtual void UpdateWindowDraggingRegion(const nsIntRegion& aRegion) {} + virtual void UpdateWindowDraggingRegion(const LayoutDeviceIntRegion& aRegion) {} /** * Tells the widget whether the given input block results in a swipe. * Should be called in response to a WidgetWheelEvent that has * mFlags.mCanTriggerSwipe set on it. */ virtual void ReportSwipeStarted(uint64_t aInputBlockId, bool aStartSwipe) {}
--- a/widget/windows/nsWindow.cpp +++ b/widget/windows/nsWindow.cpp @@ -2648,17 +2648,17 @@ nsTransparencyMode nsWindow::GetTranspar return GetTopLevelWindow(true)->GetWindowTranslucencyInner(); } void nsWindow::SetTransparencyMode(nsTransparencyMode aMode) { GetTopLevelWindow(true)->SetWindowTranslucencyInner(aMode); } -void nsWindow::UpdateOpaqueRegion(const nsIntRegion &aOpaqueRegion) +void nsWindow::UpdateOpaqueRegion(const LayoutDeviceIntRegion& aOpaqueRegion) { if (!HasGlass() || GetParent()) return; // If there is no opaque region or hidechrome=true, set margins // to support a full sheet of glass. Comments in MSDN indicate // all values must be set to -1 to get a full sheet of glass. MARGINS margins = { -1, -1, -1, -1 }; @@ -2674,17 +2674,17 @@ void nsWindow::UpdateOpaqueRegion(const } LayoutDeviceIntRect clientBounds; GetClientBounds(clientBounds); // Find the largest rectangle and use that to calculate the inset. Our top // priority is to include the bounds of all plugins. LayoutDeviceIntRect largest = - LayoutDeviceIntRegion::FromUnknownRegion(aOpaqueRegion).GetLargestRectangle(pluginBounds); + aOpaqueRegion.GetLargestRectangle(pluginBounds); margins.cxLeftWidth = largest.x; margins.cxRightWidth = clientBounds.width - largest.XMost(); margins.cyBottomHeight = clientBounds.height - largest.YMost(); if (mCustomNonClient) { // The minimum glass height must be the caption buttons height, // otherwise the buttons are drawn incorrectly. largest.y = std::max<uint32_t>(largest.y, nsUXThemeData::sCommandButtons[CMDBUTTONIDX_BUTTONBOX].cy); @@ -2704,17 +2704,17 @@ void nsWindow::UpdateOpaqueRegion(const * SECTION: nsIWidget::UpdateWindowDraggingRegion * * For setting the draggable titlebar region from CSS * with -moz-window-dragging: drag. * **************************************************************/ void -nsWindow::UpdateWindowDraggingRegion(const nsIntRegion& aRegion) +nsWindow::UpdateWindowDraggingRegion(const LayoutDeviceIntRegion& aRegion) { if (mDraggableRegion != aRegion) { mDraggableRegion = aRegion; } } void nsWindow::UpdateGlass() {
--- a/widget/windows/nsWindow.h +++ b/widget/windows/nsWindow.h @@ -186,25 +186,25 @@ public: uint32_t aAdditionalFlags, nsIObserver* aObserver) override; NS_IMETHOD_(void) SetInputContext(const InputContext& aContext, const InputContextAction& aAction); NS_IMETHOD_(InputContext) GetInputContext(); #ifdef MOZ_XUL virtual void SetTransparencyMode(nsTransparencyMode aMode); virtual nsTransparencyMode GetTransparencyMode(); - virtual void UpdateOpaqueRegion(const nsIntRegion& aOpaqueRegion); + virtual void UpdateOpaqueRegion(const LayoutDeviceIntRegion& aOpaqueRegion); #endif // MOZ_XUL virtual nsIMEUpdatePreference GetIMEUpdatePreference(); NS_IMETHOD GetNonClientMargins(LayoutDeviceIntMargin& aMargins) override; NS_IMETHOD SetNonClientMargins(LayoutDeviceIntMargin& aMargins) override; void SetDrawsInTitlebar(bool aState); already_AddRefed<mozilla::gfx::DrawTarget> StartRemoteDrawing() override; virtual void EndRemoteDrawing() override; - virtual void UpdateWindowDraggingRegion(const nsIntRegion& aRegion) override; + virtual void UpdateWindowDraggingRegion(const LayoutDeviceIntRegion& aRegion) override; virtual void UpdateThemeGeometries(const nsTArray<ThemeGeometry>& aThemeGeometries) override; virtual uint32_t GetMaxTouchPoints() const override; /** * Event helpers */ virtual bool DispatchMouseEvent( @@ -528,17 +528,17 @@ protected: int32_t mHorResizeMargin; int32_t mVertResizeMargin; // Height of the caption plus border int32_t mCaptionHeight; nsCOMPtr<nsIIdleServiceInternal> mIdleService; // Draggable titlebar region maintained by UpdateWindowDraggingRegion - nsIntRegion mDraggableRegion; + LayoutDeviceIntRegion mDraggableRegion; // Hook Data Memebers for Dropdowns. sProcessHook Tells the // hook methods whether they should be processing the hook // messages. static HHOOK sMsgFilterHook; static HHOOK sCallProcHook; static HHOOK sCallMouseHook; static bool sProcessHook;