From a8667ce5ecb8069f9e4b16a8cf3932e327988d2d Mon Sep 17 00:00:00 2001 From: Nicola Fontana Date: Mon, 19 Mar 2012 01:07:40 +0100 Subject: [PATCH] build: initial support for GTK+3 Split up the relevant GTK+2 files into their GTK+3 equivalents. Added check to configure.ac (via --with-gtk arg) and added what requested. adg-demo is now properly running but deeper testing will be required. Basically closes issue #55. --- Makefile.am | 8 +- configure.ac | 44 +++--- demo/Makefile.am | 25 +++- demo/adg-demo.ui.in | 2 - demo/{cpml-demo.c => cpml-demo-gtk2.c} | 2 +- demo/cpml-demo.c | 78 ++++------- demo/cpml-demo.ui.in | 1 - po-properties/it.po | 102 +++++++------- src/adg/Makefile.am | 34 ++++- src/adg/adg-canvas.c | 4 +- src/adg/adg-canvas.h | 125 +++++++++++++++++ src/adg/adg-entity.c | 2 +- src/adg/{adg-gtk-area.c => adg-gtk-area-gtk2.c} | 0 src/adg/adg-gtk-area.c | 149 +++++++++++++++------ .../{adg-gtk-layout.c => adg-gtk-layout-gtk2.c} | 0 src/adg/adg-gtk-layout.c | 89 +++++------- src/adg/tests/Makefile.am | 8 +- 17 files changed, 429 insertions(+), 244 deletions(-) copy demo/{cpml-demo.c => cpml-demo-gtk2.c} (99%) create mode 100644 src/adg/adg-canvas.h copy src/adg/{adg-gtk-area.c => adg-gtk-area-gtk2.c} (100%) copy src/adg/{adg-gtk-layout.c => adg-gtk-layout-gtk2.c} (100%) diff --git a/Makefile.am b/Makefile.am index d3ea1414..74eead57 100644 --- a/Makefile.am +++ b/Makefile.am @@ -35,11 +35,9 @@ CLEANFILES= test-report.xml \ full-report.xml \ full-report.html -SUBDIRS= src -if HAVE_GTK2 -SUBDIRS+= demo -endif -SUBDIRS+= po \ +SUBDIRS= src \ + demo \ + po \ po-properties \ docs diff --git a/configure.ac b/configure.ac index 90f990f9..28127c0c 100644 --- a/configure.ac +++ b/configure.ac @@ -9,7 +9,8 @@ m4_define([cpml_lt_version],[1:0:0]) m4_define([gtkdoc_prereq],[1.9]) m4_define([gobject_prereq],[2.10.1]) m4_define([cairo_prereq],[1.7.4]) -m4_define([gtk_prereq],[2.12.0]) +m4_define([gtk2_prereq],[2.12.0]) +m4_define([gtk3_prereq],[3.0.0]) m4_define([pangocairo_prereq],[1.18.0]) m4_define([gi_prereq],[0.9.5])dnl Picked up from clutter @@ -146,20 +147,28 @@ AS_IF([test "x${enable_pango}" != "xno"], [enable_pango=no])])]) AM_CONDITIONAL([HAVE_PANGO],[test "x${enable_pango}" = "xyes"]) -dnl GTK+2 -AC_ARG_ENABLE([gtk2], - [AS_HELP_STRING([--enable-gtk2], - [include GKT+2 specific widgets @<:@default=check@:>@])], - [],[enable_gtk2=check]) -AS_IF([test "x${enable_gtk2}" != "xno"], - [PKG_CHECK_MODULES([GTK2],[gtk+-2.0 >= ]gtk_prereq, - [enable_gtk2=yes +dnl GTK+ support +AC_ARG_WITH(gtk, + [AC_HELP_STRING([--with-gtk=@<:@gtk2/gtk3@:>@], + [include GTK+ specific widgets @<:@default=check@:>@])], + [],[with_gtk=check]) +AS_IF([test "x${with_gtk}" = "xgtk3" -o "x${with_gtk}" = "xcheck"], + [PKG_CHECK_MODULES([GTK3],[gtk+-3.0 >= ]gtk3_prereq, + [with_gtk=gtk3 + AC_DEFINE_UNQUOTED([GTK3_ENABLED],[1], + [Defined if the GTK+3 support is enabled.])], + [AS_IF([test "x${with_gtk}" = "xgtk3"], + [AC_MSG_ERROR([${GTK3_PKG_ERRORS} and GTK+3 support requested])])])]) +AS_IF([test "x${with_gtk}" = "xgtk2" -o "x{with_gtk}" = "xcheck"], + [PKG_CHECK_MODULES([GTK2],[gtk+-2.0 >= ]gtk2_prereq, + [with_gtk=gtk2 AC_DEFINE_UNQUOTED([GTK2_ENABLED],[1], [Defined if the GTK+2 support is enabled.])], - [AS_IF([test "x${enable_gtk2}" = "xyes"], - [AC_MSG_ERROR([${GTK2_PKG_ERRORS} and GTK+2 support requested])], - [enable_gtk2=no])])]) -AM_CONDITIONAL([HAVE_GTK2],[test "x${enable_gtk2}" = "xyes"]) + [AS_IF([test "x${with_gtk}" = "xgtk2"], + [AC_MSG_ERROR([${GTK2_PKG_ERRORS} and GTK+2 support requested])])])]) +AM_CONDITIONAL([HAVE_GTK], [test "x${with_gtk}" = "xgtk2" -o "x${with_gtk}" = "xgtk3"]) +AM_CONDITIONAL([HAVE_GTK2],[test "x${with_gtk}" = "xgtk2"]) +AM_CONDITIONAL([HAVE_GTK3],[test "x${with_gtk}" = "xgtk3"]) dnl Glade AC_ARG_ENABLE([glade], @@ -216,9 +225,10 @@ AM_COND_IF([HAVE_PANGO], '], [ADG_REQUIRES='gobject-2.0 >= gobject_prereq' ADG_H_ADDITIONAL='']) -AM_COND_IF([HAVE_GTK2], - [ADG_REQUIRES='gtk+-2.0 >= gtk_prereq' - ADG_H_ADDITIONAL="${ADG_H_ADDITIONAL} +AM_COND_IF([HAVE_GTK3],[ADG_REQUIRES='gtk+-3.0 >= gtk3_prereq']) +AM_COND_IF([HAVE_GTK2],[ADG_REQUIRES='gtk+-2.0 >= gtk2_prereq']) +AM_COND_IF([HAVE_GTK], + [ADG_H_ADDITIONAL="${ADG_H_ADDITIONAL} #include #include \"adg/adg-gtk-utils.h\" #include \"adg/adg-gtk-area.h\" @@ -297,7 +307,7 @@ AC_PACKAGE_NAME adg_version will be built with the following options: API compatibility: adg_api_version CPML library to use: internal (cpml-adg_version) Build pango based entities: ${enable_pango} - GTK+2 support: ${enable_gtk2} + GTK+ support: ${with_gtk} Install glade catalogs: ${enable_glade}${report_glade_catalogdir} Build API reference: ${enable_gtk_doc} GObject instrospection: ${enable_introspection} diff --git a/demo/Makefile.am b/demo/Makefile.am index 18bc66f8..3048ceaf 100644 --- a/demo/Makefile.am +++ b/demo/Makefile.am @@ -24,10 +24,12 @@ AM_CPPFLAGS+= -DADG_DATADIR='"$(adgdatadir)"' endif -if HAVE_GTK2 +if HAVE_GTK -AM_CFLAGS+= $(GTK2_CFLAGS) -AM_LDFLAGS+= $(GTK2_LIBS) +AM_CFLAGS+= $(GTK3_CFLAGS) \ + $(GTK2_CFLAGS) +AM_LDFLAGS+= $(GTK3_LIBS) \ + $(GTK2_LIBS) bin_PROGRAMS= adg-demo \ cpml-demo @@ -36,13 +38,26 @@ adg_demo_SOURCES= adg-demo.c \ demo.h adg_demo_LDADD= $(LDADD) \ $(top_builddir)/src/adg/libadg-1.la -cpml_demo_SOURCES= cpml-demo.c \ - demo.c \ +cpml_demo_SOURCES= demo.c \ demo.h nodist_adgdata_DATA= adg-demo.ui \ cpml-demo.ui dist_adgdata_DATA= adg-64.png + +if HAVE_GTK3 + +cpml_demo_SOURCES+= cpml-demo.c + endif +if HAVE_GTK2 + +cpml_demo_SOURCES+= cpml-demo-gtk2.c + +endif + +endif + + EXTRA_DIST= cpml-demo.ui.in \ adg-demo.ui.in diff --git a/demo/adg-demo.ui.in b/demo/adg-demo.ui.in index 316d7ef4..ddffb696 100644 --- a/demo/adg-demo.ui.in +++ b/demo/adg-demo.ui.in @@ -200,7 +200,6 @@ Boston, MA 02110-1301, USA. True True wndMain - False True @@ -1168,7 +1167,6 @@ Boston, MA 02110-1301, USA. True True wndMain - False False False save diff --git a/demo/cpml-demo.c b/demo/cpml-demo-gtk2.c similarity index 99% copy from demo/cpml-demo.c copy to demo/cpml-demo-gtk2.c index aae04c6f..cfc4e4e0 100644 --- a/demo/cpml-demo.c +++ b/demo/cpml-demo-gtk2.c @@ -63,7 +63,7 @@ static struct { CpmlSegment segment; CpmlPrimitive primitive; } browsing_data = { - NULL, + NULL, }; static CpmlPair bezier_samples[][4] = { diff --git a/demo/cpml-demo.c b/demo/cpml-demo.c index aae04c6f..f576094c 100644 --- a/demo/cpml-demo.c +++ b/demo/cpml-demo.c @@ -17,8 +17,7 @@ static void stroke_and_destroy (cairo_t *cr, cairo_path_t *path); static void browsing (GtkWidget *widget, - GdkEventExpose *event, - gpointer user_data); + cairo_t *cr); static void browsing_segment (GtkToggleButton*togglebutton, gpointer user_data); static void browsing_primitive (GtkToggleButton*togglebutton, @@ -28,9 +27,8 @@ static void browsing_reset (GtkButton *button, static void browsing_next (GtkButton *button, gpointer user_data); -static void arcs (GtkWidget *widget, - GdkEventExpose *event, - gpointer user_data); +static gboolean arcs (GtkWidget *widget, + cairo_t *cr); static void arc3p (cairo_t *cr, double x1, double y1, @@ -39,17 +37,12 @@ static void arc3p (cairo_t *cr, double x3, double y3); -static void intersections (GtkWidget *widget, - GdkEventExpose *event, - gpointer user_data); - -static void offset_curves (GtkWidget *widget, - GdkEventExpose *event, - gpointer user_data); - -static void offset_segments (GtkWidget *widget, - GdkEventExpose *event, - gpointer user_data); +static gboolean intersections (GtkWidget *widget, + cairo_t *cr); +static gboolean offset_curves (GtkWidget *widget, + cairo_t *cr); +static gboolean offset_segments (GtkWidget *widget, + cairo_t *cr); static void circle_callback (cairo_t *cr); static void piston_callback (cairo_t *cr); @@ -133,7 +126,7 @@ main(gint argc, gchar **argv) /* Connect signals */ g_signal_connect(window, "delete-event", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(gtk_builder_get_object(builder, "areaBrowsing"), - "expose-event", G_CALLBACK(browsing), NULL); + "draw", G_CALLBACK(browsing), NULL); g_signal_connect(gtk_builder_get_object(builder, "optBrowsingSegment"), "toggled", G_CALLBACK(browsing_segment), NULL); g_signal_connect(gtk_builder_get_object(builder, "optBrowsingPrimitive"), @@ -143,13 +136,13 @@ main(gint argc, gchar **argv) g_signal_connect(gtk_builder_get_object(builder, "btnBrowsingNext"), "clicked", G_CALLBACK(browsing_next), NULL); g_signal_connect(gtk_builder_get_object(builder, "areaArcs"), - "expose-event", G_CALLBACK(arcs), NULL); + "draw", G_CALLBACK(arcs), NULL); g_signal_connect(gtk_builder_get_object(builder, "areaIntersections"), - "expose-event", G_CALLBACK(intersections), NULL); + "draw", G_CALLBACK(intersections), NULL); g_signal_connect(gtk_builder_get_object(builder, "areaOffsetCurves"), - "expose-event", G_CALLBACK(offset_curves), NULL); + "draw", G_CALLBACK(offset_curves), NULL); g_signal_connect(gtk_builder_get_object(builder, "areaOffsetSegments"), - "expose-event", G_CALLBACK(offset_segments), NULL); + "draw", G_CALLBACK(offset_segments), NULL); g_signal_connect(gtk_builder_get_object(builder, "btnQuit"), "clicked", G_CALLBACK(gtk_main_quit), NULL); @@ -220,14 +213,11 @@ stroke_and_destroy(cairo_t *cr, cairo_path_t *path) static void -browsing(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) +browsing(GtkWidget *widget, cairo_t *cr) { - cairo_t *cr; - int n; - - cr = gdk_cairo_create(widget->window); - if (browsing_data.area == NULL) { + int n; + /* Initialize browsing_data */ browsing_data.area = widget; browsing_data.use_segment = TRUE; @@ -267,7 +257,6 @@ browsing(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) cpml_primitive_to_cairo(&browsing_data.primitive, cr); cairo_stroke(cr); - cairo_destroy(cr); } static void @@ -319,11 +308,9 @@ browsing_next(GtkButton *button, gpointer user_data) } -static void -arcs(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) +static gboolean +arcs(GtkWidget *widget, cairo_t *cr) { - cairo_t *cr = gdk_cairo_create(widget->window); - cairo_translate(cr, 100.5, 100.5); arc3p(cr, 0, 0, 0, 120, 120, 120); @@ -339,7 +326,7 @@ arcs(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) cairo_translate(cr, 200, 0); arc3p(cr, -2, 85, 0, 50, 120, 0); - cairo_destroy(cr); + return FALSE; } static void @@ -392,15 +379,13 @@ arc3p(cairo_t *cr, double x1, double y1, } -static void -intersections(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) +static gboolean +intersections(GtkWidget *widget, cairo_t *cr) { - cairo_t *cr; cairo_path_t *path; CpmlSegment segment1, segment2; CpmlPair intersection; - cr = gdk_cairo_create(widget->window); cairo_translate(cr, 10.5, 120.5); line1_callback(cr); @@ -423,14 +408,13 @@ intersections(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) } cairo_path_destroy(path); - cairo_destroy(cr); + return FALSE; } -static void -offset_curves(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) +static gboolean +offset_curves(GtkWidget *widget, cairo_t *cr) { - cairo_t *cr; gint n; CpmlPair *bezier; cairo_path_t *path, *path_copy; @@ -440,8 +424,6 @@ offset_curves(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) CpmlVector vector; double t; - cr = gdk_cairo_create(widget->window); - /* Add the Bézier curve samples */ for (n = 0; n < G_N_ELEMENTS(bezier_samples); ++n) { bezier = &bezier_samples[n][0]; @@ -490,19 +472,17 @@ offset_curves(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) cairo_path_destroy(path_copy); } - cairo_destroy(cr); + return FALSE; } -static void -offset_segments(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) +static gboolean +offset_segments(GtkWidget *widget, cairo_t *cr) { - cairo_t *cr; cairo_path_t *path; CpmlSegment segment; int n; - cr = gdk_cairo_create(widget->window); cairo_translate(cr, 270.5, -120.5); /* Offset the path samples */ @@ -522,7 +502,7 @@ offset_segments(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) stroke_and_destroy(cr, path); } - cairo_destroy(cr); + return FALSE; } diff --git a/demo/cpml-demo.ui.in b/demo/cpml-demo.ui.in index 255d31d9..22e05135 100644 --- a/demo/cpml-demo.ui.in +++ b/demo/cpml-demo.ui.in @@ -11,7 +11,6 @@ True True left - 6 True diff --git a/po-properties/it.po b/po-properties/it.po index 649741f9..9f26eb34 100644 --- a/po-properties/it.po +++ b/po-properties/it.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: adg 1.0.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-04-09 20:41+0200\n" +"POT-Creation-Date: 2012-03-19 01:05+0100\n" "PO-Revision-Date: 2010-09-28 16:40+0200\n" "Last-Translator: Nicola Fontana \n" "Language-Team: \n" @@ -59,7 +59,7 @@ msgstr "Flag di Seconda Linea di Estensione Presente" msgid "Show (TRUE) or hide (FALSE) the second extension line" msgstr "Mostrare (TRUE) o nascondere (FALSE) la seconda linea di estensione" -#: src/adg/adg-alignment.c:105 src/adg/adg-gtk-area.c:165 +#: src/adg/adg-alignment.c:105 src/adg/adg-gtk-area.c:182 msgid "Factor" msgstr "Fattore" @@ -151,7 +151,7 @@ msgstr "" "Lo spazio (nello spazio globale) da lasciare vuoto alla sinistra della " "cornice" -#: src/adg/adg-canvas.c:208 src/adg/adg-table.c:196 +#: src/adg/adg-canvas.c:208 src/adg/adg-table.c:140 msgid "Has Frame Flag" msgstr "Flag di Riquadro Presente" @@ -688,26 +688,26 @@ msgstr "" "Specifica se adottare l'hint metrico, ossia se applicare l'allineamento a " "valori interi nello spazio dispositivo" -#: src/adg/adg-gtk-area.c:158 +#: src/adg/adg-gtk-area.c:175 msgid "Canvas" msgstr "Canvas" -#: src/adg/adg-gtk-area.c:159 +#: src/adg/adg-gtk-area.c:176 msgid "The canvas to be shown" msgstr "Il canvas da mostrare" -#: src/adg/adg-gtk-area.c:166 +#: src/adg/adg-gtk-area.c:183 msgid "" "The factor to use while zooming in and out (usually with the mouse wheel)" msgstr "" "Il fattore da usare per ingrandire (di solito con la rotella del mouse) " "avanti e indietro" -#: src/adg/adg-gtk-area.c:172 +#: src/adg/adg-gtk-area.c:189 msgid "Autozoom" msgstr "Autozoom" -#: src/adg/adg-gtk-area.c:173 +#: src/adg/adg-gtk-area.c:190 msgid "" "When enabled, automatically adjust the zoom in global space at every size " "allocation" @@ -715,38 +715,14 @@ msgstr "" "Quando abilitato, corregge automaticamente l'ingrandimento in global space " "ad ogni nuovo cambiamento di dimensione" -#: src/adg/adg-gtk-area.c:179 +#: src/adg/adg-gtk-area.c:196 msgid "Render Map" msgstr "Mappa di Render" -#: src/adg/adg-gtk-area.c:180 +#: src/adg/adg-gtk-area.c:197 msgid "The transformation to be applied on the canvas before rendering it" msgstr "La trasformazione da applicare al canvas prima del rendering" -#: src/adg/adg-gtk-layout.c:127 -msgid "Horizontal adjustment" -msgstr "Regolazione orizzontale" - -#: src/adg/adg-gtk-layout.c:128 -msgid "" -"The GtkAdjustment that determines the values of the horizontal position for " -"this viewport" -msgstr "" -"Il GtkAdjustment che determina il valore per il posizionamento orizzontale " -"di questa vista" - -#: src/adg/adg-gtk-layout.c:134 -msgid "Vertical adjustment" -msgstr "Regolazione verticale" - -#: src/adg/adg-gtk-layout.c:135 -msgid "" -"The GtkAdjustment that determines the values of the vertical position for " -"this viewport" -msgstr "" -"Il GtkAdjustment che determina il valore per il posizionamento verticale di " -"questa vista" - #: src/adg/adg-hatch.c:93 msgid "Fill Dress" msgstr "Vestito Riempimento" @@ -898,7 +874,7 @@ msgstr "Vestito Assi" msgid "The line dress to use for rendering the axis of the projection scheme" msgstr "Il vestito linea da usare per il rendering degli assi della proiezione" -#: src/adg/adg-projection.c:111 src/adg/adg-title-block.c:147 +#: src/adg/adg-projection.c:111 src/adg/adg-title-block.c:149 msgid "Projection Scheme" msgstr "Proiezione Ortografica" @@ -926,7 +902,7 @@ msgstr "Angolo" msgid "The angle (in radians) of the lines" msgstr "L'angolo (in radianti) delle linee" -#: src/adg/adg-stroke.c:104 src/adg/adg-table.c:190 +#: src/adg/adg-stroke.c:104 src/adg/adg-table.c:134 msgid "The dress to use for stroking this entity" msgstr "Il vestito da usare per tracciare questa entità" @@ -934,11 +910,11 @@ msgstr "Il vestito da usare per tracciare questa entità" msgid "The trail to be stroked" msgstr "La scia da tracciare" -#: src/adg/adg-table.c:189 +#: src/adg/adg-table.c:133 msgid "Table Dress" msgstr "Vestito Tabella" -#: src/adg/adg-table.c:197 +#: src/adg/adg-table.c:141 msgid "" "If enabled, a frame using the proper dress found in this table style will be " "drawn around the table extents" @@ -1021,19 +997,19 @@ msgstr "Vestito del Font" msgid "The font dress to use for rendering this text" msgstr "Il vestito del font da usare per disegnare questo testo" -#: src/adg/adg-title-block.c:98 +#: src/adg/adg-title-block.c:100 msgid "Title" msgstr "Titolo" -#: src/adg/adg-title-block.c:99 +#: src/adg/adg-title-block.c:101 msgid "A descriptive title of the drawing" msgstr "Un titolo descrittivo del disegno" -#: src/adg/adg-title-block.c:105 +#: src/adg/adg-title-block.c:107 msgid "Drawing Name" msgstr "Nome Disegno" -#: src/adg/adg-title-block.c:106 +#: src/adg/adg-title-block.c:108 msgid "" "The name of the drawing: the ADG canvas does not make any assumtpion on this " "text string" @@ -1041,11 +1017,11 @@ msgstr "" "Il nome del disegno: il canvas ADG non avanza alcuna ipotesi sul significato " "di questa stringa" -#: src/adg/adg-title-block.c:112 +#: src/adg/adg-title-block.c:114 msgid "Media Size" msgstr "Dimensione del Supporto" -#: src/adg/adg-title-block.c:113 +#: src/adg/adg-title-block.c:115 msgid "" "The media size to be used to print the drawing, usually something like " "\"A3\" or \"Letter\"" @@ -1053,27 +1029,27 @@ msgstr "" "La dimensione del supporto usato per stampare il disegno, solitamente una " "stringa tipo \"A3\" o \"Letter\"" -#: src/adg/adg-title-block.c:119 +#: src/adg/adg-title-block.c:121 msgid "Scale" msgstr "Scala" -#: src/adg/adg-title-block.c:120 +#: src/adg/adg-title-block.c:122 msgid "The scale of the drawing, if it makes sense" msgstr "La scala del disegno, se significativa" -#: src/adg/adg-title-block.c:126 +#: src/adg/adg-title-block.c:128 msgid "Author" msgstr "Autore" -#: src/adg/adg-title-block.c:127 +#: src/adg/adg-title-block.c:129 msgid "Name and last name of the author of the drawing" msgstr "Nome e cognome dell'autore del disegno" -#: src/adg/adg-title-block.c:133 +#: src/adg/adg-title-block.c:135 msgid "Date" msgstr "Data" -#: src/adg/adg-title-block.c:134 +#: src/adg/adg-title-block.c:136 msgid "" "The date this drawing has been generated: setting it to an empty string will " "fallback to today in the preferred representation for the current locale" @@ -1082,11 +1058,11 @@ msgstr "" "verrà inizializzata automaticamente ad oggi nel formato privilegiato dalle " "impostazioni di localizzazione correnti" -#: src/adg/adg-title-block.c:140 +#: src/adg/adg-title-block.c:142 msgid "Logo" msgstr "Logo" -#: src/adg/adg-title-block.c:141 +#: src/adg/adg-title-block.c:143 msgid "" "An entity to be displayed in the title block as the logo of the owner: the " "containing cell has a 1:1 ratio" @@ -1094,7 +1070,7 @@ msgstr "" "L'entità da mostrare nel riquadro delle iscrizioni come logo del " "proprietario: la cella contenitrice ha un ratio 1:1" -#: src/adg/adg-title-block.c:148 +#: src/adg/adg-title-block.c:150 msgid "" "The entity usually reserved to identify the projection scheme adopted by " "this drawing" @@ -1113,3 +1089,23 @@ msgid "" msgstr "" "Massimo angolo di arco da approssimare con una singola linea di Bézier: " "consultare adg_trail_set_max_angle() per dettagli" + +#~ msgid "Horizontal adjustment" +#~ msgstr "Regolazione orizzontale" + +#~ msgid "" +#~ "The GtkAdjustment that determines the values of the horizontal position " +#~ "for this viewport" +#~ msgstr "" +#~ "Il GtkAdjustment che determina il valore per il posizionamento " +#~ "orizzontale di questa vista" + +#~ msgid "Vertical adjustment" +#~ msgstr "Regolazione verticale" + +#~ msgid "" +#~ "The GtkAdjustment that determines the values of the vertical position for " +#~ "this viewport" +#~ msgstr "" +#~ "Il GtkAdjustment che determina il valore per il posizionamento verticale " +#~ "di questa vista" diff --git a/src/adg/Makefile.am b/src/adg/Makefile.am index e42078d8..1d2ddbe4 100644 --- a/src/adg/Makefile.am +++ b/src/adg/Makefile.am @@ -169,19 +169,33 @@ libadg_1_la_LDFLAGS= -no-undefined \ libadg_1_la_LIBADD= $(top_builddir)/src/cpml/libcpml-1.la -## Optional GTK+2 related stuff -if HAVE_GTK2 +## Optional GTK+ related stuff +if HAVE_GTK h_sources+= adg-gtk-area.h \ adg-gtk-layout.h \ adg-gtk-utils.h private_h_sources+= adg-gtk-area-private.h \ adg-gtk-layout-private.h +c_sources+= adg-gtk-utils.c +ADG_CFLAGS+= $(GTK3_CFLAGS) \ + $(GTK2_CFLAGS) +ADG_LDFLAGS+= $(GTK3_LIBS) \ + $(GTK2_LIBS) + +endif + +if HAVE_GTK3 + c_sources+= adg-gtk-area.c \ - adg-gtk-layout.c \ - adg-gtk-utils.c -ADG_CFLAGS+= $(GTK2_CFLAGS) -ADG_LDFLAGS+= $(GTK2_LIBS) + adg-gtk-layout.c + +endif + +if HAVE_GTK2 + +c_sources+= adg-gtk-area-gtk2.c \ + adg-gtk-layout-gtk2.c endif @@ -216,10 +230,16 @@ Adg_1_0_gir_LIBS= libadg-1.la Adg_1_0_gir_INCLUDES= Adg_1_0_gir_PACKAGES= -if HAVE_GTK2 +if HAVE_GTK +if HAVE_GTK3 +## GTK+3 includes all the needed dependencies +Adg_1_0_gir_INCLUDES+= Gtk-3.0 +Adg_1_0_gir_PACKAGES+= gtk+-3.0 +else ## GTK+2 includes all the needed dependencies Adg_1_0_gir_INCLUDES+= Gtk-2.0 Adg_1_0_gir_PACKAGES+= gtk+-2.0 +endif else if HAVE_PANGO ## pangocairo is a superset of the default dependencies diff --git a/src/adg/adg-canvas.c b/src/adg/adg-canvas.c index 8f1fc1b7..82650fd5 100644 --- a/src/adg/adg-canvas.c +++ b/src/adg/adg-canvas.c @@ -69,7 +69,7 @@ #include "adg-internal.h" -#if GTK2_ENABLED +#if GTK3_ENABLED || GTK2_ENABLED #include #endif @@ -1180,7 +1180,7 @@ _adg_render(AdgEntity *entity, cairo_t *cr) _ADG_OLD_ENTITY_CLASS->render(entity, cr); } -#if GTK2_ENABLED +#if GTK3_ENABLED || GTK2_ENABLED /** * adg_canvas_set_paper: diff --git a/src/adg/adg-canvas.h b/src/adg/adg-canvas.h new file mode 100644 index 00000000..8bc8f005 --- /dev/null +++ b/src/adg/adg-canvas.h @@ -0,0 +1,125 @@ +/* ADG - Automatic Drawing Generation + * Copyright (C) 2007,2008,2009,2010,2011 Nicola Fontana + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + + +#if !defined(__ADG_H__) +#error "Only can be included directly." +#endif + + +#ifndef __ADG_CANVAS_H__ +#define __ADG_CANVAS_H__ + + +G_BEGIN_DECLS + +#define ADG_TYPE_CANVAS (adg_canvas_get_type()) +#define ADG_CANVAS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), ADG_TYPE_CANVAS, AdgCanvas)) +#define ADG_CANVAS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), ADG_TYPE_CANVAS, AdgCanvasClass)) +#define ADG_IS_CANVAS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), ADG_TYPE_CANVAS)) +#define ADG_IS_CANVAS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), ADG_TYPE_CANVAS)) +#define ADG_CANVAS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), ADG_TYPE_CANVAS, AdgCanvasClass)) + +#if 0 +/* AdgCanvas declared in adg-entity.h */ +typedef struct _AdgCanvas AdgCanvas; +#endif +typedef struct _AdgCanvasClass AdgCanvasClass; + + +struct _AdgCanvas { + /*< private >*/ + AdgContainer parent; + gpointer data; +}; + +struct _AdgCanvasClass { + /*< private >*/ + AdgContainerClass parent_class; +}; + + +GType adg_canvas_get_type (void) G_GNUC_CONST; + +AdgCanvas * adg_canvas_new (void); +void adg_canvas_set_size (AdgCanvas *canvas, + const AdgPair *size); +void adg_canvas_set_size_explicit (AdgCanvas *canvas, + gdouble x, + gdouble y); +const AdgPair * adg_canvas_get_size (AdgCanvas *canvas); +void adg_canvas_set_background_dress (AdgCanvas *canvas, + AdgDress dress); +AdgDress adg_canvas_get_background_dress (AdgCanvas *canvas); +void adg_canvas_set_frame_dress (AdgCanvas *canvas, + AdgDress dress); +AdgDress adg_canvas_get_frame_dress (AdgCanvas *canvas); +void adg_canvas_set_title_block (AdgCanvas *canvas, + AdgTitleBlock *title_block); +AdgTitleBlock * adg_canvas_get_title_block (AdgCanvas *canvas); +void adg_canvas_set_top_margin (AdgCanvas *canvas, + gdouble value); +gdouble adg_canvas_get_top_margin (AdgCanvas *canvas); +void adg_canvas_set_right_margin (AdgCanvas *canvas, + gdouble value); +gdouble adg_canvas_get_right_margin (AdgCanvas *canvas); +void adg_canvas_set_bottom_margin (AdgCanvas *canvas, + gdouble value); +gdouble adg_canvas_get_bottom_margin (AdgCanvas *canvas); +void adg_canvas_set_left_margin (AdgCanvas *canvas, + gdouble value); +gdouble adg_canvas_get_left_margin (AdgCanvas *canvas); +void adg_canvas_set_margins (AdgCanvas *canvas, + gdouble top, + gdouble right, + gdouble bottom, + gdouble left); +void adg_canvas_apply_margins (AdgCanvas *canvas, + CpmlExtents *extents); +void adg_canvas_switch_frame (AdgCanvas *canvas, + gboolean new_state); +gboolean adg_canvas_has_frame (AdgCanvas *canvas); +void adg_canvas_set_top_padding (AdgCanvas *canvas, + gdouble value); +gdouble adg_canvas_get_top_padding (AdgCanvas *canvas); +void adg_canvas_set_right_padding (AdgCanvas *canvas, + gdouble value); +gdouble adg_canvas_get_right_padding (AdgCanvas *canvas); +void adg_canvas_set_bottom_padding (AdgCanvas *canvas, + gdouble value); +gdouble adg_canvas_get_bottom_padding (AdgCanvas *canvas); +void adg_canvas_set_left_padding (AdgCanvas *canvas, + gdouble value); +gdouble adg_canvas_get_left_padding (AdgCanvas *canvas); +void adg_canvas_set_paddings (AdgCanvas *canvas, + gdouble top, + gdouble right, + gdouble bottom, + gdouble left); + +void adg_canvas_set_paper (AdgCanvas *canvas, + const gchar *paper_name, + GtkPageOrientation orientation); +void adg_canvas_set_page_setup (AdgCanvas *canvas, + GtkPageSetup *page_setup); + + +G_END_DECLS + + +#endif /* __ADG_CANVAS_H__ */ diff --git a/src/adg/adg-entity.c b/src/adg/adg-entity.c index 2ee187bb..420fcd74 100644 --- a/src/adg/adg-entity.c +++ b/src/adg/adg-entity.c @@ -71,7 +71,7 @@ #include "adg-internal.h" -#if GTK2_ENABLED +#if GTK3_ENABLED || GTK2_ENABLED #include #endif diff --git a/src/adg/adg-gtk-area.c b/src/adg/adg-gtk-area-gtk2.c similarity index 100% copy from src/adg/adg-gtk-area.c copy to src/adg/adg-gtk-area-gtk2.c diff --git a/src/adg/adg-gtk-area.c b/src/adg/adg-gtk-area.c index ae774824..d5a93749 100644 --- a/src/adg/adg-gtk-area.c +++ b/src/adg/adg-gtk-area.c @@ -93,40 +93,54 @@ enum { }; -static void _adg_dispose (GObject *object); -static void _adg_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static void _adg_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void _adg_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void _adg_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static gboolean _adg_expose_event (GtkWidget *widget, - GdkEventExpose *event); -static gboolean _adg_scroll_event (GtkWidget *widget, - GdkEventScroll *event); -static gboolean _adg_button_press_event (GtkWidget *widget, +static void _adg_dispose (GObject *object); +static void _adg_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void _adg_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void _adg_get_preferred_height (GtkWidget *widget, + gint *minimum_height, + gint *natural_height); +static void _adg_get_preferred_height_for_width + (GtkWidget *widget, + gint width, + gint *minimum_height, + gint *natural_height); +static void _adg_get_preferred_width (GtkWidget *widget, + gint *minimum_width, + gint *natural_width); +static void _adg_get_preferred_width_for_height + (GtkWidget *widget, + gint height, + gint *minimum_width, + gint *natural_width); +static void _adg_size_allocate (GtkWidget *widget, + GtkAllocation *allocation); +static gboolean _adg_draw (GtkWidget *widget, + cairo_t *cr); +static gboolean _adg_scroll_event (GtkWidget *widget, + GdkEventScroll *event); +static gboolean _adg_button_press_event (GtkWidget *widget, GdkEventButton *event); -static gboolean _adg_motion_notify_event(GtkWidget *widget, - GdkEventMotion *event); -static gboolean _adg_get_map (GtkWidget *widget, - gboolean local_space, - AdgMatrix *map, - AdgMatrix *inverted); -static void _adg_set_map (GtkWidget *widget, - gboolean local_space, - const AdgMatrix *map); -static void _adg_canvas_changed (AdgGtkArea *area, - AdgCanvas *old_canvas); +static gboolean _adg_motion_notify_event (GtkWidget *widget, + GdkEventMotion *event); +static gboolean _adg_get_map (GtkWidget *widget, + gboolean local_space, + AdgMatrix *map, + AdgMatrix *inverted); +static void _adg_set_map (GtkWidget *widget, + gboolean local_space, + const AdgMatrix *map); +static void _adg_canvas_changed (AdgGtkArea *area, + AdgCanvas *old_canvas); static const CpmlExtents * - _adg_get_extents (AdgGtkArea *area); + _adg_get_extents (AdgGtkArea *area); -static guint _adg_signals[LAST_SIGNAL] = { 0 }; +static guint _adg_signals[LAST_SIGNAL] = { 0 }; static void @@ -145,9 +159,12 @@ adg_gtk_area_class_init(AdgGtkAreaClass *klass) gobject_class->get_property = _adg_get_property; gobject_class->set_property = _adg_set_property; - widget_class->size_request = _adg_size_request; + widget_class->get_preferred_height = _adg_get_preferred_height; + widget_class->get_preferred_height_for_width = _adg_get_preferred_height_for_width; + widget_class->get_preferred_width = _adg_get_preferred_width; + widget_class->get_preferred_width_for_height = _adg_get_preferred_width_for_height; widget_class->size_allocate = _adg_size_allocate; - widget_class->expose_event = _adg_expose_event; + widget_class->draw = _adg_draw; widget_class->scroll_event = _adg_scroll_event; widget_class->button_press_event = _adg_button_press_event; widget_class->motion_notify_event = _adg_motion_notify_event; @@ -667,7 +684,8 @@ adg_gtk_area_extents_changed(AdgGtkArea *area, const CpmlExtents *old_extents) static void -_adg_size_request(GtkWidget *widget, GtkRequisition *requisition) +_adg_get_preferred_height(GtkWidget *widget, + gint *minimum_height, gint *natural_height) { AdgGtkArea *area; const CpmlExtents *extents; @@ -676,8 +694,56 @@ _adg_size_request(GtkWidget *widget, GtkRequisition *requisition) extents = _adg_get_extents(area); if (extents->is_defined) { - requisition->width = extents->size.x; - requisition->height = extents->size.y; + *minimum_height = extents->size.y; + *natural_height = *minimum_height; + } +} + +static void +_adg_get_preferred_height_for_width(GtkWidget *widget, gint width, + gint *minimum_height, gint *natural_height) +{ + AdgGtkArea *area; + const CpmlExtents *extents; + + area = (AdgGtkArea *) widget; + extents = _adg_get_extents(area); + + if (extents->is_defined && extents->size.x > 0) { + *minimum_height = extents->size.y; + *natural_height = *minimum_height * width / extents->size.x; + } +} + +static void +_adg_get_preferred_width(GtkWidget *widget, + gint *minimum_width, gint *natural_width) +{ + AdgGtkArea *area; + const CpmlExtents *extents; + + area = (AdgGtkArea *) widget; + extents = _adg_get_extents(area); + + if (extents->is_defined) { + *minimum_width = extents->size.x; + *natural_width = *minimum_width; + } +} + +static void +_adg_get_preferred_width_for_height(GtkWidget *widget, gint height, + gint *minimum_width, gint *natural_width) +{ + AdgGtkArea *area; + const CpmlExtents *extents; + + area = (AdgGtkArea *) widget; + extents = _adg_get_extents(area); + + if (extents->is_defined && extents->size.y > 0) { + *minimum_width = extents->size.x; + *natural_width = *minimum_width * height / extents->size.y; } } @@ -746,7 +812,7 @@ _adg_size_allocate(GtkWidget *widget, GtkAllocation *allocation) } static gboolean -_adg_expose_event(GtkWidget *widget, GdkEventExpose *event) +_adg_draw(GtkWidget *widget, cairo_t *cr) { AdgGtkAreaPrivate *data; AdgCanvas *canvas; @@ -754,17 +820,12 @@ _adg_expose_event(GtkWidget *widget, GdkEventExpose *event) data = ((AdgGtkArea *) widget)->data; canvas = data->canvas; - if (canvas != NULL && event->window != NULL) { - cairo_t *cr = gdk_cairo_create(event->window); + if (canvas != NULL) { cairo_transform(cr, &data->render_map); adg_entity_render((AdgEntity *) canvas, cr); - cairo_destroy(cr); } - if (_ADG_OLD_WIDGET_CLASS->expose_event == NULL) - return FALSE; - - return _ADG_OLD_WIDGET_CLASS->expose_event(widget, event); + return FALSE; } static gboolean diff --git a/src/adg/adg-gtk-layout.c b/src/adg/adg-gtk-layout-gtk2.c similarity index 100% copy from src/adg/adg-gtk-layout.c copy to src/adg/adg-gtk-layout-gtk2.c diff --git a/src/adg/adg-gtk-layout.c b/src/adg/adg-gtk-layout.c index 01f0af94..9786d023 100644 --- a/src/adg/adg-gtk-layout.c +++ b/src/adg/adg-gtk-layout.c @@ -57,12 +57,15 @@ #define _ADG_OLD_AREA_CLASS ((AdgGtkAreaClass *) adg_gtk_layout_parent_class) -G_DEFINE_TYPE(AdgGtkLayout, adg_gtk_layout, ADG_GTK_TYPE_AREA) +G_DEFINE_TYPE_WITH_CODE(AdgGtkLayout, adg_gtk_layout, ADG_GTK_TYPE_AREA, + G_IMPLEMENT_INTERFACE(GTK_TYPE_SCROLLABLE, NULL)) enum { PROP_0, PROP_HADJUSTMENT, - PROP_VADJUSTMENT + PROP_HSCROLL_POLICY, + PROP_VADJUSTMENT, + PROP_VSCROLL_POLICY }; @@ -75,9 +78,6 @@ static void _adg_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); -static void _adg_set_scroll_adjustments (GtkWidget *widget, - GtkAdjustment *hadjustment, - GtkAdjustment *vadjustment); static void _adg_parent_set (GtkWidget *widget, GtkWidget *old_parent); static void _adg_size_allocate (GtkWidget *widget, @@ -100,9 +100,6 @@ adg_gtk_layout_class_init(AdgGtkLayoutClass *klass) GObjectClass *gobject_class; GtkWidgetClass *widget_class; AdgGtkAreaClass *area_class; - GParamSpec *param; - GClosure *closure; - GType param_types[2]; gobject_class = (GObjectClass *) klass; widget_class = (GtkWidgetClass *) klass; @@ -120,37 +117,14 @@ adg_gtk_layout_class_init(AdgGtkLayoutClass *klass) area_class->canvas_changed = _adg_canvas_changed; area_class->extents_changed = _adg_extents_changed; - param = g_param_spec_object("hadjustment", - P_("Horizontal adjustment"), - P_("The GtkAdjustment that determines the values of the horizontal position for this viewport"), - GTK_TYPE_ADJUSTMENT, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT); - g_object_class_install_property(gobject_class, PROP_HADJUSTMENT, param); - - param = g_param_spec_object("vadjustment", - P_("Vertical adjustment"), - P_("The GtkAdjustment that determines the values of the vertical position for this viewport"), - GTK_TYPE_ADJUSTMENT, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT); - g_object_class_install_property(gobject_class, PROP_VADJUSTMENT, param); - - /** - * AdgGtkLayout::set-scroll-adjustments: - * @layout: an #AdgGtkLayout - * @old_canvas: the old #AdgCanvas object - * - * Emitted when the #AdgGtkLayout scroll adjustments have been set. - * - * Since: 1.0 - **/ - closure = g_cclosure_new(G_CALLBACK(_adg_set_scroll_adjustments), NULL, NULL); - param_types[0] = GTK_TYPE_ADJUSTMENT; - param_types[1] = GTK_TYPE_ADJUSTMENT; - widget_class->set_scroll_adjustments_signal = - g_signal_newv("set-scroll-adjustments", ADG_GTK_TYPE_LAYOUT, - G_SIGNAL_RUN_LAST, closure, NULL, NULL, - adg_marshal_VOID__OBJECT_OBJECT, - G_TYPE_NONE, 2, param_types); + g_object_class_override_property (gobject_class, PROP_HADJUSTMENT, + "hadjustment"); + g_object_class_override_property (gobject_class, PROP_HSCROLL_POLICY, + "hscroll-policy"); + g_object_class_override_property (gobject_class, PROP_VADJUSTMENT, + "vadjustment"); + g_object_class_override_property (gobject_class, PROP_VSCROLL_POLICY, + "vscroll-policy"); } static void @@ -197,9 +171,15 @@ _adg_get_property(GObject *object, guint prop_id, case PROP_HADJUSTMENT: g_value_set_object(value, data->hadjustment); break; + case PROP_HSCROLL_POLICY: + g_value_set_enum(value, data->hpolicy); + break; case PROP_VADJUSTMENT: g_value_set_object(value, data->vadjustment); break; + case PROP_VSCROLL_POLICY: + g_value_set_enum(value, data->vpolicy); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -225,6 +205,9 @@ _adg_set_property(GObject *object, guint prop_id, _adg_set_adjustment(layout, &data->hadjustment, adjustment); break; + case PROP_HSCROLL_POLICY: + data->hpolicy = g_value_get_enum(value); + break; case PROP_VADJUSTMENT: adjustment = g_value_get_object(value); if (adjustment == NULL) @@ -232,6 +215,9 @@ _adg_set_property(GObject *object, guint prop_id, _adg_set_adjustment(layout, &data->vadjustment, adjustment); break; + case PROP_VSCROLL_POLICY: + data->vpolicy = g_value_get_enum(value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -369,17 +355,6 @@ adg_gtk_layout_get_vadjustment(AdgGtkLayout *layout) static void -_adg_set_scroll_adjustments(GtkWidget *widget, - GtkAdjustment *hadjustment, - GtkAdjustment *vadjustment) -{ - g_object_set(widget, - "hadjustment", hadjustment, - "vadjustment", vadjustment, - NULL); -} - -static void _adg_parent_set(GtkWidget *widget, GtkWidget *old_parent) { AdgGtkLayout *layout = (AdgGtkLayout *) widget; @@ -445,17 +420,20 @@ _adg_extents_changed(AdgGtkArea *area, const CpmlExtents *old_extents) static void _adg_set_parent_size(AdgGtkLayout *layout) { + GtkWidget *widget; AdgGtkLayoutPrivate *data; GtkWidget *parent; const CpmlExtents *sheet; GtkScrolledWindow *scrolled_window; + widget = (GtkWidget *) layout; + /* When the widget is realized it is too late to suggest a size */ - if (GTK_WIDGET_REALIZED(layout)) + if (gtk_widget_get_realized(widget)) return; data = layout->data; - parent = gtk_widget_get_parent((GtkWidget *) layout); + parent = gtk_widget_get_parent(widget); if (!GTK_IS_WIDGET(parent)) return; @@ -572,12 +550,15 @@ _adg_update_adjustments(AdgGtkLayout *layout) static void _adg_value_changed(AdgGtkLayout *layout) { + GtkWidget *widget; AdgGtkArea *area; AdgGtkLayoutPrivate *data; AdgPair org; AdgMatrix map; - if (!GTK_WIDGET_REALIZED(layout)) + widget = (GtkWidget *) layout; + + if (!gtk_widget_get_realized(widget)) return; area = (AdgGtkArea *) layout; @@ -589,6 +570,6 @@ _adg_value_changed(AdgGtkLayout *layout) data->viewport.org.y - org.y); adg_gtk_area_transform_render_map(area, &map, ADG_TRANSFORM_BEFORE); - gtk_widget_queue_draw((GtkWidget *) layout); + gtk_widget_queue_draw(widget); _adg_update_adjustments(layout); } diff --git a/src/adg/tests/Makefile.am b/src/adg/tests/Makefile.am index b4c7d09d..3a264c81 100644 --- a/src/adg/tests/Makefile.am +++ b/src/adg/tests/Makefile.am @@ -125,15 +125,17 @@ AM_CFLAGS+= $(PANGO_CFLAGS) AM_LDFLAGS+= $(PANGO_LIBS) endif -if HAVE_GTK2 +if HAVE_GTK TEST_PROGS+= test-gtk-area$(EXEEXT) test_gtk_area_SOURCES= test-gtk-area.c \ $(test_internals) TEST_PROGS+= test-gtk-layout$(EXEEXT) test_gtk_layout_SOURCES= test-gtk-layout.c \ $(test_internals) -AM_CFLAGS+= $(GTK2_CFLAGS) -AM_LDFLAGS+= $(GTK2_LIBS) +AM_CFLAGS+= $(GTK3_CFLAGS) \ + $(GTK2_CFLAGS) +AM_LDFLAGS+= $(GTK3_LIBS) \ + $(GTK2_LIBS) endif endif -- 2.11.4.GIT