diff --git a/src/main/java/de/assecutor/votianlt/pages/view/PDFBuilderView.java b/src/main/java/de/assecutor/votianlt/pages/view/PDFBuilderView.java index 954a2c1..1b1cd36 100644 --- a/src/main/java/de/assecutor/votianlt/pages/view/PDFBuilderView.java +++ b/src/main/java/de/assecutor/votianlt/pages/view/PDFBuilderView.java @@ -176,12 +176,7 @@ public class PDFBuilderView extends Div { inspectorList.setPadding(false); inspectorList.setSpacing(false); - Button refresh = new Button("Aktualisieren", e -> refreshInspectorFromDom()); - refresh.addThemeVariants(ButtonVariant.LUMO_TERTIARY); - refresh.getStyle().set("width", "100%"); - refresh.getStyle().set("margin-top", "var(--lumo-space-s)"); - - inspector.add(title, inspectorList, refresh); + inspector.add(title, inspectorList); return inspector; } @@ -370,7 +365,18 @@ public class PDFBuilderView extends Div { double dy = y == null ? 0 : Math.max(0, y); double dw = w == null ? 10 : Math.max(10, w); double dh = h == null ? 10 : Math.max(10, h); - String js = "(function(){ const el = document.getElementById('" + id + "'); if(!el) return; el.style.left='" + (int)dx + "px'; el.style.top='" + (int)dy + "px'; el.style.width='" + (int)dw + "px'; el.style.height='" + (int)dh + "px'; })()"; + + // Set flag to indicate programmatic change before updating styles + String js = "(function(){ " + + "const el = document.getElementById('" + id + "'); " + + "if(!el) return; " + + "el._programmaticUpdate = true; " + // Flag to ignore ResizeObserver during programmatic updates + "el.style.left='" + (int)dx + "px'; " + + "el.style.top='" + (int)dy + "px'; " + + "el.style.width='" + (int)dw + "px'; " + + "el.style.height='" + (int)dh + "px'; " + + "setTimeout(() => { el._programmaticUpdate = false; }, 100); " + // Reset flag after DOM updates + "})()"; UI.getCurrent().getPage().executeJs(js); // Serverliste aktualisieren upsertServerFrame(id, null, null, (int)dx, (int)dy, (int)dw, (int)dh); @@ -811,7 +817,7 @@ public class PDFBuilderView extends Div { "frame.addEventListener('mousedown', onDown);\n" + "frame.addEventListener('touchstart', onDown, { passive: false });\n" + "// Größenänderungen beobachten (ResizeObserver)\n" + - "if (window.ResizeObserver) { const ro = new ResizeObserver(()=>{ try { if (canvas && canvas.parentElement && canvas.parentElement.$server && canvas.parentElement.$server.onFrameChanged) { canvas.parentElement.$server.onFrameChanged(); } } catch(e){} }); ro.observe(frame); }\n" + "if (window.ResizeObserver) { const ro = new ResizeObserver(()=>{ try { if (!frame._programmaticUpdate && canvas && canvas.parentElement && canvas.parentElement.$server && canvas.parentElement.$server.onFrameChanged) { canvas.parentElement.$server.onFrameChanged(); } } catch(e){} }); ro.observe(frame); }\n" ); }