tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

nsIScrollbarMediator.h (4205B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #ifndef nsIScrollbarMediator_h___
      8 #define nsIScrollbarMediator_h___
      9 
     10 #include "mozilla/ScrollTypes.h"
     11 #include "nsCoord.h"
     12 #include "nsQueryFrame.h"
     13 
     14 class nsScrollbarFrame;
     15 class nsIFrame;
     16 
     17 class nsIScrollbarMediator : public nsQueryFrame {
     18 public:
     19  NS_DECL_QUERYFRAME_TARGET(nsIScrollbarMediator)
     20 
     21  /**
     22   * The aScrollbar argument denotes the scrollbar that's firing the
     23   * notification. aScrollbar is never null. aDirection is either -1, 0, or 1.
     24   */
     25 
     26  /**
     27   * When set to ENABLE_SNAP, additional scrolling will be performed after the
     28   * scroll operation to maintain the constraints set by CSS Scroll snapping.
     29   * The additional scrolling may include asynchronous smooth scrolls that
     30   * continue to animate after the initial scroll position has been set.
     31   * In case of DEFAULT, it means ENABLE_SNAP for CSS scroll snap v1,
     32   * DISABLE_SNAP for the old scroll snap.
     33   */
     34 
     35  /**
     36   * One of the following three methods is called when the scrollbar's button is
     37   * clicked.
     38   * @note These methods might destroy the frame, pres shell, and other objects.
     39   */
     40  virtual void ScrollByPage(nsScrollbarFrame* aScrollbar, int32_t aDirection,
     41                            mozilla::ScrollSnapFlags aSnapFlags =
     42                                mozilla::ScrollSnapFlags::Disabled) = 0;
     43  virtual void ScrollByWhole(nsScrollbarFrame* aScrollbar, int32_t aDirection,
     44                             mozilla::ScrollSnapFlags aSnapFlags =
     45                                 mozilla::ScrollSnapFlags::Disabled) = 0;
     46  virtual void ScrollByLine(nsScrollbarFrame* aScrollbar, int32_t aDirection,
     47                            mozilla::ScrollSnapFlags aSnapFlags =
     48                                mozilla::ScrollSnapFlags::Disabled) = 0;
     49 
     50  // Only implemented for ScrollContainerFrame, not nsTreeBodyFrame.
     51  virtual void ScrollByUnit(nsScrollbarFrame* aScrollbar,
     52                            mozilla::ScrollMode aMode, int32_t aDirection,
     53                            mozilla::ScrollUnit aUnit,
     54                            mozilla::ScrollSnapFlags aSnapFlags =
     55                                mozilla::ScrollSnapFlags::Disabled) = 0;
     56 
     57  /**
     58   * RepeatButtonScroll is called when the scrollbar's button is held down. When
     59   * the button is first clicked the increment is set; RepeatButtonScroll adds
     60   * this increment to the current position.
     61   * @note This method might destroy the frame, pres shell, and other objects.
     62   */
     63  virtual void RepeatButtonScroll(nsScrollbarFrame* aScrollbar) = 0;
     64  /**
     65   * aOldPos and aNewPos are scroll positions.
     66   * The scroll positions start with zero at the left edge; implementors that
     67   * want zero at the right edge for RTL content will need to adjust
     68   * accordingly. (See ScrollContainerFrame::ThumbMoved in
     69   * ScrollContainerFrame.cpp.)
     70   * @note This method might destroy the frame, pres shell, and other objects.
     71   */
     72  virtual void ThumbMoved(nsScrollbarFrame* aScrollbar, nscoord aOldPos,
     73                          nscoord aNewPos) = 0;
     74  /**
     75   * Called when the scroll bar thumb, slider, or any other component is
     76   * released.
     77   */
     78  virtual void ScrollbarReleased(nsScrollbarFrame* aScrollbar) = 0;
     79  virtual void VisibilityChanged(bool aVisible) = 0;
     80 
     81  /**
     82   * Obtain the frame for the horizontal or vertical scrollbar, or null
     83   * if there is no such box.
     84   */
     85  virtual nsScrollbarFrame* GetScrollbarBox(bool aVertical) = 0;
     86  /**
     87   * Show or hide scrollbars on 2 fingers touch.
     88   * Subclasses should call their ScrollbarActivity's corresponding methods.
     89   */
     90  virtual void ScrollbarActivityStarted() const = 0;
     91  virtual void ScrollbarActivityStopped() const = 0;
     92 
     93  virtual bool IsScrollbarOnRight() const = 0;
     94 
     95  /**
     96   * Returns true if the mediator is asking the scrollbar to suppress
     97   * repainting itself on changes.
     98   */
     99  virtual bool ShouldSuppressScrollbarRepaints() const = 0;
    100 };
    101 
    102 #endif