Explorar o código

GComboBox: Include the selected index with the on_change notification

This will be useful for clients that need to fetch additional data from
the model on selection change.
Andreas Kling %!s(int64=6) %!d(string=hai) anos
pai
achega
6311a617be

+ 1 - 1
DevTools/VisualBuilder/VBPropertiesWindow.cpp

@@ -37,7 +37,7 @@ public:
         combo->set_only_allow_values_from_model(true);
         combo->set_model(adopt(*new BoolValuesModel));
         combo->on_return_pressed = [this] { commit(); };
-        combo->on_change = [this](auto&) { commit(); };
+        combo->on_change = [this](auto&, auto&) { commit(); };
         return combo;
     }
     virtual GVariant value() const override { return static_cast<const GComboBox*>(widget())->text() == "true"; }

+ 3 - 3
Libraries/LibGUI/GComboBox.cpp

@@ -12,7 +12,7 @@ GComboBox::GComboBox(GWidget* parent)
     m_editor = new GTextEditor(GTextEditor::Type::SingleLine, this);
     m_editor->on_change = [this] {
         if (on_change)
-            on_change(m_editor->text());
+            on_change(m_editor->text(), model()->selected_index());
     };
     m_editor->on_return_pressed = [this] {
         if (on_return_pressed)
@@ -43,9 +43,9 @@ GComboBox::GComboBox(GWidget* parent)
         m_editor->set_text(new_value);
         m_editor->select_all();
         close();
-        deferred_invoke([this](auto&) {
+        deferred_invoke([this, index](auto&) {
             if (on_change)
-                on_change(m_editor->text());
+                on_change(m_editor->text(), index);
         });
     };
 }

+ 1 - 1
Libraries/LibGUI/GComboBox.h

@@ -29,7 +29,7 @@ public:
     int model_column() const { return m_list_view->model_column(); }
     void set_model_column(int column) { m_list_view->set_model_column(column); }
 
-    Function<void(const String&)> on_change;
+    Function<void(const String&, const GModelIndex&)> on_change;
     Function<void()> on_return_pressed;
 
 protected: