Title: [283051] trunk/Source/WebCore
Revision
283051
Author
[email protected]
Date
2021-09-24 11:46:04 -0700 (Fri, 24 Sep 2021)

Log Message

[Media Controls] RangeButton doesn't show the fill indicator in fullscreen
https://bugs.webkit.org/show_bug.cgi?id=230759
<rdar://problem/82206303>

Reviewed by Dean Jackson.

RangeButton cannot work in fullscreen since it only ever registers "pointermove" and "pointerup"
events on window, which is not in the same display, rather than the controls element displayed
in fullscreen. So we adopt the same approach used for Slider, but also improve by not looking
for a specific MediaControls subclass, but rather by checking whether the traits indicate
these are fullscreen controls.

* Modules/modern-media-controls/controls/controls/range-button.js:
(RangeButton.prototype.handleEvent):
(RangeButton.prototype._pointerMoveAndEndTarget):
(RangeButton.prototype._handlePointerdown):
(RangeButton.prototype._handlePointerup):
* Modules/modern-media-controls/controls/controls/slider.js:
(Slider.prototype._interactionEndTarget):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (283050 => 283051)


--- trunk/Source/WebCore/ChangeLog	2021-09-24 18:44:03 UTC (rev 283050)
+++ trunk/Source/WebCore/ChangeLog	2021-09-24 18:46:04 UTC (rev 283051)
@@ -1,5 +1,27 @@
 2021-09-24  Antoine Quint  <[email protected]>
 
+        [Media Controls] RangeButton doesn't show the fill indicator in fullscreen
+        https://bugs.webkit.org/show_bug.cgi?id=230759
+        <rdar://problem/82206303>
+
+        Reviewed by Dean Jackson.
+
+        RangeButton cannot work in fullscreen since it only ever registers "pointermove" and "pointerup"
+        events on window, which is not in the same display, rather than the controls element displayed
+        in fullscreen. So we adopt the same approach used for Slider, but also improve by not looking
+        for a specific MediaControls subclass, but rather by checking whether the traits indicate
+        these are fullscreen controls.
+
+        * Modules/modern-media-controls/controls/controls/range-button.js:
+        (RangeButton.prototype.handleEvent):
+        (RangeButton.prototype._pointerMoveAndEndTarget):
+        (RangeButton.prototype._handlePointerdown):
+        (RangeButton.prototype._handlePointerup):
+        * Modules/modern-media-controls/controls/controls/slider.js:
+        (Slider.prototype._interactionEndTarget):
+
+2021-09-24  Antoine Quint  <[email protected]>
+
         [Media Controls] Allow for a close button
         https://bugs.webkit.org/show_bug.cgi?id=230761
 

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/range-button.js (283050 => 283051)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/range-button.js	2021-09-24 18:44:03 UTC (rev 283050)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/range-button.js	2021-09-24 18:46:04 UTC (rev 283051)
@@ -72,11 +72,11 @@
 
     handleEvent(event)
     {
-        if (event.currentTarget === this.element && event.type == "pointerdown")
+        if (event.currentTarget === this.element && event.type === "pointerdown")
             this._handlePointerdown(event);
-        else if (event.currentTarget === window && event.type === "pointermove")
+        else if (event.currentTarget === this._pointerMoveAndEndTarget() && event.type === "pointermove")
             this._handlePointermove(event);
-        else if (event.currentTarget === window && event.type === "pointerup")
+        else if (event.currentTarget === this._pointerMoveAndEndTarget() && event.type === "pointerup")
             this._handlePointerup(event);
         else
             super.handleEvent(event);
@@ -84,10 +84,16 @@
 
     // Private
 
+    _pointerMoveAndEndTarget()
+    {
+        const mediaControls = this.parentOfType(MediaControls);
+        return (!mediaControls || !mediaControls.layoutTraits.isFullscreen) ? window : mediaControls.element;
+    }
+
     _handlePointerdown(event)
     {
-        window.addEventListener("pointermove", this, true);
-        window.addEventListener("pointerup", this, true);
+        this._pointerMoveAndEndTarget().addEventListener("pointermove", this, true);
+        this._pointerMoveAndEndTarget().addEventListener("pointerup", this, true);
 
         this._initialPointerY = event.clientY;
         this._initialValue = this._value;
@@ -123,8 +129,8 @@
 
     _handlePointerup(event)
     {
-        window.removeEventListener("pointermove", this, true);
-        window.removeEventListener("pointerup", this, true);
+        this._pointerMoveAndEndTarget().removeEventListener("pointermove", this, true);
+        this._pointerMoveAndEndTarget().removeEventListener("pointerup", this, true);
 
         delete this._initialPointerY;
         delete this._initialValue;

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/slider.js (283050 => 283051)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/slider.js	2021-09-24 18:44:03 UTC (rev 283050)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/slider.js	2021-09-24 18:46:04 UTC (rev 283051)
@@ -190,7 +190,7 @@
     _interactionEndTarget()
     {
         const mediaControls = this.parentOfType(MediaControls);
-        return (!mediaControls || mediaControls instanceof MacOSInlineMediaControls) ? window : mediaControls.element;
+        return (!mediaControls || !mediaControls.layoutTraits.isFullscreen) ? window : mediaControls.element;
     }
 
     _valueWillStartChanging()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to