mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-03 17:58:55 +02:00 
			
		
		
		
	This mostly just moves code around, to minimize potential behavior changes. There are some cleanups that we should try to do long term (this "have an array with n different counts" is pretty weird). But for now this should unblock people. The destination struct (nsStyleUIReset) was chosen mainly because it's small and non-inherited, and it doesn't seem like a worse place than nsStyleDisplay. Differential Revision: https://phabricator.services.mozilla.com/D144183
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			2.7 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/. */
 | 
						|
 | 
						|
/* Code to start and animate CSS transitions. */
 | 
						|
 | 
						|
#ifndef nsTransitionManager_h_
 | 
						|
#define nsTransitionManager_h_
 | 
						|
 | 
						|
#include "mozilla/dom/CSSTransition.h"
 | 
						|
#include "AnimationCommon.h"
 | 
						|
#include "nsISupportsImpl.h"
 | 
						|
 | 
						|
class nsPresContext;
 | 
						|
class nsCSSPropertyIDSet;
 | 
						|
struct nsStyleUIReset;
 | 
						|
 | 
						|
namespace mozilla {
 | 
						|
class ComputedStyle;
 | 
						|
enum class PseudoStyleType : uint8_t;
 | 
						|
}  // namespace mozilla
 | 
						|
 | 
						|
class nsTransitionManager final
 | 
						|
    : public mozilla::CommonAnimationManager<mozilla::dom::CSSTransition> {
 | 
						|
 public:
 | 
						|
  explicit nsTransitionManager(nsPresContext* aPresContext)
 | 
						|
      : mozilla::CommonAnimationManager<mozilla::dom::CSSTransition>(
 | 
						|
            aPresContext) {}
 | 
						|
 | 
						|
  ~nsTransitionManager() final = default;
 | 
						|
 | 
						|
  typedef mozilla::AnimationCollection<mozilla::dom::CSSTransition>
 | 
						|
      CSSTransitionCollection;
 | 
						|
 | 
						|
  /**
 | 
						|
   * Update transitions for stylo.
 | 
						|
   */
 | 
						|
  bool UpdateTransitions(mozilla::dom::Element* aElement,
 | 
						|
                         mozilla::PseudoStyleType aPseudoType,
 | 
						|
                         const mozilla::ComputedStyle& aOldStyle,
 | 
						|
                         const mozilla::ComputedStyle& aNewStyle);
 | 
						|
 | 
						|
 protected:
 | 
						|
  typedef nsTArray<RefPtr<mozilla::dom::CSSTransition>>
 | 
						|
      OwningCSSTransitionPtrArray;
 | 
						|
 | 
						|
  // Update transitions. This will start new transitions,
 | 
						|
  // replace existing transitions, and stop existing transitions
 | 
						|
  // as needed. aDisp and aElement must be non-null.
 | 
						|
  // aElementTransitions is the collection of current transitions, and it
 | 
						|
  // could be a nullptr if we don't have any transitions.
 | 
						|
  bool DoUpdateTransitions(const nsStyleUIReset& aStyle,
 | 
						|
                           mozilla::dom::Element* aElement,
 | 
						|
                           mozilla::PseudoStyleType aPseudoType,
 | 
						|
                           CSSTransitionCollection*& aElementTransitions,
 | 
						|
                           const mozilla::ComputedStyle& aOldStyle,
 | 
						|
                           const mozilla::ComputedStyle& aNewStyle);
 | 
						|
 | 
						|
  // Returns whether the transition actually started.
 | 
						|
  bool ConsiderInitiatingTransition(
 | 
						|
      nsCSSPropertyID aProperty, const nsStyleUIReset& aStyle,
 | 
						|
      uint32_t transitionIdx, mozilla::dom::Element* aElement,
 | 
						|
      mozilla::PseudoStyleType aPseudoType,
 | 
						|
      CSSTransitionCollection*& aElementTransitions,
 | 
						|
      const mozilla::ComputedStyle& aOldStyle,
 | 
						|
      const mozilla::ComputedStyle& aNewStyle,
 | 
						|
      nsCSSPropertyIDSet& aPropertiesChecked);
 | 
						|
};
 | 
						|
 | 
						|
#endif /* !defined(nsTransitionManager_h_) */
 |