gecko-dev/layout/base/PositionedEventTargeting.h
Botond Ballo 173d001b86 Bug 1556556 - Propagate RelativeTo far and wide. r=kats,mattwoodrow
This "upgrades" various nsLayoutUtils functions which take as inputs
a set of coordinates and a frame that the coordinates are relative to,
to accept a RelativeTo object instead of a frame.

Most of the patch is just dumb propagation, but the few places where
we use an explicit ViewportType::Visual are important. There are
probably a few other places I've overlooked, but this seems to cover
the important ones that come up commonly.

There are undoubtedly other functions into which we can propagate
RelativeTo, in this patch I've propagated it as far as necessary
for my needs in this bug (mainly GetTransformToAncestor() and
GetEventCoordinatesRelativeTo()).

Differential Revision: https://phabricator.services.mozilla.com/D68919
2020-05-05 19:26:38 +00:00

42 lines
1.2 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 mozilla_PositionedEventTargeting_h
#define mozilla_PositionedEventTargeting_h
#include <stdint.h>
#include "mozilla/EventForwards.h"
#include "nsLayoutUtils.h"
class nsIFrame;
struct nsPoint;
namespace mozilla {
enum { INPUT_IGNORE_ROOT_SCROLL_FRAME = 0x01 };
/**
* Finds the target frame for a pointer event given the event type and location.
* This can look for frames within a rectangle surrounding the actual location
* that are suitable targets, to account for inaccurate pointing devices.
*/
nsIFrame* FindFrameTargetedByInputEvent(
WidgetGUIEvent* aEvent, RelativeTo aRootFrame,
const nsPoint& aPointRelativeToRootFrame, uint32_t aFlags = 0);
class MOZ_RAII EventRetargetSuppression {
public:
EventRetargetSuppression();
~EventRetargetSuppression();
static bool IsActive();
private:
static uint32_t sSuppressionCount;
};
} // namespace mozilla
#endif /* mozilla_PositionedEventTargeting_h */