mirror of
https://github.com/wolfpld/tracy.git
synced 2026-10-23 09:10:51 +00:00
Show the NFD error message in the file selector failure popup.
When the native dialog failed, the popup said "File selector cannot be displayed. Check nfd library implementation for details." but never showed any details: NFD_GetError() was never read, so the actual failure reason (e.g. the xdg-desktop-portal lacking a FileChooser implementation on the session) was invisible and the user was stuck without a way to open or save traces. Capture NFD_GetError() into a static string when NFD_OpenDialogU8_With()/NFD_SaveDialogU8_With() return NFD_ERROR and display it in the popup. The copy is required: the returned pointer references NFD-internal storage (the D-Bus error message or a static buffer) that is overwritten by the next NFD call or cleared on shutdown. In TRACY_NO_FILESELECTOR builds no NFD exists, so the previous fallback line is kept there. The error is shown as a single line (TextUnformatted) rather than wrapped: in an AlwaysAutoResize window the wrap width is derived from the previous frame's window size, which feeds back into the auto-size and oscillates, converging to a narrow multi-line column for a ~110 character D-Bus message.
This commit is contained in:
@@ -1280,7 +1280,15 @@ static void DrawContents()
|
||||
if( ImGui::BeginPopupModal( "File selector is not available", nullptr, ImGuiWindowFlags_AlwaysAutoResize ) )
|
||||
{
|
||||
ImGui::TextUnformatted( "File selector cannot be displayed." );
|
||||
ImGui::TextUnformatted( "Check nfd library implementation for details." );
|
||||
if( const auto err = tracy::Fileselector::GetError() )
|
||||
{
|
||||
ImGui::Separator();
|
||||
ImGui::TextUnformatted( err );
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui::TextUnformatted( "Check nfd library implementation for details." );
|
||||
}
|
||||
ImGui::Separator();
|
||||
if( ImGui::Button( "Ok" ) ) ImGui::CloseCurrentPopup();
|
||||
ImGui::EndPopup();
|
||||
|
||||
Reference in New Issue
Block a user