From db068cd68ce00f494b37740e34214374e965406d Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 1 May 2017 17:45:16 +0000 Subject: [PATCH] Tracker: Always enable the Open button for B_DIRECTORY_NODE. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Always enable the default button in Open File Panel if the node flavors include B_DIRECTORY_NODE. Fixes #13463. Signed-off-by: Axel Dörfler --- src/kits/tracker/FilePanelPriv.cpp | 19 +++++++++++++++---- src/kits/tracker/FilePanelPriv.h | 1 + 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/kits/tracker/FilePanelPriv.cpp b/src/kits/tracker/FilePanelPriv.cpp index 7a367e3ec0..59cc80def4 100644 --- a/src/kits/tracker/FilePanelPriv.cpp +++ b/src/kits/tracker/FilePanelPriv.cpp @@ -552,6 +552,13 @@ TFilePanel::SetClientObject(BFilePanel* panel) } +bool +TFilePanel::IsOpenButtonAlwaysEnabled() const +{ + return !fIsSavePanel && (fNodeFlavors & B_DIRECTORY_NODE) != 0; +} + + void TFilePanel::AdjustButton() { @@ -613,7 +620,7 @@ TFilePanel::AdjustButton() } button->SetLabel(buttonText.String()); - button->SetEnabled(enabled); + button->SetEnabled(IsOpenButtonAlwaysEnabled() || enabled); } @@ -799,7 +806,7 @@ TFilePanel::Init(const BMessage*) B_FOLLOW_RIGHT + B_FOLLOW_BOTTOM); fBackView->AddChild(cancel_button); - if (!fIsSavePanel) + if (!fIsSavePanel && (fNodeFlavors & B_DIRECTORY_NODE) == 0) default_button->SetEnabled(false); default_button->MakeDefault(true); @@ -1643,9 +1650,9 @@ TFilePanel::HandleOpenButton() } } - // don't do anything unless there are items selected - // message->fMessage->message from here to end if (selection->CountItems()) { + // there are items selected + // message->fMessage->message from here to end BMessage message(*fMessage); // go through selection and add appropriate items for (int32 index = 0; index < selection->CountItems(); index++) { @@ -1660,6 +1667,10 @@ TFilePanel::HandleOpenButton() } } + OpenSelectionCommon(&message); + } else if (IsOpenButtonAlwaysEnabled()) { + BMessage message(*fMessage); + message.AddRef("refs", TargetModel()->EntryRef()); OpenSelectionCommon(&message); } } diff --git a/src/kits/tracker/FilePanelPriv.h b/src/kits/tracker/FilePanelPriv.h index 22acfd7a08..c45cd9afa4 100644 --- a/src/kits/tracker/FilePanelPriv.h +++ b/src/kits/tracker/FilePanelPriv.h @@ -137,6 +137,7 @@ private: bool SelectChildInParent(const entry_ref* parent, const node_ref* child); void OpenSelectionCommon(BMessage*); + bool IsOpenButtonAlwaysEnabled() const; bool fIsSavePanel; uint32 fNodeFlavors;