aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Terry <mike@mterry.name>2010-10-06 12:08:49 -0400
committerMichael Terry <mike@mterry.name>2010-10-06 12:08:49 -0400
commit3551eb170dd87fbe11148136813e1bb580b90604 (patch)
tree4655d23dedc302e6660261950d412753b3c14f78
parent60abdc2090b0a77e98011b4952bfad396db57626 (diff)
downloadayatana-indicator-application-3551eb170dd87fbe11148136813e1bb580b90604.tar.gz
ayatana-indicator-application-3551eb170dd87fbe11148136813e1bb580b90604.tar.bz2
ayatana-indicator-application-3551eb170dd87fbe11148136813e1bb580b90604.zip
instead of always building gtk2 and gtk3, add a --with-gtk= flag to configure to specify which to build with
-rw-r--r--configure.ac47
-rw-r--r--src/Makefile.am92
-rw-r--r--src/app-indicator.c16
-rw-r--r--src/indicator-application.c7
4 files changed, 88 insertions, 74 deletions
diff --git a/configure.ac b/configure.ac
index 42b545e..4abdd9d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -38,29 +38,39 @@ AC_CONFIG_MACRO_DIR(m4)
###########################
GTK_REQUIRED_VERSION=2.18
-GTK3_REQUIRED_VERSION=2.90
+GTK3_REQUIRED_VERSION=2.91
INDICATOR_REQUIRED_VERSION=0.3.5
DBUSMENUGTK_REQUIRED_VERSION=0.2.2
JSON_GLIB_REQUIRED_VERSION=0.7.6
DBUS_GLIB_REQUIRED_VERSION=0.82
-PKG_CHECK_MODULES(INDICATOR, gtk+-2.0 >= $GTK_REQUIRED_VERSION
- indicator >= $INDICATOR_REQUIRED_VERSION
- json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION
- dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
- dbusmenu-gtk >= $DBUSMENUGTK_REQUIRED_VERSION)
-
-AC_SUBST(INDICATOR_CFLAGS)
-AC_SUBST(INDICATOR_LIBS)
-
-PKG_CHECK_MODULES(INDICATOR3, gtk+-3.0 >= $GTK3_REQUIRED_VERSION
- indicator3 >= $INDICATOR_REQUIRED_VERSION
- json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION
- dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
- dbusmenu-gtk3 >= $DBUSMENUGTK_REQUIRED_VERSION)
-
-AC_SUBST(INDICATOR3_CFLAGS)
-AC_SUBST(INDICATOR3_LIBS)
+AC_ARG_WITH([gtk],
+ [AS_HELP_STRING([--with-gtk],
+ [Which version of gtk to use @<:@default=2@:>@])],
+ [],
+ [with_gtk=2])
+AS_IF([test "x$with_gtk" = x3],
+ [PKG_CHECK_MODULES(INDICATOR, gtk+-3.0 >= $GTK3_REQUIRED_VERSION
+ indicator3 >= $INDICATOR_REQUIRED_VERSION
+ json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ dbusmenu-gtk3 >= $DBUSMENUGTK_REQUIRED_VERSION)
+ AC_SUBST(INDICATOR_CFLAGS)
+ AC_SUBST(INDICATOR_LIBS)
+ AC_DEFINE(HAVE_GTK3, 1, [whether gtk3 is available])
+ ],
+ [test "x$with_gtk" = x2],
+ [PKG_CHECK_MODULES(INDICATOR, gtk+-2.0 >= $GTK_REQUIRED_VERSION
+ indicator >= $INDICATOR_REQUIRED_VERSION
+ json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ dbusmenu-gtk >= $DBUSMENUGTK_REQUIRED_VERSION)
+ AC_SUBST(INDICATOR_CFLAGS)
+ AC_SUBST(INDICATOR_LIBS)
+ ],
+ [AC_MSG_FAILURE([Value for --with-gtk was neither 2 nor 3])]
+)
+AM_CONDITIONAL(USE_GTK3, [test "x$with_gtk" = x3])
###########################
# GObject Introspection
@@ -228,4 +238,5 @@ Application Indicator Configuration:
Prefix: $prefix
Indicator Dir: $INDICATORDIR
+ GTK+ Version: $with_gtk
])
diff --git a/src/Makefile.am b/src/Makefile.am
index 2f0a061..55942d3 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,7 +1,19 @@
+if USE_GTK3
+VER=3
+lib_LTLIBRARIES = libappindicator3.la
+GTKGIR = Gtk-3.0
+GTKVAPI = gtk+-3.0
+else
+VER=
+lib_LTLIBRARIES = libappindicator.la
+GTKGIR = Gtk-2.0
+GTKVAPI = gtk+-2.0
+endif
+
CLEANFILES =
DISTCLEANFILES =
BUILT_SOURCES =
-EXTRA_DIST = appindicator-0.1.pc.in appindicator3-0.1.pc.in
+EXTRA_DIST = appindicator$(VER)-0.1.pc.in
include $(top_srcdir)/Makefile.am.enum
include $(top_srcdir)/Makefile.am.marshal
@@ -26,19 +38,6 @@ libapplication_la_CFLAGS = $(INDICATOR_CFLAGS) \
libapplication_la_LIBADD = $(INDICATOR_LIBS)
libapplication_la_LDFLAGS = -module -avoid-version
-applicationlib1dir = $(INDICATORDIR)
-applicationlib1_LTLIBRARIES = libapplication3.la
-libapplication3_la_SOURCES = $(libapplication_la_SOURCES)
-libapplication3_la_CFLAGS = $(INDICATOR3_CFLAGS) \
- -Wall \
- -Wl,-Bsymbolic-functions \
- -Wl,-z,defs \
- -Wl,--as-needed \
- -Werror \
- -DG_LOG_DOMAIN=\"Indicator-Application\"
-libapplication3_la_LIBADD = $(INDICATOR3_LIBS)
-libapplication3_la_LDFLAGS = $(libapplication_la_LDFLAGS)
-
##################################
# Service
##################################
@@ -70,7 +69,7 @@ indicator_application_service_CFLAGS = \
-DG_LOG_DOMAIN=\"indicator-application-service\"
indicator_application_service_LDADD = \
$(INDICATOR_LIBS) \
- libappindicator.la
+ libappindicator$(VER).la
glib_marshal_list = application-service-marshal.list
glib_marshal_prefix = _application_service_marshal
@@ -79,7 +78,7 @@ glib_marshal_prefix = _application_service_marshal
# Library
##################################
-pkgconfig_DATA = appindicator-0.1.pc appindicator3-0.1.pc
+pkgconfig_DATA = appindicator$(VER)-0.1.pc
pkgconfigdir = $(libdir)/pkgconfig
glib_enum_h = app-indicator-enum-types.h
@@ -88,12 +87,7 @@ glib_enum_headers = $(addprefix $(srcdir)/, $(libappindicator_headers))
DISTCLEANFILES += app-indicator-enum-types.c
-lib_LTLIBRARIES = \
- libappindicator.la \
- libappindicator3.la
-
-libappindicatorincludedir=$(includedir)/libappindicator-0.1/libappindicator
-libappindicator3includedir=$(includedir)/libappindicator3-0.1/libappindicator
+libappindicatorincludedir=$(includedir)/libappindicator$(VER)-0.1/libappindicator
libappindicator_headers = \
app-indicator.h
@@ -102,8 +96,6 @@ libappindicatorinclude_HEADERS = \
$(libappindicator_headers) \
$(glib_enum_h)
-libappindicator3include_HEADERS = $(libappindicatorinclude_HEADERS)
-
BUILT_SOURCES += \
notification-watcher-client.h \
notification-item-server.h
@@ -112,27 +104,30 @@ libappindicator_la_SOURCES = \
$(libappindicator_headers) \
app-indicator-enum-types.c \
app-indicator.c
-libappindicator3_la_SOURCES = $(libappindicator_la_SOURCES)
libappindicator_la_LDFLAGS = \
-version-info 0:0:0 \
-no-undefined \
-export-symbols-regex "^[^_d].*"
-libappindicator3_la_LDFLAGS = $(libappindicator_la_LDFLAGS)
libappindicator_la_CFLAGS = \
$(INDICATOR_CFLAGS) \
-Wall -Werror \
-DG_LOG_DOMAIN=\"libappindicator\"
-libappindicator3_la_CFLAGS = \
- $(INDICATOR3_CFLAGS) \
- -Wall -Werror \
- -DG_LOG_DOMAIN=\"libappindicator\"
libappindicator_la_LIBADD = \
$(INDICATOR_LIBS)
-libappindicator3_la_LIBADD = \
- $(INDICATOR3_LIBS)
+
+# We duplicate these here because Automake won't let us use $(VER) on the left hand side.
+# Since we carefully use $(VER) in the right hand side above, we can assign the same values.
+# Only one version of the library is every compiled at the same time, so it is safe to reuse
+# the right hand sides like this.
+libappindicator3includedir = $(libappindicatorincludedir)
+libappindicator3include_HEADERS = $(libappindicatorinclude_HEADERS)
+libappindicator3_la_SOURCES = $(libappindicator_la_SOURCES)
+libappindicator3_la_LDFLAGS = $(libappindicator_la_LDFLAGS)
+libappindicator3_la_CFLAGS = $(libappindicator_la_CFLAGS)
+libappindicator3_la_LIBADD = $(libappindicator_la_LIBADD)
##################################
# DBus Specs
@@ -183,23 +178,20 @@ introspection_sources = \
$(addprefix $(srcdir)/,$(libappindicator_headers)) \
$(addprefix $(top_builddir)/src/, $(glib_enum_h))
-AppIndicator-0.1.gir: libappindicator.la $(glib_enum_h)
+AppIndicator$(VER)-0.1.gir: libappindicator$(VER).la $(glib_enum_h)
AppIndicator_0_1_gir_INCLUDES = \
GObject-2.0 \
- Gtk-2.0
+ $(GTKGIR)
AppIndicator_0_1_gir_CFLAGS = $(INDICATOR_CFLAGS) -I$(srcdir) -I$(top_builddir)/src
-AppIndicator_0_1_gir_LIBS = libappindicator.la
+AppIndicator_0_1_gir_LIBS = libappindicator$(VER).la
AppIndicator_0_1_gir_FILES = $(introspection_sources)
-AppIndicator3-0.1.gir: libappindicator3.la $(glib_enum_h)
-AppIndicator3_0_1_gir_INCLUDES = \
- GObject-2.0 \
- Gtk-3.0
-AppIndicator3_0_1_gir_CFLAGS = $(INDICATOR3_CFLAGS) -I$(srcdir) -I$(top_builddir)/src
-AppIndicator3_0_1_gir_LIBS = libappindicator3.la
-AppIndicator3_0_1_gir_FILES = $(introspection_sources)
+AppIndicator3_0_1_gir_INCLUDES = $(AppIndicator_0_1_gir_INCLUDES)
+AppIndicator3_0_1_gir_CFLAGS = $(AppIndicator_0_1_gir_CFLAGS)
+AppIndicator3_0_1_gir_LIBS = $(AppIndicator_0_1_gir_LIBS)
+AppIndicator3_0_1_gir_FILES = $(AppIndicator_0_1_gir_FILES)
-INTROSPECTION_GIRS += AppIndicator-0.1.gir AppIndicator3-0.1.gir
+INTROSPECTION_GIRS += AppIndicator$(VER)-0.1.gir
girdir = $(datadir)/gir-1.0
gir_DATA = $(INTROSPECTION_GIRS)
@@ -218,17 +210,11 @@ endif
if HAVE_INTROSPECTION
vapidir = $(datadir)/vala/vapi
-vapi_DATA = AppIndicator-0.1.vapi AppIndicator3-0.1.vapi
-
-AppIndicator-0.1.vapi: AppIndicator-0.1.gir Makefile.am
- $(VALA_API_GEN) --library=AppIndicator-0.1 \
- --pkg gtk+-2.0 \
- --vapidir=$(top_builddir)/src \
- $<
+vapi_DATA = AppIndicator$(VER)-0.1.vapi
-AppIndicator3-0.1.vapi: AppIndicator3-0.1.gir Makefile.am
- $(VALA_API_GEN) --library=AppIndicator3-0.1 \
- --pkg gtk+-3.0 \
+AppIndicator$(VER)-0.1.vapi: AppIndicator$(VER)-0.1.gir Makefile.am
+ $(VALA_API_GEN) --library=AppIndicator$(VER)-0.1 \
+ --pkg $(GTKVAPI) \
--vapidir=$(top_builddir)/src \
$<
diff --git a/src/app-indicator.c b/src/app-indicator.c
index 939ca9a..a52a063 100644
--- a/src/app-indicator.c
+++ b/src/app-indicator.c
@@ -33,7 +33,11 @@ License version 3 and version 2.1 along with this program. If not, see
#include <dbus/dbus-glib.h>
#include <libdbusmenu-glib/server.h>
+#ifdef HAVE_GTK3
+#include <libdbusmenu-gtk3/client.h>
+#else
#include <libdbusmenu-gtk/client.h>
+#endif
#include "app-indicator.h"
#include "app-indicator-enum-types.h"
@@ -1194,13 +1198,17 @@ static void
update_icon_name (DbusmenuMenuitem *menuitem,
GtkImage *image)
{
+ const gchar *icon_name = NULL;
+
if (gtk_image_get_storage_type (image) != GTK_IMAGE_ICON_NAME)
return;
+ gtk_image_get_icon_name (image, &icon_name, NULL);
+
if (should_show_image (image))
dbusmenu_menuitem_property_set (menuitem,
DBUSMENU_MENUITEM_PROP_ICON_NAME,
- image->data.name.icon_name);
+ icon_name);
else
dbusmenu_menuitem_property_remove (menuitem,
DBUSMENU_MENUITEM_PROP_ICON_NAME);
@@ -1212,16 +1220,18 @@ update_stock_item (DbusmenuMenuitem *menuitem,
GtkImage *image)
{
GtkStockItem stock;
+ gchar *stock_id = NULL;
if (gtk_image_get_storage_type (image) != GTK_IMAGE_STOCK)
return FALSE;
- gtk_stock_lookup (image->data.stock.stock_id, &stock);
+ gtk_image_get_stock (image, &stock_id, NULL);
+ gtk_stock_lookup (stock_id, &stock);
if (should_show_image (image))
dbusmenu_menuitem_property_set (menuitem,
DBUSMENU_MENUITEM_PROP_ICON_NAME,
- image->data.stock.stock_id);
+ stock_id);
else
dbusmenu_menuitem_property_remove (menuitem,
DBUSMENU_MENUITEM_PROP_ICON_NAME);
diff --git a/src/indicator-application.c b/src/indicator-application.c
index 16c3a9f..7735539 100644
--- a/src/indicator-application.c
+++ b/src/indicator-application.c
@@ -21,6 +21,9 @@ You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
/* G Stuff */
#include <glib.h>
@@ -29,7 +32,11 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
/* DBus Stuff */
#include <dbus/dbus-glib.h>
+#ifdef HAVE_GTK3
+#include <libdbusmenu-gtk3/menu.h>
+#else
#include <libdbusmenu-gtk/menu.h>
+#endif
/* Indicator Stuff */
#include <libindicator/indicator.h>