A couple small bug fixes in the directory browser.

This commit is contained in:
casey langen 2018-02-12 08:10:38 -08:00
parent 80a10ffe5f
commit e5d82dc868
2 changed files with 22 additions and 17 deletions

View File

@ -114,7 +114,7 @@ void DirectoryLayout::SetDirectory(const std::string& directory) {
this->rootDirectory = directory; this->rootDirectory = directory;
this->adapter->SetRootDirectory(directory); this->adapter->SetRootDirectory(directory);
this->directoryList->SetSelectedIndex(0); this->directoryList->SetSelectedIndex(0);
this->Refresh(); this->Refresh(true);
} }
void DirectoryLayout::OnVisibilityChanged(bool visible) { void DirectoryLayout::OnVisibilityChanged(bool visible) {
@ -126,25 +126,29 @@ void DirectoryLayout::OnVisibilityChanged(bool visible) {
void DirectoryLayout::RequeryTrackList(ListWindow *view) { void DirectoryLayout::RequeryTrackList(ListWindow *view) {
size_t selected = this->directoryList->GetSelectedIndex(); size_t selected = this->directoryList->GetSelectedIndex();
if (selected != ListWindow::NO_SELECTION) { std::string fullPath = "";
if (selected == 0 && this->adapter->GetLeafAt(0) == "..") {
return;
}
std::string fullPath = this->adapter->GetFullPathAt(selected); if (selected == 0 && this->adapter->GetLeafAt(0) == "..") {
return;
}
else if (selected == ListWindow::NO_SELECTION) {
fullPath = this->rootDirectory; /* no sub directories */
}
else {
fullPath = this->adapter->GetFullPathAt(selected);
}
if (fullPath.size()) { if (fullPath.size()) {
fullPath = NormalizeDir(fullPath); fullPath = NormalizeDir(fullPath);
auto query = std::shared_ptr<TrackListQueryBase>( auto query = std::shared_ptr<TrackListQueryBase>(
new DirectoryTrackListQuery(this->library, fullPath)); new DirectoryTrackListQuery(this->library, fullPath));
auto hash = query->GetQueryHash(); auto hash = query->GetQueryHash();
if (hash != this->queryHash) { if (hash != this->queryHash) {
this->queryHash = hash; this->queryHash = hash;
this->trackList->Requery(query); this->trackList->Requery(query);
}
} }
} }
} }

View File

@ -35,7 +35,7 @@
#include "stdafx.h" #include "stdafx.h"
#include <core/support/Common.h> #include <core/support/Common.h>
#include <cursespp/Text.h>
#include <cursespp/ScrollAdapterBase.h> #include <cursespp/ScrollAdapterBase.h>
#include <cursespp/SingleLineEntry.h> #include <cursespp/SingleLineEntry.h>
@ -241,5 +241,6 @@ IScrollAdapter::EntryPtr DirectoryAdapter::GetEntry(cursespp::ScrollableWindow*
--index; --index;
} }
return IScrollAdapter::EntryPtr(new SingleLineEntry(this->subdirs[index])); auto text = text::Ellipsize(this->subdirs[index], this->GetWidth());
return IScrollAdapter::EntryPtr(new SingleLineEntry(text));
} }