Browse Source

Cleanups for PR

Josh Engebretson 10 years ago
parent
commit
466f3f7a32

+ 12 - 42
Script/AtomicEditor/ui/frames/inspector/DataBinding.ts

@@ -26,8 +26,7 @@ class DataBinding {
         fd.id = "Vera";
         fd.id = "Vera";
         fd.size = 11;
         fd.size = 11;
 
 
-        var editFields: Array<Atomic.UIEditField> = [];
-        var inlineSelects: Array<Atomic.UIInlineSelect> = [];
+        var editWidgets: Array<Atomic.UIWidget> = [];
 
 
         var enumSource = null;
         var enumSource = null;
 
 
@@ -68,7 +67,7 @@ class DataBinding {
                 var lp = new Atomic.UILayoutParams();
                 var lp = new Atomic.UILayoutParams();
                 lp.width = 140;
                 lp.width = 140;
                 field.layoutParams = lp;
                 field.layoutParams = lp;
-                editFields.push(field);
+                editWidgets.push(field);
                 widget = field;
                 widget = field;
             }
             }
 
 
@@ -82,7 +81,7 @@ class DataBinding {
             var lp = new Atomic.UILayoutParams();
             var lp = new Atomic.UILayoutParams();
             lp.width = 140;
             lp.width = 140;
             field.layoutParams = lp;
             field.layoutParams = lp;
-            editFields.push(field);
+            editWidgets.push(field);
 
 
             widget = field;
             widget = field;
 
 
@@ -96,7 +95,7 @@ class DataBinding {
             var lp = new Atomic.UILayoutParams();
             var lp = new Atomic.UILayoutParams();
             lp.width = 140;
             lp.width = 140;
             field.layoutParams = lp;
             field.layoutParams = lp;
-            editFields.push(field);
+            editWidgets.push(field);
             widget = field;
             widget = field;
         }
         }
         else if (attrInfo.type == Atomic.VAR_VECTOR3 || attrInfo.type == Atomic.VAR_QUATERNION) {
         else if (attrInfo.type == Atomic.VAR_VECTOR3 || attrInfo.type == Atomic.VAR_QUATERNION) {
@@ -109,7 +108,7 @@ class DataBinding {
 
 
             for (var i: any = 0; i < 3; i++) {
             for (var i: any = 0; i < 3; i++) {
                 var select = new Atomic.UIInlineSelect();
                 var select = new Atomic.UIInlineSelect();
-                inlineSelects.push(select);
+                editWidgets.push(select);
                 select.id = String(i + 1);
                 select.id = String(i + 1);
                 select.fontDescription = fd;
                 select.fontDescription = fd;
                 select.skinBg = "InspectorVectorAttrName";
                 select.skinBg = "InspectorVectorAttrName";
@@ -132,7 +131,7 @@ class DataBinding {
             for (var i: any = 0; i < 4; i++) {
             for (var i: any = 0; i < 4; i++) {
 
 
                 var select = new Atomic.UIInlineSelect();
                 var select = new Atomic.UIInlineSelect();
-                inlineSelects.push(select);
+                editWidgets.push(select);
                 select.id = String(i + 1);
                 select.id = String(i + 1);
                 select.fontDescription = fd;
                 select.fontDescription = fd;
                 select.setLimits(-10000000, 10000000);
                 select.setLimits(-10000000, 10000000);
@@ -150,7 +149,7 @@ class DataBinding {
 
 
             for (var i: any = 0; i < 2; i++) {
             for (var i: any = 0; i < 2; i++) {
                 var select = new Atomic.UIInlineSelect();
                 var select = new Atomic.UIInlineSelect();
-                inlineSelects.push(select);
+                editWidgets.push(select);
                 select.id = String(i + 1);
                 select.id = String(i + 1);
                 select.fontDescription = fd;
                 select.fontDescription = fd;
                 select.skinBg = "InspectorVectorAttrName";
                 select.skinBg = "InspectorVectorAttrName";
@@ -258,11 +257,8 @@ class DataBinding {
             var binding = new DataBinding(object, attrInfo, widget);
             var binding = new DataBinding(object, attrInfo, widget);
             binding.enumSource = enumSource;
             binding.enumSource = enumSource;
 
 
-            for (var i in editFields) {
-                editFields[i].subscribeToEvent(editFields[i], "UIWidgetFocusChanged", (ev) => binding.handleUIWidgetFocusChangedEvent(ev));
-            }
-            for (var i in inlineSelects) {
-                inlineSelects[i].subscribeToEvent(inlineSelects[i], "UIWidgetEditComplete", (ev) => binding.handleUIWidgetEditCompleteEvent(ev));
+            for (var i in editWidgets) {
+                editWidgets[i].subscribeToEvent(editWidgets[i], "UIWidgetEditComplete", (ev) => binding.handleUIWidgetEditCompleteEvent(ev));
             }
             }
 
 
             return binding;
             return binding;
@@ -472,33 +468,6 @@ class DataBinding {
 
 
     }
     }
 
 
-    // event for text field edits
-    handleUIWidgetFocusChangedEvent(ev: Atomic.UIWidgetFocusChangedEvent) {
-
-        // TODO: once new base class stuff is in, should be able to check for type
-        var scene = this.object["scene"];
-
-        if (!scene)
-            return;
-
-        if (ev.focused) {
-
-            // gaining focus, save initial value
-            this.initalEditValue = ev.widget.text;
-
-        } else {
-
-            if (this.initalEditValue != ev.widget.text) {
-
-                // focus changed, with value change record in history
-                scene.sendEvent("SceneEditSerializable", { serializable: this.object, operation: 1 });
-
-            }
-
-        }
-
-    }
-
     handleWidgetEvent(ev: Atomic.UIWidgetEvent): boolean {
     handleWidgetEvent(ev: Atomic.UIWidgetEvent): boolean {
 
 
         if (this.objectLocked)
         if (this.objectLocked)
@@ -537,9 +506,11 @@ class DataBinding {
         if (ev.type == Atomic.UI_EVENT_TYPE_CHANGED) {
         if (ev.type == Atomic.UI_EVENT_TYPE_CHANGED) {
 
 
             if (this.widget == ev.target || this.widget.isAncestorOf(ev.target)) {
             if (this.widget == ev.target || this.widget.isAncestorOf(ev.target)) {
-              
+
                 this.setObjectValueFromWidget(ev.target);
                 this.setObjectValueFromWidget(ev.target);
 
 
+                // UIEditField and UIInline select changes are handled by edit complete event
+                // Otherwise, we would get multiple edit snapshots
                 if (ev.target.getTypeName() != "UIEditField" && ev.target.getTypeName() != "UIInlineSelect") {
                 if (ev.target.getTypeName() != "UIEditField" && ev.target.getTypeName() != "UIInlineSelect") {
 
 
                     // TODO: once new base class stuff is in, should be able to check for type
                     // TODO: once new base class stuff is in, should be able to check for type
@@ -561,7 +532,6 @@ class DataBinding {
     attrInfo: Atomic.AttributeInfo;
     attrInfo: Atomic.AttributeInfo;
     widget: Atomic.UIWidget;
     widget: Atomic.UIWidget;
     enumSource: Atomic.UISelectItemSource;
     enumSource: Atomic.UISelectItemSource;
-    initalEditValue: string;
 
 
 }
 }
 
 

+ 6 - 0
Source/Atomic/UI/UIEditField.cpp

@@ -196,6 +196,12 @@ void UIEditField::SetTextAlign(UI_TEXT_ALIGN align)
 
 
 bool UIEditField::OnEvent(const tb::TBWidgetEvent &ev)
 bool UIEditField::OnEvent(const tb::TBWidgetEvent &ev)
 {
 {
+    if (ev.type == EVENT_TYPE_CUSTOM && ev.ref_id == TBIDC("edit_complete"))
+    {
+        SendEvent(E_UIWIDGETEDITCOMPLETE);
+        return true;
+    }
+
     return UIWidget::OnEvent(ev);
     return UIWidget::OnEvent(ev);
 }
 }
 
 

+ 1 - 1
Source/Atomic/UI/UIInlineSelect.cpp

@@ -70,7 +70,7 @@ void UIInlineSelect::SetLimits(double minimum, double maximum)
 
 
 bool UIInlineSelect::OnEvent(const tb::TBWidgetEvent &ev)
 bool UIInlineSelect::OnEvent(const tb::TBWidgetEvent &ev)
 {
 {
-    if (ev.type == EVENT_TYPE_CUSTOM && ev.ref_id == TBIDC("TBInlineSelectModified"))
+    if (ev.type == EVENT_TYPE_CUSTOM && ev.ref_id == TBIDC("edit_complete"))
     {
     {
         SendEvent(E_UIWIDGETEDITCOMPLETE);
         SendEvent(E_UIWIDGETEDITCOMPLETE);
         return true;
         return true;

+ 0 - 1
Source/AtomicEditor/Editors/JSResourceEditor.cpp

@@ -220,7 +220,6 @@ void JSResourceEditor::OnChange(TBStyleEdit* styleEdit)
 {
 {
     textDelta_ = 0.25f;
     textDelta_ = 0.25f;
     textDirty_ = true;
     textDirty_ = true;
-    modified_ = true;
 
 
     SetModified(true);
     SetModified(true);
 
 

+ 1 - 0
Source/AtomicEditor/Editors/ResourceEditor.cpp

@@ -174,6 +174,7 @@ void ResourceEditor::InvokeShortcut(const String& shortcut)
 
 
 void ResourceEditor::SetModified(bool modified)
 void ResourceEditor::SetModified(bool modified)
 {
 {
+    modified_ = modified;
     if (modified)
     if (modified)
     {
     {
         String filename = GetFileNameAndExtension(fullpath_);
         String filename = GetFileNameAndExtension(fullpath_);

+ 1 - 2
Source/AtomicEditor/Editors/SceneEditor3D/SceneEditor3D.cpp

@@ -310,8 +310,7 @@ void SceneEditor3D::Redo()
 
 
 void SceneEditor3D::HandleSceneEditSceneModified(StringHash eventType, VariantMap& eventData)
 void SceneEditor3D::HandleSceneEditSceneModified(StringHash eventType, VariantMap& eventData)
 {
 {
-    SetModified(true);
-    modified_ = true;
+    SetModified(true);    
 }
 }
 
 
 }
 }

+ 21 - 0
Source/ThirdParty/TurboBadger/tb_editfield.cpp

@@ -357,6 +357,27 @@ void TBEditField::OnFocusChanged(bool focused)
 {
 {
 	m_style_edit.Focus(focused);
 	m_style_edit.Focus(focused);
 
 
+    if (focused)
+    {
+        if (!m_style_edit.packed.styling_on)
+            GetText(m_initial_edit_text);
+    }
+    else
+    {
+        if (!m_style_edit.packed.styling_on)
+        {
+            TBStr curText;
+            GetText(curText);
+            if (!curText.Equals(m_initial_edit_text))
+            {
+                TBWidgetEvent ev(EVENT_TYPE_CUSTOM);
+                ev.ref_id = TBIDC("edit_complete");
+                // forward to delegate
+                TBWidget::OnEvent(ev);
+            }
+        }
+    }
+
     TBWidget::OnFocusChanged(focused);
     TBWidget::OnFocusChanged(focused);
 }
 }
 
 

+ 2 - 0
Source/ThirdParty/TurboBadger/tb_editfield.h

@@ -190,6 +190,8 @@ private:
 	int m_virtual_width;
 	int m_virtual_width;
 	void UpdateScrollbarVisibility(bool multiline);
 	void UpdateScrollbarVisibility(bool multiline);
 
 
+    TBStr m_initial_edit_text;
+
 	// == TBStyleEditListener =======================
 	// == TBStyleEditListener =======================
 	virtual void OnChange();
 	virtual void OnChange();
 	virtual bool OnEnter();
 	virtual bool OnEnter();

+ 1 - 1
Source/ThirdParty/TurboBadger/tb_inline_select.cpp

@@ -153,7 +153,7 @@ bool TBInlineSelect::OnEvent(const TBWidgetEvent &ev)
 void TBInlineSelect::InvokeModifiedEvent()
 void TBInlineSelect::InvokeModifiedEvent()
 {
 {
     TBWidgetEvent ev(EVENT_TYPE_CUSTOM);
     TBWidgetEvent ev(EVENT_TYPE_CUSTOM);
-    ev.ref_id = TBIDC("TBInlineSelectModified");
+    ev.ref_id = TBIDC("edit_complete");
     // forward to delegate
     // forward to delegate
     TBWidget::OnEvent(ev);
     TBWidget::OnEvent(ev);
     m_modified = false;
     m_modified = false;