--- a/ui/winui/window.cpp Sun Feb 11 13:59:02 2024 +0100 +++ b/ui/winui/window.cpp Sun Feb 11 15:59:56 2024 +0100 @@ -220,16 +220,41 @@ dialog.Title(winrt::box_value(str)); free(str); } - if (args.content) { - wchar_t *str = str2wstr(args.content, nullptr); - dialog.Content(winrt::box_value(str)); - free(str); + + TextBox textfield{ nullptr }; + if (args.input) { + StackPanel panel = StackPanel(); + panel.Orientation(Orientation::Vertical); + if (args.content) { + wchar_t *str = str2wstr(args.content, nullptr); + TextBlock label = TextBlock(); + label.Text(str); + panel.Children().Append(label); + free(str); + } + + textfield = TextBox(); + Thickness margin = { 0, 5, 0, 0 }; + textfield.Margin(margin); + panel.Margin(margin); + + panel.Children().Append(textfield); + + dialog.Content(panel); + + } else { + if (args.content) { + wchar_t *str = str2wstr(args.content, nullptr); + dialog.Content(winrt::box_value(str)); + free(str); + } } if (args.button1_label) { wchar_t *str = str2wstr(args.button1_label, nullptr); dialog.PrimaryButtonText(winrt::hstring(str)); free(str); + dialog.DefaultButton(ContentDialogButton::Primary); } if (args.button2_label) { wchar_t *str = str2wstr(args.button2_label, nullptr); @@ -257,7 +282,17 @@ evt.intval = 2; } + if (args.input) { + std::wstring wstr(textfield.Text()); + char *text = wchar2utf8(wstr.c_str(), wstr.length()); + evt.eventdata = text; + } + args.result(&evt, args.resultdata); + + if (evt.eventdata) { + free(evt.eventdata); + } } }