From 5f2d80755e479615f6e052e1c56ff51c48c9a0b6 Mon Sep 17 00:00:00 2001 From: paul Date: Sun, 16 Mar 2025 10:01:35 +0530 Subject: [PATCH] fix: fixed uncontrolled state updates --- src/canvas/canvas.js | 33 ++- src/canvas/toolbar.js | 4 +- src/canvas/widgets/base.js | 141 ++++++---- src/components/header.js | 2 +- src/frameworks/tkinter/widgets/base.js | 260 ++++++++++++++----- src/frameworks/tkinter/widgets/mainWindow.js | 11 +- 6 files changed, 324 insertions(+), 127 deletions(-) diff --git a/src/canvas/canvas.js b/src/canvas/canvas.js index 504bf2f..db12b58 100644 --- a/src/canvas/canvas.js +++ b/src/canvas/canvas.js @@ -244,6 +244,15 @@ class Canvas extends React.Component { } + openToolbar = (widget) => { + this.setState({ + // selectedWidget: selectedWidget, + toolbarAttrs: widget.getToolbarAttrs(), + toolbarOpen: true + }) + + } + mouseDownEvent(event) { this.mousePos = { x: event.clientX, y: event.clientY } @@ -263,11 +272,12 @@ class Canvas extends React.Component { selectedWidget.setZIndex(1000) selectedWidget.select() // console.log("selected widget", selectedWidget.getToolbarAttrs(), selectedWidget, this.state.selectedWidget) - this.setState({ - // selectedWidget: selectedWidget, - toolbarAttrs: selectedWidget.getToolbarAttrs(), - toolbarOpen: true - }) + // this.setState({ + // // selectedWidget: selectedWidget, + // toolbarAttrs: selectedWidget.getToolbarAttrs(), + // toolbarOpen: true + // }) + // this.openToolbar(selectedWidget) this.setSelectedWidget(selectedWidget) @@ -1216,6 +1226,17 @@ class Canvas extends React.Component { }) } + const handleWidgetSelect = (widgetId) => { + + if (this.selectedWidget && this.selectedWidget.getId() !== widgetId){ + this.selectedWidget?.deSelect() // deselect the previous widget before adding the new one + } + + const widget = this.getWidgetById(widgetId)?.current + this.setSelectedWidget(widget) + this.openToolbar(widget) + } + return ( this.setSelectedWidget(this.getWidgetById(widgetId)?.current)} + onSelect={handleWidgetSelect} onWidgetDeleteRequest={this.removeWidget} diff --git a/src/canvas/toolbar.js b/src/canvas/toolbar.js index 055b6d7..a5c6c30 100644 --- a/src/canvas/toolbar.js +++ b/src/canvas/toolbar.js @@ -165,7 +165,7 @@ const CanvasToolBar = memo(({ isOpen, widgetType, attrs = {} }) => { onChange={(value) => handleChange({ ...val.value, direction: value }, val.onChange)} /> -
+ {/*
Align items