Browse Source

Fix when sometimes captured widget wasn't released.

rsredsq 10 years ago
parent
commit
5ec5e050a8

+ 3 - 3
Script/AtomicEditor/ui/frames/inspector/ComponentAttributeUI.ts

@@ -131,10 +131,10 @@ class SubmeshAttributeEdit extends AttributeInfoEdit {
 
 
     createMaterialEdit(materialIndex: number) {
     createMaterialEdit(materialIndex: number) {
 
 
-        var o = InspectorUtils.createAttrEditFieldWithSelectButton("", this.mainLayout);
+        var o = InspectorUtils.createAttrEditFieldWithSelectButton("Material", this.mainLayout);
 
 
         var lp = new Atomic.UILayoutParams();
         var lp = new Atomic.UILayoutParams();
-        lp.width = 250;
+        lp.width = 140;
         o.editField.layoutParams = lp;
         o.editField.layoutParams = lp;
         o.editField.readOnly = true;
         o.editField.readOnly = true;
 
 
@@ -429,10 +429,10 @@ class SubmeshListAttributeEdit extends AttributeInfoEdit {
                     submeshEdit.initialize(this.editType, this.attrInfo);
                     submeshEdit.initialize(this.editType, this.attrInfo);
                     this.layout.addChild(submeshEdit);
                     this.layout.addChild(submeshEdit);
                     this.submeshEdits[name] = submeshEdit;
                     this.submeshEdits[name] = submeshEdit;
+                    InspectorUtils.createSeparator(this.layout);
                 }
                 }
 
 
                 this.submeshEdits[name].materialIndexes.push(j);
                 this.submeshEdits[name].materialIndexes.push(j);
-
             }
             }
 
 
         }
         }

+ 16 - 6
Source/ThirdParty/TurboBadger/tb_widgets.cpp

@@ -1353,19 +1353,29 @@ void TBWidget::InvokePointerDown(int x, int y, int click_count, MODIFIER_KEYS mo
 void TBWidget::InvokePointerUp(int x, int y, MODIFIER_KEYS modifierkeys, bool touch, int touchId)
 void TBWidget::InvokePointerUp(int x, int y, MODIFIER_KEYS modifierkeys, bool touch, int touchId)
 {
 {
     TBWidget* down_widget = GetWidgetAt(x, y, true);
     TBWidget* down_widget = GetWidgetAt(x, y, true);
-	if (down_widget && down_widget->touchId_ == touchId)
+	if ((down_widget && down_widget->touchId_ == touchId) || captured_widget)
 	{
 	{
+        TBWidgetEvent ev_up(EVENT_TYPE_POINTER_UP, x, y, touch, modifierkeys);
+        TBWidgetEvent ev_click(EVENT_TYPE_CLICK, x, y, touch, modifierkeys);
         down_widget->Invalidate();
         down_widget->Invalidate();
         down_widget->InvalidateSkinStates();
         down_widget->InvalidateSkinStates();
         down_widget->OnCaptureChanged(false);
         down_widget->OnCaptureChanged(false);
 		down_widget->ConvertFromRoot(x, y);
 		down_widget->ConvertFromRoot(x, y);
-		TBWidgetEvent ev_up(EVENT_TYPE_POINTER_UP, x, y, touch, modifierkeys);
-		TBWidgetEvent ev_click(EVENT_TYPE_CLICK, x, y, touch, modifierkeys);
 		down_widget->InvokeEvent(ev_up);
 		down_widget->InvokeEvent(ev_up);
-		if (!cancel_click && down_widget->GetHitStatus(x, y))
+        if (!cancel_click && down_widget->GetHitStatus(x, y))
+        {
 			down_widget->InvokeEvent(ev_click);
 			down_widget->InvokeEvent(ev_click);
-		if (captured_widget) // && button == captured_button
-			captured_widget->ReleaseCapture();
+        }
+        if (captured_widget)
+        {
+            captured_widget->ConvertFromRoot(x, y);
+            if (!cancel_click && captured_widget->GetHitStatus(x, y))
+            {
+                captured_widget->InvokeEvent(ev_click);
+            }
+            captured_widget->InvokeEvent(ev_up);
+            captured_widget->ReleaseCapture();
+        }
 	}
 	}
 }
 }