mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-04 02:57:38 +00:00
b40f06a081
Otherwise the only time it gets set is when the ZoomConstraintsClient specifically sets it in response to one of the things that can change it. But if the scroll frame gets reconstructed and one of those things don't happen it will be wrong. This shows up with desktop zooming scrollbars because we check mZoomableByAPZ (or WantAsyncScroll()) before we use the apz scroll path in ScrollFrameHelper::ScrollBy(). Differential Revision: https://phabricator.services.mozilla.com/D90384
56 lines
1.5 KiB
C++
56 lines
1.5 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef ZoomConstraintsClient_h_
|
|
#define ZoomConstraintsClient_h_
|
|
|
|
#include "mozilla/layers/ScrollableLayerGuid.h"
|
|
#include "mozilla/layers/ZoomConstraints.h"
|
|
#include "mozilla/Maybe.h"
|
|
#include "nsCOMPtr.h"
|
|
#include "nsIDOMEventListener.h"
|
|
#include "nsIObserver.h"
|
|
|
|
namespace mozilla {
|
|
class PresShell;
|
|
namespace dom {
|
|
class Document;
|
|
class EventTarget;
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
class ZoomConstraintsClient final : public nsIDOMEventListener,
|
|
public nsIObserver {
|
|
public:
|
|
NS_DECL_ISUPPORTS
|
|
NS_DECL_NSIDOMEVENTLISTENER
|
|
NS_DECL_NSIOBSERVER
|
|
|
|
ZoomConstraintsClient();
|
|
|
|
private:
|
|
~ZoomConstraintsClient();
|
|
|
|
public:
|
|
void Init(mozilla::PresShell* aPresShell, mozilla::dom::Document* aDocument);
|
|
void Destroy();
|
|
void ScreenSizeChanged();
|
|
|
|
bool GetAllowZoom() const { return mZoomConstraints.mAllowZoom; }
|
|
|
|
private:
|
|
void RefreshZoomConstraints();
|
|
|
|
RefPtr<mozilla::dom::Document> mDocument;
|
|
// raw ref since the presShell owns this
|
|
mozilla::PresShell* MOZ_NON_OWNING_REF mPresShell;
|
|
nsCOMPtr<mozilla::dom::EventTarget> mEventTarget;
|
|
mozilla::Maybe<mozilla::layers::ScrollableLayerGuid> mGuid;
|
|
mozilla::layers::ZoomConstraints mZoomConstraints;
|
|
};
|
|
|
|
#endif
|