From d055a1104d66ab643d84c3f9945a0f75b74cd6c2 Mon Sep 17 00:00:00 2001 From: eidheim Date: Tue, 27 Oct 2015 09:02:38 +0100 Subject: [PATCH] Moved Ubuntu check to CMakeLists.txt. --- src/CMakeLists.txt | 11 +++++++++++ src/menu.cc | 44 ++++++++++++++++---------------------------- 2 files changed, 27 insertions(+), 28 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a79cfe7..c2e348c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,6 +10,17 @@ if(APPLE) set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig") endif() +if(UNIX) #Checking if compiling on Ubuntu that has a buggy menu system + find_program(LSB_RELEASE_BIN lsb_release) + if(LSB_RELEASE_BIN) + execute_process(COMMAND ${LSB_RELEASE_BIN} -is + OUTPUT_VARIABLE DISTRIBUTION OUTPUT_STRIP_TRAILING_WHITESPACE) + if(DISTRIBUTION STREQUAL Ubuntu) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUBUNTU_BUGGED_MENU") + endif() + endif() +endif() + INCLUDE(FindPkgConfig) find_package(LibClang REQUIRED) diff --git a/src/menu.cc b/src/menu.cc index 673cce3..be9c1fb 100644 --- a/src/menu.cc +++ b/src/menu.cc @@ -10,39 +10,27 @@ Menu::Menu() { //TODO: if Ubuntu ever gets fixed, move to constructor, also cleanup the rest of the Ubuntu specific code void Menu::init() { - bool ubuntu_bugged_menu_system=false; //TODO: move to CMakeLists.txt and set -DUBUNTU_BUGGED_MENU -#ifdef __linux - if(boost::filesystem::exists("/usr/bin/lsb_release")) { - std::stringstream stdin_stream, stdout_stream; - Singleton::terminal()->execute(stdin_stream, stdout_stream, "lsb_release -is"); - if(stdout_stream.str()=="Ubuntu\n") - ubuntu_bugged_menu_system=true; - } -#else - ubuntu_bugged_menu_system=false; -#endif - auto accels=Singleton::Config::menu()->keys; for(auto &accel: accels) { - if(ubuntu_bugged_menu_system) { - size_t pos=0; - std::string second=accel.second; - while((pos=second.find('<', pos))!=std::string::npos) { - second.replace(pos, 1, "<"); - pos+=4; - } - pos=0; - while((pos=second.find('>', pos))!=std::string::npos) { - second.replace(pos, 1, ">"); - pos+=4; - } - if(second.size()>0) - accel.second=""+second+""; - else - accel.second=""; +#ifdef UBUNTU_BUGGED_MENU + size_t pos=0; + std::string second=accel.second; + while((pos=second.find('<', pos))!=std::string::npos) { + second.replace(pos, 1, "<"); + pos+=4; } + pos=0; + while((pos=second.find('>', pos))!=std::string::npos) { + second.replace(pos, 1, ">"); + pos+=4; + } + if(second.size()>0) + accel.second=""+second+""; else accel.second=""; +#else + accel.second=""; +#endif } ui_xml =