From 786ffe9182d1ab3346875248e58feca3223a649e Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sun, 28 Apr 2013 23:25:08 +0200 Subject: [PATCH] clear filters when empty string is passed to applyFilter boost::regex doesn't like empty strings in literal mode and throws exceptions. --- src/browser.cpp | 6 ++++++ src/media_library.cpp | 19 +++++++++++++++++++ src/playlist.cpp | 6 ++++++ src/playlist_editor.cpp | 14 ++++++++++++++ src/search_engine.cpp | 6 ++++++ src/tag_editor.cpp | 14 ++++++++++++++ 6 files changed, 65 insertions(+) diff --git a/src/browser.cpp b/src/browser.cpp index 1d3b21c3..d9406774 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -251,6 +251,12 @@ std::string Browser::currentFilter() void Browser::applyFilter(const std::string &filter) { + if (filter.empty()) + { + w.clearFilter(); + w.clearFilterResults(); + return; + } try { w.showAll(); diff --git a/src/media_library.cpp b/src/media_library.cpp index f7f5998f..fe986be7 100644 --- a/src/media_library.cpp +++ b/src/media_library.cpp @@ -559,6 +559,25 @@ std::string MediaLibrary::currentFilter() void MediaLibrary::applyFilter(const std::string &filter) { + if (filter.empty()) + { + if (isActiveWindow(Tags)) + { + Tags.clearFilter(); + Tags.clearFilterResults(); + } + else if (isActiveWindow(Albums)) + { + Albums.clearFilter(); + Albums.clearFilterResults(); + } + else if (isActiveWindow(Songs)) + { + Songs.clearFilter(); + Songs.clearFilterResults(); + } + return; + } try { if (isActiveWindow(Tags)) diff --git a/src/playlist.cpp b/src/playlist.cpp index 3abbf9e1..1ed35236 100644 --- a/src/playlist.cpp +++ b/src/playlist.cpp @@ -142,6 +142,12 @@ std::string Playlist::currentFilter() void Playlist::applyFilter(const std::string &filter) { + if (filter.empty()) + { + w.clearFilter(); + w.clearFilterResults(); + return; + } try { w.showAll(); diff --git a/src/playlist_editor.cpp b/src/playlist_editor.cpp index 66ed4cf4..1ce14db2 100644 --- a/src/playlist_editor.cpp +++ b/src/playlist_editor.cpp @@ -335,6 +335,20 @@ std::string PlaylistEditor::currentFilter() void PlaylistEditor::applyFilter(const std::string &filter) { + if (filter.empty()) + { + if (isActiveWindow(Playlists)) + { + Playlists.clearFilter(); + Playlists.clearFilterResults(); + } + else if (isActiveWindow(Content)) + { + Content.clearFilter(); + Content.clearFilterResults(); + } + return; + } try { if (isActiveWindow(Playlists)) diff --git a/src/search_engine.cpp b/src/search_engine.cpp index 76a486ae..9e795a3e 100644 --- a/src/search_engine.cpp +++ b/src/search_engine.cpp @@ -264,6 +264,12 @@ std::string SearchEngine::currentFilter() void SearchEngine::applyFilter(const std::string &filter) { + if (filter.empty()) + { + w.clearFilter(); + w.clearFilterResults(); + return; + } try { w.showAll(); diff --git a/src/tag_editor.cpp b/src/tag_editor.cpp index 7cb7f9df..2c6979ab 100644 --- a/src/tag_editor.cpp +++ b/src/tag_editor.cpp @@ -740,6 +740,20 @@ std::string TagEditor::currentFilter() void TagEditor::applyFilter(const std::string &filter) { + if (filter.empty()) + { + if (w == Dirs) + { + Dirs->clearFilter(); + Dirs->clearFilterResults(); + } + else if (w == Tags) + { + Tags->clearFilter(); + Tags->clearFilterResults(); + } + return; + } try { if (w == Dirs)