Browse Source

Fix input handling, fix ui select list focus

rsredsq 10 years ago
parent
commit
2d9d39f925

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

@@ -427,7 +427,7 @@ void UI::HandleKey(bool keydown, int keycode, int scancode)
     }
     else
     {
-        InvokeKey(this, rootWidget_, keycode, specialKey, mod, keydown);
+        InvokeKey(this, rootWidget_, 0, specialKey, mod, keydown);
     }
 
 }

+ 3 - 0
Source/Atomic/UI/UIListView.cpp

@@ -230,6 +230,7 @@ ListViewItemWidget::ListViewItemWidget(ListViewItem *item, ListViewItemSource *s
     SetLayoutDistribution(LAYOUT_DISTRIBUTION_GRAVITY);
     SetLayoutDistributionPosition(LAYOUT_DISTRIBUTION_POSITION_LEFT_TOP);
     SetPaintOverflowFadeout(false);
+    SetCapturing(false);
 
     item_->widget_ = this;
 
@@ -294,6 +295,8 @@ bool ListViewItemWidget::OnEvent(const TBWidgetEvent &ev)
 
     if (ev.type == EVENT_TYPE_POINTER_DOWN || ev.type == EVENT_TYPE_RIGHT_POINTER_UP)
     {
+        SetFocus(WIDGET_FOCUS_REASON_POINTER);
+
         TBWidget* parent = GetParent();
 
         while (parent)

+ 4 - 0
Source/Atomic/UI/UISelectList.cpp

@@ -194,6 +194,10 @@ void UISelectList::HandleUIUpdate(StringHash eventType, VariantMap& eventData)
 
 bool UISelectList::OnEvent(const tb::TBWidgetEvent &ev)
 {
+    if (ev.type == EVENT_TYPE_POINTER_DOWN)
+    {
+        GetTBSelectList()->SetFocus(WIDGET_FOCUS_REASON_POINTER);
+    }
     return UIWidget::OnEvent(ev);
 }
 

+ 12 - 0
Source/Atomic/UI/UIWidget.cpp

@@ -148,6 +148,18 @@ void UIWidget::ConvertEvent(UIWidget *handler, UIWidget* target, const tb::TBWid
         case TB_KEY_DELETE:
             key = KEY_DELETE;
             break;
+        case TB_KEY_DOWN:
+            key = KEY_DOWN;
+            break;
+        case TB_KEY_UP:
+            key = KEY_UP;
+            break;
+        case TB_KEY_LEFT:
+            key = KEY_LEFT;
+            break;
+        case TB_KEY_RIGHT:
+            key = KEY_RIGHT;
+            break;
         default:
             break;
         }