diff options
author | est31 <est31@users.noreply.github.com> | 2016-08-20 21:26:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-20 21:26:44 +0200 |
commit | f092dac9793b80c29a669b0d676ee3e4f55f682e (patch) | |
tree | 75bb3a5c4f9d82fc6c18f4481f3b8a662ea481c3 | |
parent | 6590140260d0338ab5a0fd2bbcd4c72f07dd963d (diff) | |
download | minetest-f092dac9793b80c29a669b0d676ee3e4f55f682e.tar.gz minetest-f092dac9793b80c29a669b0d676ee3e4f55f682e.tar.bz2 minetest-f092dac9793b80c29a669b0d676ee3e4f55f682e.zip |
Also support X11 icon for minetest copies installed via make install (#4407)
Fixes #4323.
-rw-r--r-- | CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/client/clientlauncher.cpp | 3 | ||||
-rw-r--r-- | src/cmake_config.h.in | 1 | ||||
-rw-r--r-- | src/porting.cpp | 19 | ||||
-rw-r--r-- | src/porting.h | 4 |
5 files changed, 26 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 592feb997..fbf6bb7fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -175,6 +175,9 @@ if(UNIX AND NOT APPLE) install(FILES "misc/minetest.desktop" DESTINATION "${XDG_APPS_DIR}") install(FILES "misc/minetest.appdata.xml" DESTINATION "${APPDATADIR}") install(FILES "misc/minetest.svg" DESTINATION "${ICONDIR}/hicolor/scalable/apps") + install(FILES "misc/minetest-xorg-icon-128.png" + DESTINATION "${ICONDIR}/hicolor/128x128/apps" + RENAME "minetest.png") endif() if(APPLE) diff --git a/src/client/clientlauncher.cpp b/src/client/clientlauncher.cpp index aa3c2d548..6145e3dde 100644 --- a/src/client/clientlauncher.cpp +++ b/src/client/clientlauncher.cpp @@ -114,8 +114,7 @@ bool ClientLauncher::run(GameParams &game_params, const Settings &cmd_args) porting::setXorgClassHint(video_driver->getExposedVideoData(), PROJECT_NAME_C); - porting::setXorgWindowIcon(device, - porting::path_share + "/misc/minetest-xorg-icon-128.png"); + porting::setXorgWindowIcon(device); /* This changes the minimum allowed number of vertices in a VBO. diff --git a/src/cmake_config.h.in b/src/cmake_config.h.in index 50f34a0b8..4b731020a 100644 --- a/src/cmake_config.h.in +++ b/src/cmake_config.h.in @@ -14,6 +14,7 @@ #define STATIC_SHAREDIR "@SHAREDIR@" #define STATIC_LOCALEDIR "@LOCALEDIR@" #define BUILD_TYPE "@CMAKE_BUILD_TYPE@" +#define ICON_DIR "@ICONDIR@" #cmakedefine01 RUN_IN_PLACE #cmakedefine01 USE_GETTEXT #cmakedefine01 USE_CURL diff --git a/src/porting.cpp b/src/porting.cpp index acd047232..ae9114ac8 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -611,7 +611,24 @@ void setXorgClassHint(const video::SExposedVideoData &video_data, #endif } -bool setXorgWindowIcon(IrrlichtDevice *device, +bool setXorgWindowIcon(IrrlichtDevice *device) +{ +#if RUN_IN_PLACE + return setXorgWindowIconFromPath(device, + path_share + "/misc/" PROJECT_NAME "-xorg-icon-128.png"); +#else + // We have semi-support for reading in-place data if we are + // compiled with RUN_IN_PLACE. Don't break with this and + // also try the path_share location. + return + setXorgWindowIconFromPath(device, + ICON_DIR "/hicolor/128x128/apps/" PROJECT_NAME ".png") || + setXorgWindowIconFromPath(device, + path_share + "/misc/" PROJECT_NAME "-xorg-icon-128.png"); +#endif +} + +bool setXorgWindowIconFromPath(IrrlichtDevice *device, const std::string &icon_file) { #ifdef XORG_USED diff --git a/src/porting.h b/src/porting.h index 40f6b4dc3..f5c7efcb2 100644 --- a/src/porting.h +++ b/src/porting.h @@ -367,7 +367,9 @@ inline const char *getPlatformName() void setXorgClassHint(const video::SExposedVideoData &video_data, const std::string &name); -bool setXorgWindowIcon(IrrlichtDevice *device, +bool setXorgWindowIcon(IrrlichtDevice *device); + +bool setXorgWindowIconFromPath(IrrlichtDevice *device, const std::string &icon_file); // This only needs to be called at the start of execution, since all future |