From 5ddcf6b51cdcb8d793748ff4a812f843a0d4f6e7 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Wed, 1 Jun 2011 15:24:28 -0400 Subject: allow building either gtk2 or gtk3 versions; some deprecation cleanups --- Makefile.am | 18 ++++++++++++------ configure.ac | 16 +++++++++++++++- libido3.pc.in | 11 +++++++++++ src/Makefile.am | 20 +++++++++++++------- src/idomessagedialog.c | 8 +++++--- src/idoscalemenuitem.c | 7 +++---- 6 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 libido3.pc.in diff --git a/Makefile.am b/Makefile.am index 3348e87..68fd066 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,3 +1,9 @@ +if USE_GTK3 +VER=3 +else +VER= +endif + ACLOCAL_AMFLAGS = -I build/autotools V = @ @@ -6,14 +12,14 @@ QUIET_GEN = $(Q:@=@echo ' GEN '$@;) SUBDIRS = build src example -libido-0.1.pc: libido.pc - $(QUIET_GEN) cp -f libido.pc libido-0.1.pc +%-0.1.pc: %.pc + $(QUIET_GEN) cp -f $< $@ pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libido-0.1.pc +pkgconfig_DATA = libido$(VER)-0.1.pc -CLEANFILES = libido-0.1.pc -DISTCLEANFILES = libido.pc -EXTRA_DIST = libido.pc.in +CLEANFILES = libido-0.1.pc libido3-0.1.pc +DISTCLEANFILES = libido.pc libido3.pc +EXTRA_DIST = libido.pc.in libido3.pc.in DISTCHECK_CONFIGURE_FLAGS = --disable-gtk-doc diff --git a/configure.ac b/configure.ac index 1f644c0..fc26c5b 100644 --- a/configure.ac +++ b/configure.ac @@ -68,7 +68,20 @@ AC_FUNC_MALLOC AC_FUNC_MMAP AC_CHECK_FUNCS([memset munmap strcasecmp strdup]) -PKG_CHECK_MODULES(GTK, gtk+-3.0 >= 2.19.7) +PKG_PROG_PKG_CONFIG + +AC_ARG_WITH([gtk], + [AS_HELP_STRING([--with-gtk], + [Which version of gtk to use @<:@default=3@:>@])], + [], + [with_gtk=3]) +AM_CONDITIONAL(USE_GTK3, [test "x$with_gtk" = x3]) + +if test "x$with_gtk" = "x2"; then + PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.19.7) +else + PKG_CHECK_MODULES(GTK, gtk+-3.0 >= 3.0.0) +fi AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) @@ -114,6 +127,7 @@ AC_CONFIG_FILES([ src/Makefile example/Makefile libido.pc + libido3.pc ]) AC_OUTPUT diff --git a/libido3.pc.in b/libido3.pc.in new file mode 100644 index 0000000..db3ed1b --- /dev/null +++ b/libido3.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libido +Description: Ayatana Indicator Display Objects +Version: @VERSION@ +Libs: -L${libdir} -lido3-0.1 +Cflags: -I${includedir}/libido3-0.1 +Requires: gtk+-3.0 diff --git a/src/Makefile.am b/src/Makefile.am index 1485019..5ac5a01 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,3 +1,11 @@ +if USE_GTK3 +VER=3 +lib_LTLIBRARIES = libido3-0.1.la +else +VER= +lib_LTLIBRARIES = libido-0.1.la +endif + ido_built_public_sources = \ idotypebuiltins.h @@ -40,16 +48,13 @@ INCLUDES = \ -DLIBDIR=\"$(libdir)"\" \ -DG_DISABLE_DEPRECATED \ -DGDK_PIXBUF_DISABLE_DEPRECATED \ - -DGDK_DISABLE_DEPRECATED \ - -DGTK_DISABLE_DEPRECATED + -DGDK_DISABLE_DEPRECATED AM_CPPFLAGS = \ $(GCC_FLAGS) \ $(GTK_CFLAGS) \ $(MAINTAINER_CFLAGS) -lib_LTLIBRARIES = libido-0.1.la - libido_0_1_la_SOURCES = \ idotypebuiltins.c \ idocalendarmenuitem.c \ @@ -58,8 +63,9 @@ libido_0_1_la_SOURCES = \ idorange.c \ idoscalemenuitem.c \ idotimeline.c +libido3_0_1_la_SOURCES = $(libido_0_1_la_SOURCES) -libidoincludedir=$(includedir)/libido-0.1/libido +libidoincludedir=$(includedir)/libido$(VER)-0.1/libido libidoinclude_HEADERS = \ idocalendarmenuitem.h \ @@ -72,8 +78,8 @@ libidoinclude_HEADERS = \ libido_0_1_la_LIBADD = $(GTK_LIBS) libido_0_1_la_LDFLAGS = $(GTK_LT_LDFLAGS) - -idoheadersdir = $(includedir)/ido-0.1/ido +libido3_0_1_la_LIBADD = $(libido_0_1_la_LIBADD) +libido3_0_1_la_LDFLAGS = $(libido_0_1_la_LDFLAGS) DISTCLEANFILES = \ stamp-idotypebuiltins.h \ diff --git a/src/idomessagedialog.c b/src/idomessagedialog.c index c5acb03..1e72701 100644 --- a/src/idomessagedialog.c +++ b/src/idomessagedialog.c @@ -284,11 +284,13 @@ ido_message_dialog_new (GtkWindow *parent, NULL); dialog = GTK_DIALOG (widget); +#if ! GTK_CHECK_VERSION(3, 0, 0) if (flags & GTK_DIALOG_NO_SEPARATOR) { g_warning ("The GTK_DIALOG_NO_SEPARATOR flag cannot be used for IdoMessageDialog"); flags &= ~GTK_DIALOG_NO_SEPARATOR; } +#endif if (message_format) { @@ -296,8 +298,7 @@ ido_message_dialog_new (GtkWindow *parent, msg = g_strdup_vprintf (message_format, args); va_end (args); - gtk_label_set_text (GTK_LABEL (GTK_MESSAGE_DIALOG (widget)->label), - msg); + g_object_set (G_OBJECT (widget), "text", msg, NULL); g_free (msg); } @@ -397,7 +398,8 @@ ido_message_dialog_get_label (IdoMessageDialog *dialog, gboolean primary) label = GTK_LABEL (vlist->data); - if (strcmp ((primary ? text : secondary_text), label->label) == 0) + if (strcmp ((primary ? text : secondary_text), + gtk_label_get_label (label)) == 0) { return GTK_WIDGET (label); } diff --git a/src/idoscalemenuitem.c b/src/idoscalemenuitem.c index 5d522ca..6b1189b 100644 --- a/src/idoscalemenuitem.c +++ b/src/idoscalemenuitem.c @@ -185,8 +185,8 @@ ido_scale_menu_item_size_allocate (GtkWidget *widget, priv->right_padding = primary_padding; } - priv->child_allocation.x = GTK_CONTAINER (widget)->border_width + widget->style->xthickness; - priv->child_allocation.y = GTK_CONTAINER (widget)->border_width + widget->style->ythickness; + priv->child_allocation.x = gtk_container_get_border_width (GTK_CONTAINER (widget)) + gtk_widget_get_style (widget)->xthickness; + priv->child_allocation.y = gtk_container_get_border_width (GTK_CONTAINER (widget)) + gtk_widget_get_style (widget)->ythickness; priv->child_allocation.x += horizontal_padding; priv->child_allocation.x += priv->toggle_size; @@ -261,7 +261,6 @@ static void ido_scale_menu_item_class_init (IdoScaleMenuItemClass *item_class) { GObjectClass *gobject_class = G_OBJECT_CLASS (item_class); - GtkWidgetClass *object_class = GTK_OBJECT_CLASS (item_class); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (item_class); widget_class->button_press_event = ido_scale_menu_item_button_press_event; @@ -325,7 +324,7 @@ ido_scale_menu_item_class_init (IdoScaleMenuItemClass *item_class) g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - g_type_class_add_private (object_class, sizeof (IdoScaleMenuItemPrivate)); + g_type_class_add_private (item_class, sizeof (IdoScaleMenuItemPrivate)); } static void -- cgit v1.2.3