From 0033bc3431e8d3b7a67dc62a1f87d31a1130d65a Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sun, 12 Mar 2017 15:00:33 +0100 Subject: Disable autocenter mode while searching and filtering --- NEWS | 1 + src/Makefile.am | 1 + src/actions.cpp | 3 +++ src/utility/scoped_value.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 src/utility/scoped_value.h diff --git a/NEWS b/NEWS index 582b2576..92ed452f 100644 --- a/NEWS +++ b/NEWS @@ -26,6 +26,7 @@ ncmpcpp-0.8 (????-??-??) * Added support for fetching lyrics from jah-lyrics.com and plyrics.com. * Seek immediately after invoking appropriate action once. * Added support for locating current song in playlist editor. +* Disable autocenter mode while searching and filtering. ncmpcpp-0.7.7 (2016-10-31) * Fixed compilation on 32bit platforms. diff --git a/src/Makefile.am b/src/Makefile.am index de1ed213..cb0bf7bf 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -90,6 +90,7 @@ noinst_HEADERS = \ utility/html.h \ utility/option_parser.h \ utility/readline.h \ + utility/scoped_value.h \ utility/shared_resource.h \ utility/string.h \ utility/type_conversions.h \ diff --git a/src/actions.cpp b/src/actions.cpp index dcea819f..250c4567 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -39,6 +39,7 @@ #include "statusbar.h" #include "utility/comparators.h" #include "utility/conversion.h" +#include "utility/scoped_value.h" #include "curses/menu_impl.h" #include "bindings.h" @@ -1982,6 +1983,7 @@ void ApplyFilter::run() try { + ScopedValue disabled_autocenter_mode(Config.autocenter_mode, false); Statusbar::ScopedLock slock; NC::Window::ScopedPromptHook helper( *wFooter, @@ -3022,6 +3024,7 @@ void findItem(const SearchDirection direction) std::string constraint = w->searchConstraint(); try { + ScopedValue disabled_autocenter_mode(Config.autocenter_mode, false); Statusbar::ScopedLock slock; NC::Window::ScopedPromptHook prompt_hook( *wFooter, diff --git a/src/utility/scoped_value.h b/src/utility/scoped_value.h new file mode 100644 index 00000000..4b1fa732 --- /dev/null +++ b/src/utility/scoped_value.h @@ -0,0 +1,44 @@ +/*************************************************************************** + * Copyright (C) 2008-2016 by Andrzej Rybczak * + * electricityispower@gmail.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef NCMPCPP_UTILITY_SCOPED_VALUE_H +#define NCMPCPP_UTILITY_SCOPED_VALUE_H + +template +struct ScopedValue +{ + ScopedValue(ValueT &ref, ValueT &&new_value) + : m_ref(ref) + { + m_value = ref; + m_ref = std::forward(new_value); + } + + ~ScopedValue() + { + m_ref = std::move(m_value); + } + +private: + ValueT &m_ref; + ValueT m_value; +}; + +#endif // NCMPCPP_UTILITY_SCOPED_VALUE_H -- cgit v1.2.3