Bug 1813303 - Clean up nsIWidget::SetNonClientMargins usage. r=spohl

Make it take a const reference and simplify callers.

No behavior change, but noticed while looking through this code.

Differential Revision: https://phabricator.services.mozilla.com/D168199
This commit is contained in:
Emilio Cobos Álvarez 2023-01-28 21:43:47 +00:00
Родитель 604d8268b2
Коммит e7fa71f013
11 изменённых файлов: 16 добавлений и 23 удалений

Просмотреть файл

@ -314,7 +314,7 @@ class nsCocoaWindow final : public nsBaseWidget, public nsPIWidgetCocoa {
virtual void SetSupportsNativeFullscreen(bool aShow) override;
virtual void SetWindowAnimationType(WindowAnimationType aType) override;
virtual void SetDrawsTitle(bool aDrawTitle) override;
virtual nsresult SetNonClientMargins(LayoutDeviceIntMargin& aMargins) override;
virtual nsresult SetNonClientMargins(const LayoutDeviceIntMargin&) override;
virtual void SetDrawsInTitlebar(bool aState) override;
virtual void UpdateThemeGeometries(const nsTArray<ThemeGeometry>& aThemeGeometries) override;
virtual nsresult SynthesizeNativeMouseEvent(LayoutDeviceIntPoint aPoint,

Просмотреть файл

@ -2469,7 +2469,7 @@ void nsCocoaWindow::SetDrawsTitle(bool aDrawTitle) {
NS_OBJC_END_TRY_IGNORE_BLOCK;
}
nsresult nsCocoaWindow::SetNonClientMargins(LayoutDeviceIntMargin& margins) {
nsresult nsCocoaWindow::SetNonClientMargins(const LayoutDeviceIntMargin& margins) {
NS_OBJC_BEGIN_TRY_BLOCK_RETURN;
SetDrawsInTitlebar(margins.top == 0);

Просмотреть файл

@ -8681,7 +8681,7 @@ void nsWindow::SetCompositorWidgetDelegate(CompositorWidgetDelegate* delegate) {
}
}
nsresult nsWindow::SetNonClientMargins(LayoutDeviceIntMargin& aMargins) {
nsresult nsWindow::SetNonClientMargins(const LayoutDeviceIntMargin& aMargins) {
SetDrawsInTitlebar(aMargins.top == 0);
return NS_OK;
}

Просмотреть файл

@ -360,7 +360,7 @@ class nsWindow final : public nsBaseWidget {
void GetCompositorWidgetInitData(
mozilla::widget::CompositorWidgetInitData* aInitData) override;
nsresult SetNonClientMargins(LayoutDeviceIntMargin& aMargins) override;
nsresult SetNonClientMargins(const LayoutDeviceIntMargin&) override;
void SetDrawsInTitlebar(bool aState) override;
mozilla::LayoutDeviceIntCoord GetTitlebarRadius();
LayoutDeviceIntRect GetTitlebarRect();

Просмотреть файл

@ -84,7 +84,7 @@ class HeadlessWidget : public nsBaseWidget {
return NS_OK;
}
virtual nsresult SetNonClientMargins(
LayoutDeviceIntMargin& margins) override {
const LayoutDeviceIntMargin& margins) override {
// Headless widgets have no chrome margins, so just ignore the call.
return NS_OK;
}

Просмотреть файл

@ -1702,7 +1702,7 @@ LayoutDeviceIntPoint nsBaseWidget::GetClientOffset() {
return LayoutDeviceIntPoint(0, 0);
}
nsresult nsBaseWidget::SetNonClientMargins(LayoutDeviceIntMargin& margins) {
nsresult nsBaseWidget::SetNonClientMargins(const LayoutDeviceIntMargin&) {
return NS_ERROR_NOT_IMPLEMENTED;
}

Просмотреть файл

@ -259,7 +259,7 @@ class nsBaseWidget : public nsIWidget, public nsSupportsWeakReference {
LayoutDeviceIntRect GetClientBounds() override;
LayoutDeviceIntRect GetScreenBounds() override;
[[nodiscard]] nsresult GetRestoredBounds(LayoutDeviceIntRect& aRect) override;
nsresult SetNonClientMargins(LayoutDeviceIntMargin& aMargins) override;
nsresult SetNonClientMargins(const LayoutDeviceIntMargin&) override;
LayoutDeviceIntPoint GetClientOffset() override;
void EnableDragDrop(bool aEnable) override{};
nsresult AsyncEnableDragDrop(bool aEnable) override;

Просмотреть файл

@ -938,7 +938,7 @@ class nsIWidget : public nsISupports {
* icon and window title text. Glass desktops will refuse to set
* dimensions between zero and size < system default.
*/
virtual nsresult SetNonClientMargins(LayoutDeviceIntMargin& aMargins) = 0;
virtual nsresult SetNonClientMargins(const LayoutDeviceIntMargin&) = 0;
/**
* Sets the region around the edges of the window that can be dragged to

Просмотреть файл

@ -1043,8 +1043,7 @@ nsresult nsWindow::Create(nsIWidget* aParent, nsNativeWidget aNativeParent,
// These match the margins set in browser-tabsintitlebar.js with
// default prefs on Windows. Bug 1673092 tracks lining this up with
// that more correctly instead of hard-coding it.
LayoutDeviceIntMargin margins(0, 2, 2, 2);
SetNonClientMargins(margins);
SetNonClientMargins(LayoutDeviceIntMargin(0, 2, 2, 2));
// Reset the WNDPROC for this window and its whole class, as we had
// to use our own WNDPROC when creating the the skeleton UI window.
@ -2670,14 +2669,9 @@ void nsWindow::SetDrawsInTitlebar(bool aState) {
return window->SetDrawsInTitlebar(aState);
}
if (aState) {
// top, right, bottom, left for nsIntMargin
LayoutDeviceIntMargin margins(0, -1, -1, -1);
SetNonClientMargins(margins);
} else {
LayoutDeviceIntMargin margins(-1, -1, -1, -1);
SetNonClientMargins(margins);
}
// top, right, bottom, left
SetNonClientMargins(aState ? LayoutDeviceIntMargin(0, -1, -1, -1)
: LayoutDeviceIntMargin(-1, -1, -1, -1));
}
void nsWindow::ResetLayout() {
@ -2967,7 +2961,7 @@ bool nsWindow::UpdateNonClientMargins(bool aReflowWindow) {
return true;
}
nsresult nsWindow::SetNonClientMargins(LayoutDeviceIntMargin& margins) {
nsresult nsWindow::SetNonClientMargins(const LayoutDeviceIntMargin& margins) {
if (!mIsTopWidgetWindow || mBorderStyle == BorderStyle::None)
return NS_ERROR_INVALID_ARG;

Просмотреть файл

@ -272,7 +272,7 @@ class nsWindow final : public nsBaseWidget {
void SetTransparencyMode(TransparencyMode aMode) override;
TransparencyMode GetTransparencyMode() override;
void UpdateOpaqueRegion(const LayoutDeviceIntRegion& aOpaqueRegion) override;
nsresult SetNonClientMargins(LayoutDeviceIntMargin& aMargins) override;
nsresult SetNonClientMargins(const LayoutDeviceIntMargin&) override;
void SetResizeMargin(mozilla::LayoutDeviceIntCoord aResizeMargin) override;
void SetDrawsInTitlebar(bool aState) override;
void UpdateWindowDraggingRegion(

Просмотреть файл

@ -1613,9 +1613,8 @@ void AppWindow::SyncAttributesToWidget() {
nsIntMargin margins;
windowElement->GetAttribute(u"chromemargin"_ns, attr);
if (nsContentUtils::ParseIntMarginValue(attr, margins)) {
LayoutDeviceIntMargin tmp =
LayoutDeviceIntMargin::FromUnknownMargin(margins);
mWindow->SetNonClientMargins(tmp);
mWindow->SetNonClientMargins(
LayoutDeviceIntMargin::FromUnknownMargin(margins));
}
NS_ENSURE_TRUE_VOID(mWindow);