From ee56c33deb4743fdefc8772e03a9d1ca8ad252d9 Mon Sep 17 00:00:00 2001 From: Louis Moureaux Date: Tue, 26 Dec 2023 02:42:33 +0100 Subject: [PATCH 1/3] Load window icons from a custom icon theme The window icons used to be set by the tileset. This allowed user-made tilesets to override our branding and required loading tilesets before the first window was shown. This commit moves the app icons away from tilesets into a custom icon theme (this should eventually be merged into the hicolor theme). Closes #984. Closes #2019. --- client/gui_main.cpp | 8 +++- client/tileset/tilespec.cpp | 18 -------- client/tileset/tilespec.h | 1 - cmake/FreecivInstall.cmake | 42 ++++++++----------- data/amplio2.tilespec | 3 +- data/cimpletoon.tilespec | 3 +- data/hex2t.tilespec | 1 - data/hexemplio.tilespec | 1 - data/icons/index.theme | 20 +++++++++ data/isophex.tilespec | 1 - data/isotrident.tilespec | 1 - data/misc/icons.spec | 15 +------ data/toonhex.tilespec | 1 - data/trident.tilespec | 1 - dist/net.longturn.freeciv21.desktop.in | 2 +- .../net.longturn.freeciv21.modpack.desktop.in | 2 +- .../net.longturn.freeciv21.ruledit.desktop.in | 2 +- dist/net.longturn.freeciv21.server.desktop.in | 2 +- tools/fcmp/mpgui_qt.cpp | 7 ++++ tools/ruledit/ruledit.cpp | 7 ++++ 20 files changed, 66 insertions(+), 72 deletions(-) create mode 100644 data/icons/index.theme diff --git a/client/gui_main.cpp b/client/gui_main.cpp index 3b15b7b9db..a090c446b7 100644 --- a/client/gui_main.cpp +++ b/client/gui_main.cpp @@ -69,10 +69,16 @@ int main(int argc, char **argv) { return client_main(argc, argv); } */ void ui_main() { + // Load window icons + QIcon::setThemeSearchPaths(get_data_dirs() + QIcon::themeSearchPaths()); + QIcon::setFallbackThemeName(QIcon::themeName()); + QIcon::setThemeName(QStringLiteral("icons")); + + qApp->setWindowIcon(QIcon::fromTheme(QStringLiteral("freeciv21-client"))); + if (true) { tileset_init(tileset); tileset_load_tiles(tileset); - qApp->setWindowIcon(QIcon(*get_icon_sprite(tileset))); if (!load_theme(gui_options->gui_qt_default_theme_name)) { gui_clear_theme(); } diff --git a/client/tileset/tilespec.cpp b/client/tileset/tilespec.cpp index c9f8d5bbbe..7e0d4351db 100644 --- a/client/tileset/tilespec.cpp +++ b/client/tileset/tilespec.cpp @@ -154,8 +154,6 @@ struct named_sprites { *treaty_thumb[2], // 0=disagree, 1=agree *arrow[ARROW_LAST], // 0=right arrow, 1=plus, 2=minus - *icon, - *events[E_COUNT], // The panel sprites for showing tax % allocations. @@ -2556,8 +2554,6 @@ static void tileset_lookup_sprite_tags(struct tileset *t) } } - SET_SPRITE(icon, QStringLiteral("icon.freeciv")); - for (i = 0; i < E_COUNT; i++) { const char *tag = get_event_tag(static_cast(i)); @@ -5294,20 +5290,6 @@ const QPixmap *get_cursor_sprite(const struct tileset *t, return t->sprites.cursor[cursor].frame[frame]; } -/** - Return a sprite for the Freeciv21 icon. Icons are used by the operating - system/window manager. Usually Freeciv21 has to tell the OS what icon to - use. - - Note that this function will return nullptr before the sprites are loaded. - The GUI code must be sure to call tileset_load_tiles before setting the - top-level icon. - */ -const QPixmap *get_icon_sprite(const struct tileset *t) -{ - return t->sprites.icon; -} - /** Returns a sprite with the "user-attention" crosshair graphic. diff --git a/client/tileset/tilespec.h b/client/tileset/tilespec.h index 7429003d8f..55ee70e94d 100644 --- a/client/tileset/tilespec.h +++ b/client/tileset/tilespec.h @@ -256,7 +256,6 @@ const QPixmap *get_cursor_sprite(const struct tileset *t, int *hot_y, int frame); const struct citybar_sprites *get_citybar_sprites(const struct tileset *t); const struct editor_sprites *get_editor_sprites(const struct tileset *t); -const QPixmap *get_icon_sprite(const struct tileset *t); const QPixmap *get_attention_crosshair_sprite(const struct tileset *t); const QPixmap *get_indicator_sprite(const struct tileset *t, enum indicator_type indicator, diff --git a/cmake/FreecivInstall.cmake b/cmake/FreecivInstall.cmake index 8e0a7cb407..18ec3924f3 100644 --- a/cmake/FreecivInstall.cmake +++ b/cmake/FreecivInstall.cmake @@ -47,12 +47,6 @@ if(WIN32 OR MSYS OR MINGW) ${CMAKE_SOURCE_DIR}/data/icons/128x128/freeciv21-server.ico DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT freeciv21) - - install( - FILES - ${CMAKE_SOURCE_DIR}/data/icons/128x128/freeciv21-client.png - DESTINATION ${CMAKE_INSTALL_BINDIR}/data/misc - COMPONENT freeciv21) endif() # MSYS2 and MINGW specific installation @@ -169,6 +163,10 @@ if(UNIX AND NOT APPLE) message(STATUS "CMAKE_INSTALL_PREFIX changed from the default to /usr.") endif() + install(FILES ${CMAKE_SOURCE_DIR}/data/icons/index.theme + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21/icons + COMPONENT freeciv21) + # Install MetaInfo and Desktop files for the applications asked for at configure if(FREECIV_ENABLE_CLIENT) configure_file(${CMAKE_SOURCE_DIR}/dist/net.longturn.freeciv21.desktop.in @@ -189,12 +187,11 @@ if(UNIX AND NOT APPLE) DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo COMPONENT freeciv21 ) - install( - FILES - ${CMAKE_SOURCE_DIR}/data/icons/128x128/freeciv21-client.png - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21/misc - COMPONENT freeciv21 - ) + install(DIRECTORY ${CMAKE_SOURCE_DIR}/data/icons + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 + COMPONENT freeciv21 + FILES_MATCHING PATTERN "freeciv21-client.png") + if(FREECIV_ENABLE_MANPAGES) install( FILES @@ -224,12 +221,11 @@ if(UNIX AND NOT APPLE) DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo COMPONENT freeciv21 ) - install( - FILES - ${CMAKE_SOURCE_DIR}/data/icons/128x128/freeciv21-server.png - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21/misc - COMPONENT freeciv21 - ) + install(DIRECTORY ${CMAKE_SOURCE_DIR}/data/icons + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 + COMPONENT freeciv21 + FILES_MATCHING PATTERN "freeciv21-server.png") + if(FREECIV_ENABLE_MANPAGES) install( FILES @@ -262,12 +258,10 @@ if(UNIX AND NOT APPLE) DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo COMPONENT freeciv21 ) - install( - FILES - ${CMAKE_SOURCE_DIR}/data/icons/128x128/freeciv21-modpack.png - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21/misc - COMPONENT freeciv21 - ) + install(DIRECTORY ${CMAKE_SOURCE_DIR}/data/icons + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 + COMPONENT freeciv21 + FILES_MATCHING PATTERN "freeciv21-modpack.png") if(FREECIV_ENABLE_MANPAGES) install( diff --git a/data/amplio2.tilespec b/data/amplio2.tilespec index f7a3f06e54..f5c586c85a 100644 --- a/data/amplio2.tilespec +++ b/data/amplio2.tilespec @@ -166,8 +166,7 @@ files = "misc/overlays.spec", "misc/citybar.spec", "misc/shields-large.spec", - "misc/editor.spec", - "misc/icons.spec" + "misc/editor.spec" ; Include color definitions diff --git a/data/cimpletoon.tilespec b/data/cimpletoon.tilespec index 5a71fa2bb6..c2c6545dce 100644 --- a/data/cimpletoon.tilespec +++ b/data/cimpletoon.tilespec @@ -169,8 +169,7 @@ files = "misc/overlays.spec", "misc/citybar.spec", "misc/shields-large.spec", - "misc/editor.spec", - "misc/icons.spec" + "misc/editor.spec" ; Include color definitions diff --git a/data/hex2t.tilespec b/data/hex2t.tilespec index 1d2630d7d5..987a8d3307 100644 --- a/data/hex2t.tilespec +++ b/data/hex2t.tilespec @@ -158,7 +158,6 @@ files = "misc/space.spec", "misc/techs.spec", "misc/treaty.spec", - "misc/icons.spec", "misc/editor.spec", "amplio2/nuke.spec" diff --git a/data/hexemplio.tilespec b/data/hexemplio.tilespec index 5c5b63e100..15318b8f6f 100644 --- a/data/hexemplio.tilespec +++ b/data/hexemplio.tilespec @@ -153,7 +153,6 @@ files = "misc/space.spec", "misc/techs.spec", "misc/treaty.spec", - "misc/icons.spec", "misc/editor.spec", "misc/units.spec", "amplio2/nuke.spec", diff --git a/data/icons/index.theme b/data/icons/index.theme new file mode 100644 index 0000000000..8a581f767c --- /dev/null +++ b/data/icons/index.theme @@ -0,0 +1,20 @@ +[Icon Theme] +Name=Freeciv21 +Comment=Freeciv21 Icons + +Directories=16x16,32x32,48x48,64x64,128x128 + +[16x16] +Size=16 + +[32x32] +Size=32 + +[48x48] +Size=48 + +[64x64] +Size=64 + +[128x128] +Size=128 diff --git a/data/isophex.tilespec b/data/isophex.tilespec index 696c1f330a..a0a1b8161d 100644 --- a/data/isophex.tilespec +++ b/data/isophex.tilespec @@ -160,7 +160,6 @@ files = "misc/space.spec", "misc/techs.spec", "misc/treaty.spec", - "misc/icons.spec", "misc/editor.spec", "isotrident/nuke.spec", "isotrident/cities.spec", diff --git a/data/isotrident.tilespec b/data/isotrident.tilespec index 36e5c99478..3e8c8c0c54 100644 --- a/data/isotrident.tilespec +++ b/data/isotrident.tilespec @@ -158,7 +158,6 @@ files = "misc/space.spec", "misc/techs.spec", "misc/treaty.spec", - "misc/icons.spec", "misc/editor.spec", "isotrident/fog.spec", "isotrident/nuke.spec", diff --git a/data/misc/icons.spec b/data/misc/icons.spec index de8d68d416..dc0e3f3f19 100644 --- a/data/misc/icons.spec +++ b/data/misc/icons.spec @@ -1,19 +1,6 @@ - [spec] ; Format and options of this spec file: options = "+Freeciv-spec-Devel-2019-Jul-03" -[info] - -artists = " - James Blewitt, Hugo Flávio, Louis Moureaux (civicon) - yd (mpicon) -" - -[extra] -sprites = - { "tag", "file" - "icon.freeciv", "misc/freeciv21-client" - ; misc/mpicon.png is referenced directly from configure.ac - } +; This file is only present for backward compatibility. diff --git a/data/toonhex.tilespec b/data/toonhex.tilespec index d5458d9368..2ad1840456 100644 --- a/data/toonhex.tilespec +++ b/data/toonhex.tilespec @@ -155,7 +155,6 @@ files = "misc/space.spec", "misc/techs.spec", "misc/treaty.spec", - "misc/icons.spec", "misc/editor.spec", "cimpletoon/orient_units.spec", "amplio2/nuke.spec", diff --git a/data/trident.tilespec b/data/trident.tilespec index 574da3f25c..7a18342479 100644 --- a/data/trident.tilespec +++ b/data/trident.tilespec @@ -157,7 +157,6 @@ files = "misc/space.spec", "misc/techs.spec", "misc/treaty.spec", - "misc/icons.spec", "misc/editor.spec", "trident/fog.spec", "trident/cities.spec", diff --git a/dist/net.longturn.freeciv21.desktop.in b/dist/net.longturn.freeciv21.desktop.in index 3cb5fc9b68..560e0f8962 100644 --- a/dist/net.longturn.freeciv21.desktop.in +++ b/dist/net.longturn.freeciv21.desktop.in @@ -53,7 +53,7 @@ Comment[pt]=Jogo de estratégia por turnos inspirado na História da civilizaç Comment[ru]=Пошаговая стратегическая игра, вдохновлённая историей человеческой цивилизации Comment[sv]=Turordningsbaserat strategispel inspirerat av den mänskliga historien Exec=@CMAKE_INSTALL_FULL_BINDIR@/freeciv21-client %u -Icon=@CMAKE_INSTALL_FULL_DATAROOTDIR@/freeciv21/misc/freeciv21-client.png +Icon=@CMAKE_INSTALL_FULL_DATAROOTDIR@/freeciv21/icons/128x128/freeciv21-client.png StartupNotify=true MimeType=x-scheme-handler/fc21; X-KDE-Protocols=fc21; diff --git a/dist/net.longturn.freeciv21.modpack.desktop.in b/dist/net.longturn.freeciv21.modpack.desktop.in index f191898d8a..7e4c10fc1e 100644 --- a/dist/net.longturn.freeciv21.modpack.desktop.in +++ b/dist/net.longturn.freeciv21.modpack.desktop.in @@ -10,7 +10,7 @@ GenericName[ru]=Стратегическая игра Comment=Download and install add-ons for Freeciv21 Comment[ru]=Скачивайте и устанавливайте дополнения для Freeciv21 Exec=@CMAKE_INSTALL_FULL_BINDIR@/freeciv21-modpack-qt -Icon=@CMAKE_INSTALL_FULL_DATAROOTDIR@/freeciv21/misc/freeciv21-modpack.png +Icon=@CMAKE_INSTALL_FULL_DATAROOTDIR@/freeciv21/icons/128x128/freeciv21-modpack.png StartupNotify=true Terminal=false Type=Application diff --git a/dist/net.longturn.freeciv21.ruledit.desktop.in b/dist/net.longturn.freeciv21.ruledit.desktop.in index 3466e6fad4..586d0344c4 100644 --- a/dist/net.longturn.freeciv21.ruledit.desktop.in +++ b/dist/net.longturn.freeciv21.ruledit.desktop.in @@ -10,7 +10,7 @@ GenericName[ru]=Стратегическая игра Comment=Edit Freeciv21 game rules Comment[ru]=Меняйте любые правила Freeciv21 и создавайте новые Exec=@CMAKE_INSTALL_FULL_BINDIR@/freeciv21-ruledit -Icon=@CMAKE_INSTALL_FULL_DATAROOTDIR@/freeciv21/misc/freeciv21-client.png +Icon=@CMAKE_INSTALL_FULL_DATAROOTDIR@/freeciv21/icons/128x128/freeciv21-client.png StartupNotify=true Terminal=false Type=Application diff --git a/dist/net.longturn.freeciv21.server.desktop.in b/dist/net.longturn.freeciv21.server.desktop.in index 16847b0bc5..8fb3f9858f 100644 --- a/dist/net.longturn.freeciv21.server.desktop.in +++ b/dist/net.longturn.freeciv21.server.desktop.in @@ -22,7 +22,7 @@ Comment[pt]=Jogo de estratégia por turnos inspirado na História da civilizaç Comment[ru]=Пошаговая стратегическая игра, вдохновлённая историей человеческой цивилизации Comment[sv]=Turordningsbaserat strategispel inspirerat av den mänskliga historien Exec=@CMAKE_INSTALL_FULL_BINDIR@/freeciv21-server -Icon=@CMAKE_INSTALL_FULL_DATAROOTDIR@/freeciv21/misc/freeciv21-server.png +Icon=@CMAKE_INSTALL_FULL_DATAROOTDIR@/freeciv21/icons/128x128/freeciv21-server.png StartupNotify=true Terminal=true Type=Application diff --git a/tools/fcmp/mpgui_qt.cpp b/tools/fcmp/mpgui_qt.cpp index 60549b5433..28f0d6f180 100644 --- a/tools/fcmp/mpgui_qt.cpp +++ b/tools/fcmp/mpgui_qt.cpp @@ -82,6 +82,13 @@ int main(int argc, char **argv) QCoreApplication::setApplicationVersion(freeciv21_version()); app.setDesktopFileName(QStringLiteral("net.longturn.freeciv21.modpack")); + // Load window icons + QIcon::setThemeSearchPaths(get_data_dirs() + QIcon::themeSearchPaths()); + QIcon::setFallbackThemeName(QIcon::themeName()); + QIcon::setThemeName(QStringLiteral("icons")); + + qApp->setWindowIcon(QIcon::fromTheme(QStringLiteral("freeciv21-modpack"))); + // Delegate option parsing to the common function. fcmp_parse_cmdline(app); diff --git a/tools/ruledit/ruledit.cpp b/tools/ruledit/ruledit.cpp index 404ec1cff6..7cce04cfa0 100644 --- a/tools/ruledit/ruledit.cpp +++ b/tools/ruledit/ruledit.cpp @@ -59,6 +59,13 @@ int main(int argc, char **argv) QCoreApplication::setApplicationVersion(freeciv21_version()); app.setDesktopFileName(QStringLiteral("net.longturn.freeciv21.ruledit")); + // Load window icons + QIcon::setThemeSearchPaths(get_data_dirs() + QIcon::themeSearchPaths()); + QIcon::setFallbackThemeName(QIcon::themeName()); + QIcon::setThemeName(QStringLiteral("icons")); + + qApp->setWindowIcon(QIcon::fromTheme(QStringLiteral("freeciv21-client"))); + log_init(); init_nls(); From 14462bc0677f440efac5031d28bda1e26549f7ce Mon Sep 17 00:00:00 2001 From: Louis Moureaux Date: Wed, 27 Dec 2023 18:01:33 +0100 Subject: [PATCH 2/3] Install icon theme and icons on all platforms See #2088. --- cmake/FreecivInstall.cmake | 16 ---------------- data/CMakeLists.txt | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/cmake/FreecivInstall.cmake b/cmake/FreecivInstall.cmake index 18ec3924f3..c497004abe 100644 --- a/cmake/FreecivInstall.cmake +++ b/cmake/FreecivInstall.cmake @@ -163,10 +163,6 @@ if(UNIX AND NOT APPLE) message(STATUS "CMAKE_INSTALL_PREFIX changed from the default to /usr.") endif() - install(FILES ${CMAKE_SOURCE_DIR}/data/icons/index.theme - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21/icons - COMPONENT freeciv21) - # Install MetaInfo and Desktop files for the applications asked for at configure if(FREECIV_ENABLE_CLIENT) configure_file(${CMAKE_SOURCE_DIR}/dist/net.longturn.freeciv21.desktop.in @@ -187,10 +183,6 @@ if(UNIX AND NOT APPLE) DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo COMPONENT freeciv21 ) - install(DIRECTORY ${CMAKE_SOURCE_DIR}/data/icons - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 - COMPONENT freeciv21 - FILES_MATCHING PATTERN "freeciv21-client.png") if(FREECIV_ENABLE_MANPAGES) install( @@ -221,10 +213,6 @@ if(UNIX AND NOT APPLE) DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo COMPONENT freeciv21 ) - install(DIRECTORY ${CMAKE_SOURCE_DIR}/data/icons - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 - COMPONENT freeciv21 - FILES_MATCHING PATTERN "freeciv21-server.png") if(FREECIV_ENABLE_MANPAGES) install( @@ -258,10 +246,6 @@ if(UNIX AND NOT APPLE) DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo COMPONENT freeciv21 ) - install(DIRECTORY ${CMAKE_SOURCE_DIR}/data/icons - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 - COMPONENT freeciv21 - FILES_MATCHING PATTERN "freeciv21-modpack.png") if(FREECIV_ENABLE_MANPAGES) install( diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 6f7d38e9cd..1e09f58292 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -90,6 +90,33 @@ if (FREECIV_ENABLE_CLIENT OR FREECIV_ENABLE_CIVMANUAL) COMPONENT freeciv21) endif() +# Icons +if (FREECIV_ENABLE_CLIENT OR FREECIV_ENABLE_SERVER OR + FREECIV_ENABLE_RULEDIT OR FREECIV_ENABLE_FCMP_QT) + install(FILES ${CMAKE_SOURCE_DIR}/data/icons/index.theme + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21/icons + COMPONENT freeciv21) + + if (FREECIV_ENABLE_CLIENT OR FREECIV_ENABLE_RULEDIT) + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 + COMPONENT freeciv21 + FILES_MATCHING PATTERN "freeciv21-client.png") + endif() + if (FREECIV_ENABLE_SERVER) + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 + COMPONENT freeciv21 + FILES_MATCHING PATTERN "freeciv21-server.png") + endif() + if (FREECIV_ENABLE_FCMP_QT) + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 + COMPONENT freeciv21 + FILES_MATCHING PATTERN "freeciv21-modpack.png") + endif() +endif() + if (FREECIV_ENABLE_CLIENT) # Tilesets add_tileset(NAME amplio2) From 0e413e55b4be4b0195b4e7263b34dda6a8603978 Mon Sep 17 00:00:00 2001 From: Louis Moureaux Date: Thu, 28 Dec 2023 02:35:28 +0100 Subject: [PATCH 3/3] Fix icon install location for Windows --- data/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 1e09f58292..06863f5b40 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -94,24 +94,24 @@ endif() if (FREECIV_ENABLE_CLIENT OR FREECIV_ENABLE_SERVER OR FREECIV_ENABLE_RULEDIT OR FREECIV_ENABLE_FCMP_QT) install(FILES ${CMAKE_SOURCE_DIR}/data/icons/index.theme - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21/icons + DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/icons" COMPONENT freeciv21) if (FREECIV_ENABLE_CLIENT OR FREECIV_ENABLE_RULEDIT) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 + DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}" COMPONENT freeciv21 FILES_MATCHING PATTERN "freeciv21-client.png") endif() if (FREECIV_ENABLE_SERVER) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 + DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}" COMPONENT freeciv21 FILES_MATCHING PATTERN "freeciv21-server.png") endif() if (FREECIV_ENABLE_FCMP_QT) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/freeciv21 + DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}" COMPONENT freeciv21 FILES_MATCHING PATTERN "freeciv21-modpack.png") endif()