mirror of
https://github.com/rio-labs/rio.git
synced 2026-05-22 04:28:33 -05:00
window resize event bugfix
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { getComponentByElement } from './componentManagement';
|
||||
import { eventRateLimiter } from './eventRateLimiter';
|
||||
import { updateLayout } from './layouting';
|
||||
import { callRemoteMethodDiscardResponse, initWebsocket } from './rpc';
|
||||
import { scrollToUrlFragment } from './utils';
|
||||
@@ -55,17 +56,17 @@ export let pixelsPerRem = 16;
|
||||
export let scrollBarSize = SCROLL_BAR_SIZE_IN_PIXELS / pixelsPerRem;
|
||||
|
||||
let notifyBackendOfWindowSizeChange = eventRateLimiter(
|
||||
(newWidth: number, newHeight: number) => {
|
||||
(newWidthPx: number, newHeightPx: number) => {
|
||||
try {
|
||||
callRemoteMethodDiscardResponse('onWindowSizeChange', {
|
||||
newWidth: newWidth,
|
||||
newHeight: newHeight,
|
||||
newWidth: newWidthPx / pixelsPerRem,
|
||||
newHeight: newHeightPx / pixelsPerRem,
|
||||
});
|
||||
} catch (e) {
|
||||
console.warn(`Couldn't notify backend of window resize: ${e}`);
|
||||
}
|
||||
},
|
||||
250
|
||||
500
|
||||
);
|
||||
|
||||
function main(): void {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* @param delay - The delay in milliseconds between function calls.
|
||||
* @returns A function that removes the event listener.
|
||||
*/
|
||||
function eventRateLimiter(
|
||||
export function eventRateLimiter(
|
||||
callback: (...args: any[]) => void,
|
||||
delay: number
|
||||
): (...args: any[]) => void {
|
||||
@@ -22,6 +22,7 @@ function eventRateLimiter(
|
||||
|
||||
// If a timeout is already set, do nothing
|
||||
if (timeout) {
|
||||
console.trace('Eating');
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+10
-3
@@ -800,13 +800,20 @@ window.history.{method}(null, "", {json.dumps(str(active_page_url))})
|
||||
)
|
||||
|
||||
# Trigger the `on_page_change` event
|
||||
# async def worker():
|
||||
for component, callbacks in self._page_change_callbacks.items():
|
||||
for callback in callbacks:
|
||||
print(f"Starting with current url {self.active_page_url}")
|
||||
self.create_task(
|
||||
self._call_event_handler(callback, component, refresh=True),
|
||||
name="`on_page_change` event handler",
|
||||
)
|
||||
|
||||
# self.create_task(
|
||||
# worker(),
|
||||
# name="Trigger `on_page_change` event",
|
||||
# )
|
||||
|
||||
def _register_dirty_component(
|
||||
self,
|
||||
component: rio.Component,
|
||||
@@ -2431,8 +2438,8 @@ a.remove();
|
||||
Called by the client when the window is resized.
|
||||
"""
|
||||
# Update the stored window size
|
||||
self._window_width = new_width
|
||||
self._window_height = new_height
|
||||
self.window_width = new_width
|
||||
self.window_height = new_height
|
||||
|
||||
# Trigger the `on_page_size_change` event
|
||||
for (
|
||||
@@ -2442,5 +2449,5 @@ a.remove();
|
||||
for callback in callbacks:
|
||||
self.create_task(
|
||||
self._call_event_handler(callback, component, refresh=True),
|
||||
name="`on_on_window_size_change_change` event handler",
|
||||
name="`on_on_window_size_change` event handler",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user