summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlukefromdc <[email protected]>2023-01-31 01:25:20 -0500
committerLuke from DC <[email protected]>2023-02-10 19:45:07 +0000
commit65a6c367e28e338dc74931dece1af9e53338276f (patch)
tree3d79d7ef325060b1a2a6397c264dae7fb7124596
parentf6c2c37d31d30764d72f465f8c86881ec5912f85 (diff)
downloadmate-polkit-65a6c367e28e338dc74931dece1af9e53338276f.tar.bz2
mate-polkit-65a6c367e28e338dc74931dece1af9e53338276f.tar.xz
Prefer building against Ayatana AppIndicator, but also support legacy Ubuntu Appindicator
-rw-r--r--configure.ac54
-rw-r--r--src/Makefile.am6
-rw-r--r--src/main.c15
3 files changed, 51 insertions, 24 deletions
diff --git a/configure.ac b/configure.ac
index 949030d..b72cf0b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -111,8 +111,17 @@ AC_ARG_ENABLE([accountsservice],
AM_CONDITIONAL([HAVE_ACCOUNTSSERVICE], [test "x$enable_accountsservice" = xyes])
-# Application indicator
-APPINDICATOR_PKG=appindicator3-0.1
+# Application Indicator (Ubuntu and Ayatana implementation)
+
+AYATANA_APPINDICATOR_PKG=ayatana-appindicator3-0.1
+UBUNTU_APPINDICATOR_PKG=appindicator3-0.1
+
+PKG_CHECK_EXISTS($AYATANA_APPINDICATOR_PKG >= $APPINDICATOR_REQUIRED,
+ [have_appindicator_ayatana="yes"],
+ [have_appindicator_ayatana="no"])
+PKG_CHECK_EXISTS($UBUNTU_APPINDICATOR_PKG >= $APPINDICATOR_REQUIRED,
+ [have_appindicator_ubuntu="yes"],
+ [have_appindicator_ubuntu="no"])
AC_ARG_ENABLE([appindicator],
AS_HELP_STRING([--enable-appindicator[=@<:@no/auto/yes@:>@]],[Build support for application indicators]),
@@ -120,22 +129,33 @@ AC_ARG_ENABLE([appindicator],
[enable_appindicator="auto"])
-if test "x$enable_appindicator" = "xauto"; then
- PKG_CHECK_EXISTS($APPINDICATOR_PKG >= $APPINDICATOR_REQUIRED,
- [enable_appindicator="yes"],
- [enable_appindicator="no"])
+if test "x$enable_appindicator" == "xauto" &&
+ (test "x$have_appindicator_ayatana" == "xyes" ||
+ test "x$have_appindicator_ubuntu" == "xyes"); then
+ AC_MSG_NOTICE([Enabling AppIndicator support (as --enable-appindicator=auto was used).])
+ enable_appindicator="yes"
fi
-if test "x$enable_appindicator" = "xyes"; then
- PKG_CHECK_MODULES(APPINDICATOR,
- [$APPINDICATOR_PKG >= $APPINDICATOR_REQUIRED],
- [AC_DEFINE(HAVE_APPINDICATOR, 1, [Have AppIndicator])])
+if test "x$enable_appindicator" == "xyes"; then
+ if test "x$have_appindicator_ayatana" == "xyes"; then
+ AC_MSG_NOTICE([Buidling against Ayatana AppIndicator.])
+ PKG_CHECK_MODULES(AYATANA_APPINDICATOR,
+ [$AYATANA_APPINDICATOR_PKG >= $APPINDICATOR_REQUIRED],
+ [AC_DEFINE(HAVE_AYATANA_APPINDICATOR, 1, [Have Ayatana AppIndicator])])
+ AC_SUBST(AYATANA_APPINDICATOR_CFLAGS)
+ AC_SUBST(AYATANA_APPINDICATOR_LIBS)
+ elif test "x$have_appindicator_ubuntu" == "xyes"; then
+ AC_MSG_NOTICE([Buidling against Ubuntu AppIndicator.])
+ PKG_CHECK_MODULES(UBUNTU_APPINDICATOR,
+ [$UBUNTU_APPINDICATOR_PKG >= $APPINDICATOR_REQUIRED],
+ [AC_DEFINE(HAVE_UBUNTU_APPINDICATOR, 1, [Have Ubuntu AppIndicator])])
+ AC_SUBST(UBUNTU_APPINDICATOR_CFLAGS)
+ AC_SUBST(UBUNTU_APPINDICATOR_LIBS)
+ else
+ AC_MSG_ERROR([Neither Ayatana AppIndicator nor Ubuntu AppIndicator library is present, but you enabled AppIndicator support.])
+ fi
fi
-AM_CONDITIONAL(HAVE_APPINDICATOR, test "x$enable_appindicator" = "xyes")
-AC_SUBST(APPINDICATOR_CFLAGS)
-AC_SUBST(APPINDICATOR_LIBS)
-
# ********************
# Internationalisation
# ********************
@@ -183,6 +203,10 @@ Configure summary:
Warning flags ............: ${WARN_CFLAGS}
Accountsservice ..........: ${enable_accountsservice}
- Application indicator ....: ${enable_appindicator}
+
+ AppIndicator enabled: ${enable_appindicator}
+ Ayatana AppIndicator (preferred) ${have_appindicator_ayatana}
+ Ubuntu AppIndicator (legacy) ${have_appindicator_ubuntu}
+
Maintainer mode ..........: ${USE_MAINTAINER_MODE}
"
diff --git a/src/Makefile.am b/src/Makefile.am
index a534d1e..5f7ead8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -35,7 +35,8 @@ polkit_mate_authentication_agent_1_CFLAGS = \
$(GLIB_CFLAGS) \
$(POLKIT_AGENT_CFLAGS) \
$(POLKIT_GOBJECT_CFLAGS) \
- $(APPINDICATOR_CFLAGS) \
+ $(AYATANA_APPINDICATOR_CFLAGS) \
+ $(UBUNTU_APPINDICATOR_CFLAGS) \
$(WARN_CFLAGS) \
$(AM_CFLAGS)
@@ -47,7 +48,8 @@ polkit_mate_authentication_agent_1_LDADD = \
$(GLIB_LIBS) \
$(POLKIT_AGENT_LIBS) \
$(POLKIT_GOBJECT_LIBS) \
- $(APPINDICATOR_LIBS)
+ $(AYATANA_APPINDICATOR_LIBS) \
+ $(UBUNTU_APPINDICATOR_LIBS)
EXTRA_DIST = \
polkit-mate-authentication-agent-1.desktop.in \
diff --git a/src/main.c b/src/main.c
index 8c5f437..d60cd8f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2009 Red Hat, Inc.
- * Copyright (C) 2012-2021 MATE Developers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -30,8 +29,10 @@
#include <glib/gi18n.h>
#include <polkitagent/polkitagent.h>
-#ifdef HAVE_APPINDICATOR
-#include <libappindicator/app-indicator.h>
+#if defined(HAVE_AYATANA_APPINDICATOR)
+# include <libayatana-appindicator/app-indicator.h>
+#elif defined(HAVE_UBUNTU_APPINDICATOR)
+# include <libappindicator/app-indicator.h>
#endif
#include "polkitmatelistener.h"
@@ -51,7 +52,7 @@ static PolkitSubject *session = NULL;
/* the current set of temporary authorizations */
static GList *current_temporary_authorizations = NULL;
-#ifdef HAVE_APPINDICATOR
+#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
static AppIndicator *app_indicator = NULL;
#else
static GtkStatusIcon *status_icon = NULL;
@@ -90,7 +91,7 @@ revoke_tmp_authz (void)
NULL);
}
-#ifdef HAVE_APPINDICATOR
+#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
static void
on_menu_item_activate (GtkMenuItem *menu_item,
gpointer user_data)
@@ -151,7 +152,7 @@ update_temporary_authorization_icon_real (void)
if (current_temporary_authorizations != NULL)
{
/* show icon */
-#ifdef HAVE_APPINDICATOR
+#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
if (app_indicator == NULL)
{
GtkWidget *item, *menu;
@@ -199,7 +200,7 @@ update_temporary_authorization_icon_real (void)
else
{
/* hide icon */
-#ifdef HAVE_APPINDICATOR
+#if defined(HAVE_AYATANA_APPINDICATOR) || defined(HAVE_UBUNTU_APPINDICATOR)
if (app_indicator != NULL)
{
/* keep the app_indicator, hide the icon or it won't come back*/