From db7fc944bda45a7db4b13670c9f743e4144e448d Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Thu, 4 Dec 2014 09:28:05 +0100 Subject: [PATCH] FileTypes: disallow directories only where it makes sense. Better fix for #8805. --- src/preferences/filetypes/FileTypeWindow.cpp | 2 ++ src/preferences/filetypes/FileTypes.cpp | 6 ++++++ src/preferences/filetypes/FileTypesWindow.cpp | 1 + 3 files changed, 9 insertions(+) diff --git a/src/preferences/filetypes/FileTypeWindow.cpp b/src/preferences/filetypes/FileTypeWindow.cpp index 433c073415..993d8a5366 100644 --- a/src/preferences/filetypes/FileTypeWindow.cpp +++ b/src/preferences/filetypes/FileTypeWindow.cpp @@ -360,6 +360,7 @@ FileTypeWindow::MessageReceived(BMessage* message) panel.AddString("title", B_TRANSLATE("Select same type as")); panel.AddInt32("message", kMsgSameTypeAsOpened); panel.AddMessenger("target", this); + panel.AddBool("allowDirs", true); be_app_messenger.SendMessage(&panel); break; @@ -404,6 +405,7 @@ FileTypeWindow::MessageReceived(BMessage* message) B_TRANSLATE("Select same preferred application as")); panel.AddInt32("message", kMsgSamePreferredAppAsOpened); panel.AddMessenger("target", this); + panel.AddBool("allowDirs", true); be_app_messenger.SendMessage(&panel); break; diff --git a/src/preferences/filetypes/FileTypes.cpp b/src/preferences/filetypes/FileTypes.cpp index 71a89d2a44..e36a25773e 100644 --- a/src/preferences/filetypes/FileTypes.cpp +++ b/src/preferences/filetypes/FileTypes.cpp @@ -385,6 +385,12 @@ FileTypes::MessageReceived(BMessage* message) title.Append(subTitle); } + uint32 flavors = B_FILE_NODE; + if (message->FindBool("allowDirs")) + flavors |= B_DIRECTORY_NODE; + fFilePanel->SetNodeFlavors(flavors); + + fFilePanel->SetMessage(new BMessage(what)); fFilePanel->Window()->SetTitle(title.String()); fFilePanel->SetTarget(target); diff --git a/src/preferences/filetypes/FileTypesWindow.cpp b/src/preferences/filetypes/FileTypesWindow.cpp index a429f3c327..310adf8c1c 100644 --- a/src/preferences/filetypes/FileTypesWindow.cpp +++ b/src/preferences/filetypes/FileTypesWindow.cpp @@ -826,6 +826,7 @@ FileTypesWindow::MessageReceived(BMessage* message) B_TRANSLATE("Select same preferred application as")); panel.AddInt32("message", kMsgSamePreferredAppAsOpened); panel.AddMessenger("target", this); + panel.AddBool("allowDirs", true); be_app_messenger.SendMessage(&panel); break;