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 =