Prefer ayatana-appindicator over appindicator, if present (#4001)

This commit is contained in:
Mike Gelfand 2022-10-20 18:15:13 +01:00 committed by GitHub
parent 5564d9eb46
commit da27c3d18d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 54 additions and 18 deletions

View File

@ -32,7 +32,6 @@ set(EVENT2_MINIMUM 2.1.0)
set(GIOMM_MINIMUM 2.26.0)
set(GLIBMM_MINIMUM 2.60.0)
set(GTKMM_MINIMUM 3.24.0)
set(LIBAPPINDICATOR_MINIMUM 0.4.90)
set(OPENSSL_MINIMUM 0.9.7)
set(POLARSSL_MINIMUM 1.3)
set(PSL_MINIMUM 0.21.1)
@ -65,7 +64,7 @@ tr_list_option(USE_QT_VERSION "Use specific Qt version" AUTO 5 6)
tr_list_option(WITH_CRYPTO "Use specified crypto library" AUTO ccrypto cyassl mbedtls openssl polarssl wolfssl)
tr_auto_option(WITH_INOTIFY "Enable inotify support (on systems that support it)" AUTO)
tr_auto_option(WITH_KQUEUE "Enable kqueue support (on systems that support it)" AUTO)
tr_auto_option(WITH_LIBAPPINDICATOR "Use libappindicator in GTK+ client" AUTO)
tr_auto_option(WITH_APPINDICATOR "Use appindicator for system tray icon in GTK client (GTK+ 3 only)" AUTO)
tr_auto_option(WITH_SYSTEMD "Add support for systemd startup notification (on systems that support it)" AUTO)
set(TR_NAME ${PROJECT_NAME})
@ -291,15 +290,15 @@ if(ENABLE_GTK)
tr_fixup_auto_option(ENABLE_GTK GTK_FOUND GTK_IS_REQUIRED)
if(ENABLE_GTK AND WITH_LIBAPPINDICATOR AND GTK_VERSION EQUAL 3)
tr_get_required_flag(WITH_LIBAPPINDICATOR LIBAPPINDICATOR_IS_REQUIRED)
pkg_check_modules(LIBAPPINDICATOR appindicator3-0.1>=${LIBAPPINDICATOR_MINIMUM})
tr_fixup_auto_option(WITH_LIBAPPINDICATOR LIBAPPINDICATOR_FOUND LIBAPPINDICATOR_IS_REQUIRED)
if(ENABLE_GTK AND WITH_APPINDICATOR AND GTK_VERSION EQUAL 3)
tr_get_required_flag(WITH_APPINDICATOR APPINDICATOR_IS_REQUIRED)
find_package(APPINDICATOR ${APPINDICATOR_IS_REQUIRED})
tr_fixup_auto_option(WITH_APPINDICATOR APPINDICATOR_FOUND APPINDICATOR_IS_REQUIRED)
else()
set(WITH_LIBAPPINDICATOR OFF)
set(WITH_APPINDICATOR OFF)
endif()
else()
set(WITH_LIBAPPINDICATOR OFF)
set(WITH_APPINDICATOR OFF)
endif()
if(ENABLE_QT)

View File

@ -0,0 +1,30 @@
find_package(PkgConfig QUIET)
pkg_check_modules(PC_AYATANA_APPINDICATOR QUIET ayatana-appindicator3-0.1)
find_path(AYATANA_APPINDICATOR_INCLUDE_DIR NAMES libayatana-appindicator/app-indicator.h HINTS ${PC_AYATANA_APPINDICATOR_INCLUDE_DIRS})
find_library(AYATANA_APPINDICATOR_LIBRARY NAMES ayatana-appindicator3 ayatana-appindicator HINTS ${PC_AYATANA_APPINDICATOR_LIBRARY_DIRS})
if(AYATANA_APPINDICATOR_INCLUDE_DIR AND AYATANA_APPINDICATOR_LIBRARY)
set(APPINDICATOR_INCLUDE_DIR ${AYATANA_APPINDICATOR_INCLUDE_DIR})
set(APPINDICATOR_LIBRARY ${AYATANA_APPINDICATOR_LIBRARY})
set(APPINDICATOR_IS_AYATANA ON)
else()
pkg_check_modules(PC_APPINDICATOR QUIET appindicator3-0.1)
find_path(APPINDICATOR_INCLUDE_DIR NAMES libappindicator/app-indicator.h HINTS ${PC_APPINDICATOR_INCLUDE_DIRS})
find_library(APPINDICATOR_LIBRARY NAMES appindicator3 appindicator HINTS ${PC_APPINDICATOR_LIBRARY_DIRS})
set(APPINDICATOR_IS_AYATANA OFF)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(APPINDICATOR
REQUIRED_VARS
APPINDICATOR_LIBRARY
APPINDICATOR_INCLUDE_DIR
)
mark_as_advanced(AYATANA_APPINDICATOR_INCLUDE_DIR AYATANA_APPINDICATOR_LIBRARY)
mark_as_advanced(APPINDICATOR_INCLUDE_DIR APPINDICATOR_LIBRARY)
set(APPINDICATOR_INCLUDE_DIRS ${APPINDICATOR_INCLUDE_DIR})
set(APPINDICATOR_LIBRARIES ${APPINDICATOR_LIBRARY})

View File

@ -2,10 +2,6 @@ project(trgtk)
add_compile_options(${C_WARNING_FLAGS})
if(WITH_LIBAPPINDICATOR)
add_definitions(-DHAVE_LIBAPPINDICATOR)
endif()
execute_process(
COMMAND
${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_resources
@ -170,8 +166,8 @@ include_directories(
${EVENT2_INCLUDE_DIRS}
)
if(WITH_LIBAPPINDICATOR)
include_directories(SYSTEM ${LIBAPPINDICATOR_INCLUDE_DIRS})
if(WITH_APPINDICATOR)
include_directories(SYSTEM ${APPINDICATOR_INCLUDE_DIRS})
endif()
link_directories(
@ -198,6 +194,13 @@ add_definitions(
${GTK${GTK_VERSION}_CFLAGS_OTHER}
)
if(WITH_APPINDICATOR)
set_property(SOURCE SystemTrayIcon.cc APPEND PROPERTY COMPILE_DEFINITIONS HAVE_APPINDICATOR)
if(APPINDICATOR_IS_AYATANA)
set_property(SOURCE SystemTrayIcon.cc APPEND PROPERTY COMPILE_DEFINITIONS APPINDICATOR_IS_AYATANA)
endif()
endif()
tr_win32_app_info(${PROJECT_NAME}_WIN32_RC_FILE
"Transmission GTK+ Client"
"${TR_NAME}-gtk"
@ -219,8 +222,8 @@ target_link_libraries(${TR_NAME}-gtk
${EVENT2_LIBRARIES}
)
if(WITH_LIBAPPINDICATOR)
target_link_libraries(${TR_NAME}-gtk ${LIBAPPINDICATOR_LIBRARIES})
if(WITH_APPINDICATOR)
target_link_libraries(${TR_NAME}-gtk ${APPINDICATOR_LIBRARIES})
endif()
if(NOT MSVC)

View File

@ -13,9 +13,13 @@
#include <glibmm.h>
#include <glibmm/i18n.h>
#ifdef HAVE_LIBAPPINDICATOR
#ifdef HAVE_APPINDICATOR
#ifdef APPINDICATOR_IS_AYATANA
#include <libayatana-appindicator/app-indicator.h>
#else
#include <libappindicator/app-indicator.h>
#endif
#endif
#include <libtransmission/transmission.h>
#include <libtransmission/utils.h>
@ -29,7 +33,7 @@
#define TR_SYS_TRAY_IMPL_APPINDICATOR 1
#define TR_SYS_TRAY_IMPL_STATUS_ICON 2
#ifdef HAVE_LIBAPPINDICATOR
#ifdef HAVE_APPINDICATOR
#define TR_SYS_TRAY_IMPL TR_SYS_TRAY_IMPL_APPINDICATOR
#elif !GTKMM_CHECK_VERSION(4, 0, 0)
#define TR_SYS_TRAY_IMPL TR_SYS_TRAY_IMPL_STATUS_ICON