From 3965f216e5beccb5f7c557fd378a0414c672556b Mon Sep 17 00:00:00 2001 From: James Turner <zakalawe@mac.com> Date: Thu, 30 Jun 2022 12:39:41 +0200 Subject: [PATCH] Gui: add some helpers: - clear() function on LineEdit - setDefault/Destructive flags on Button - check if focus is set on a Widget --- Nasal/canvas/gui/Widget.nas | 6 ++++++ Nasal/canvas/gui/widgets/Button.nas | 12 ++++++++++++ Nasal/canvas/gui/widgets/LineEdit.nas | 15 +++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/Nasal/canvas/gui/Widget.nas b/Nasal/canvas/gui/Widget.nas index eb6018429..1157368d6 100644 --- a/Nasal/canvas/gui/Widget.nas +++ b/Nasal/canvas/gui/Widget.nas @@ -108,6 +108,12 @@ gui.Widget = { return me; }, + # + hasActiveFocus:func + { + return me.getCanvas()._focused_widget == me; + }, + # listen: func(type, cb) { me._view._root.addEventListener("cb." ~ type, cb); diff --git a/Nasal/canvas/gui/widgets/Button.nas b/Nasal/canvas/gui/widgets/Button.nas index e18532309..1d8b5f40e 100644 --- a/Nasal/canvas/gui/widgets/Button.nas +++ b/Nasal/canvas/gui/widgets/Button.nas @@ -7,6 +7,8 @@ gui.widgets.Button = { m._down = 0; m._checkable = 0; m._flat = cfg.get("flat", 0); + m._isDefault = cfg.get("default", 0); + m._destructive = cfg.get("destructive", 0); if( style != nil and !m._flat ) m._setView( style.createWidget(parent, cfg.get("type", "button"), cfg) ); @@ -54,6 +56,16 @@ gui.widgets.Button = { return me; }, + setDefault: func(isDefault) + { + me._isDefault = isDefault; + return me; + }, + setDestructive: func(isDestructive) + { + me._destructive = isDestructive; + return me; + }, # protected: _setView: func(view) { diff --git a/Nasal/canvas/gui/widgets/LineEdit.nas b/Nasal/canvas/gui/widgets/LineEdit.nas index 62f36d968..fd83a0eea 100644 --- a/Nasal/canvas/gui/widgets/LineEdit.nas +++ b/Nasal/canvas/gui/widgets/LineEdit.nas @@ -19,6 +19,11 @@ gui.widgets.LineEdit = { }, setText: func(text) { + if (text == nil) { + me.clear(); + return me; + } + me._text = utf8.substr(text, 0, me._max_length); me._cursor = utf8.size(me._text); me._selection_start = me._cursor; @@ -29,6 +34,16 @@ gui.widgets.LineEdit = { return me; }, + clear: func + { + me._text = ""; + me._cursor = 0; + me._selection_start = 0; + me._selection_end = 0; + + if( me._view != nil ) + me._view.setText(me, ""); + }, text: func() { return me._text;