瀏覽代碼

LibGUI: ComboBox, add "set_selected_index" method

Easy way to set selected item.
Hüseyin ASLITÜRK 5 年之前
父節點
當前提交
7194b4823e
共有 2 個文件被更改,包括 13 次插入1 次删除
  1. 11 1
      Libraries/LibGUI/ComboBox.cpp
  2. 2 0
      Libraries/LibGUI/ComboBox.h

+ 11 - 1
Libraries/LibGUI/ComboBox.cpp

@@ -67,7 +67,8 @@ ComboBox::ComboBox()
         ASSERT(model());
         auto new_value = model()->data(index).to_string();
         m_editor->set_text(new_value);
-        m_editor->select_all();
+        if (!m_only_allow_values_from_model)
+            m_editor->select_all();
         close();
         deferred_invoke([this, index](auto&) {
             if (on_change)
@@ -94,6 +95,15 @@ void ComboBox::set_model(NonnullRefPtr<Model> model)
     m_list_view->set_model(move(model));
 }
 
+void ComboBox::set_selected_index(size_t index)
+{
+    auto model = this->m_list_view->model();
+
+    auto model_index = model->index(index, 0);
+    if (model->is_valid(model_index))
+        this->m_list_view->selection().set(model_index);
+}
+
 void ComboBox::select_all()
 {
     m_editor->select_all();

+ 2 - 0
Libraries/LibGUI/ComboBox.h

@@ -46,6 +46,8 @@ public:
     const Model* model() const;
     void set_model(NonnullRefPtr<Model>);
 
+    void set_selected_index(size_t index);
+
     bool only_allow_values_from_model() const { return m_only_allow_values_from_model; }
     void set_only_allow_values_from_model(bool);