Unverified Commit 22d02e6b authored by Shagen Ogandzhanian's avatar Shagen Ogandzhanian Committed by GitHub

[wasm],[js] Trigger change scale event only once for every possible s… (#888)

parent c3a90084
...@@ -3,9 +3,9 @@ plugins { ...@@ -3,9 +3,9 @@ plugins {
} }
repositories { repositories {
mavenLocal()
mavenCentral() mavenCentral()
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
mavenLocal()
} }
var version = "0.0.0-SNAPSHOT" var version = "0.0.0-SNAPSHOT"
......
package org.jetbrains.skiko package org.jetbrains.skiko
import kotlinx.browser.window import kotlinx.browser.window
import org.w3c.dom.AddEventListenerOptions
import org.w3c.dom.MediaQueryListEvent
import org.w3c.dom.events.KeyboardEvent import org.w3c.dom.events.KeyboardEvent
import org.w3c.dom.events.UIEvent import org.w3c.dom.events.UIEvent
...@@ -13,6 +15,11 @@ actual typealias SkikoPlatformPointerEvent = UIEvent ...@@ -13,6 +15,11 @@ actual typealias SkikoPlatformPointerEvent = UIEvent
internal actual fun SkiaLayer.setOnChangeScaleNotifier() { internal actual fun SkiaLayer.setOnChangeScaleNotifier() {
state?.initCanvas(desiredWidth, desiredHeight, contentScale, this.pixelGeometry) state?.initCanvas(desiredWidth, desiredHeight, contentScale, this.pixelGeometry)
window.matchMedia("(resolution: ${contentScale}dppx)") window.matchMedia("(resolution: ${contentScale}dppx)")
.addEventListener("change", { setOnChangeScaleNotifier() }, true) .addEventListener("change", { evt ->
evt as MediaQueryListEvent
if (!evt.matches) {
setOnChangeScaleNotifier()
}
}, AddEventListenerOptions(capture = true, once = true))
onContentScaleChanged?.invoke(contentScale) onContentScaleChanged?.invoke(contentScale)
} }
\ No newline at end of file
package org.jetbrains.skiko package org.jetbrains.skiko
import kotlinx.browser.window import kotlinx.browser.window
import org.w3c.dom.AddEventListenerOptions
import org.w3c.dom.MediaQueryListEvent
import org.w3c.dom.events.KeyboardEvent import org.w3c.dom.events.KeyboardEvent
import org.w3c.dom.events.UIEvent import org.w3c.dom.events.UIEvent
...@@ -14,6 +16,11 @@ actual typealias SkikoPlatformPointerEvent = UIEvent ...@@ -14,6 +16,11 @@ actual typealias SkikoPlatformPointerEvent = UIEvent
internal actual fun SkiaLayer.setOnChangeScaleNotifier() { internal actual fun SkiaLayer.setOnChangeScaleNotifier() {
state?.initCanvas(desiredWidth, desiredHeight, contentScale, this.pixelGeometry) state?.initCanvas(desiredWidth, desiredHeight, contentScale, this.pixelGeometry)
window.matchMedia("(resolution: ${contentScale}dppx)") window.matchMedia("(resolution: ${contentScale}dppx)")
.addEventListener("change", { setOnChangeScaleNotifier() }, true) .addEventListener("change", { evt ->
evt as MediaQueryListEvent
if (!evt.matches) {
setOnChangeScaleNotifier()
}
}, AddEventListenerOptions(capture = true, once = true))
onContentScaleChanged?.invoke(contentScale) onContentScaleChanged?.invoke(contentScale)
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment