View Issue Details

IDProjectCategoryView StatusLast Update
0001408OpenMPTUser Interfacepublic2022-02-18 23:12
ReporterSaga Musix Assigned To 
PrioritynormalSeverityfeatureReproducibilityN/A
Status newResolutionopen 
Target VersionOpenMPT 1.31 / libopenmpt 0.7 (goals) 
Summary0001408: Migrate MessageBoxes to Vista TaskDialog
Description

It's well known that Yes/No/Cancel style dialogs are bad UX, as action buttons should make it clear which action they are actually going to carry out. As OpenMPT no longer supports Windows XP, it would be considerably easier to migrate existing MessageBoxes (currently abstraced through the Reporting namespace) to TaskDialog windows with more describe buttons than "Yes" and "No". Wine 1.8 supports TaskDialogs, but we should probably verify to what extent, as the implementation is definitely much smaller than in later versions.

TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Activities

Saga Musix

Saga Musix

2021-01-16 15:17

administrator   ~0004612

MFC has a wrapper, CTaskDialog.

Saga Musix

Saga Musix

2021-01-16 15:56

administrator   ~0004613

Last edited: 2021-01-16 15:58

This is the first meaningful TaskDialog implementation in Wine that supports more than just plain old Yes/No/Cancel buttons:

https://github.com/wine-mirror/wine/commit/995b6900a7002b716654edbe28ab2ba992433c4c#diff-9e4518b138da0b92fbc6f7a8fd89c981c445f646c212e05571dab2d191fbf451

This would raise the required Wine version to at least 2.5 (2.11 for custom buttons). We appear to have no Wine 2.x users according to update statistics, but a handful of people are still on 1.8.

manx

manx

2022-02-16 17:36

administrator   ~0005097

Requiring Wine 3.0 should be trivial by now, however, we still do have Windows XP builds.

We could still use Vista dialogs and fallback to even worse UX for Windows XP: "click Yes for $ACTION, click No for $OTHERACTION".

Saga Musix

Saga Musix

2022-02-16 17:57

administrator   ~0005098

For those messages currently supported by the Reporting namespace, that would work, yes (and if the prompt is worded properly, the same prompt can be used for both dialogs without any additions). However, this wouldn't work for other dialogs - I particularly wanted to replace the MsgBoxHidable implementation. But since this only affects XP, I guess we could simply assume that the user was going to hide the message box (which is the default action anyway) for a fallback.

manx

manx

2022-02-16 18:06

administrator   ~0005099

That would be OK, I think. RETRO builds can have reduced functionality.

Saga Musix

Saga Musix

2022-02-18 23:12

administrator   ~0005103

Technically only Reporting::Confirm and Reporting::RetryCancel need to be ported. I suppose the API could pretty much stay the same, with the only difference that labels for the different actions would have to be provided as additional arguments to those functions. This would make it very easy to keep the dialogs usable as messageboxes as well.

Issue History

Date Modified Username Field Change
2021-01-16 15:16 Saga Musix New Issue
2021-01-16 15:17 Saga Musix Note Added: 0004612
2021-01-16 15:56 Saga Musix Note Added: 0004613
2021-01-16 15:58 Saga Musix Note Edited: 0004613
2021-01-20 09:34 manx Target Version => OpenMPT 1.31 / libopenmpt 0.7 (goals)
2022-02-16 17:36 manx Note Added: 0005097
2022-02-16 17:57 Saga Musix Note Added: 0005098
2022-02-16 18:06 manx Note Added: 0005099
2022-02-18 23:12 Saga Musix Note Added: 0005103