diff --git a/configure.ac b/configure.ac index efb8cf6..d84a330 100644 --- a/configure.ac +++ b/configure.ac @@ -308,7 +308,7 @@ AC_CHECK_FUNCS(getaddrinfo, AC_DEFINE(HAVE_GETADDRINFO) ) PKG_CHECK_EXISTS -PKG_CHECK_MODULES( [GTK], [gtk+-3.0 gmodule-2.0], [ GTK_VERSION="3.0" ], [ PKG_CHECK_MODULES( [GTK], [gtk+-2.0 >= 2.16 gthread-2.0 gmodule-2.0], [ GTK_VERSION="2.0" ] ) ], [ ] ) +PKG_CHECK_MODULES( [GTK], [gtk+-3.0 gmodule-2.0], [ GTK_VERSION="3.0" ], [ PKG_CHECK_MODULES( [GTK], [gtk+-2.0 >= 2.14 gthread-2.0 gmodule-2.0], [ GTK_VERSION="2.0" ] ) ], [ ] ) AC_SUBST(GTK_LIBS) AC_SUBST(GTK_CFLAGS) diff --git a/src/pw3270/actions.c b/src/pw3270/actions.c index 37639ad..8f22f69 100644 --- a/src/pw3270/actions.c +++ b/src/pw3270/actions.c @@ -492,7 +492,31 @@ static GtkAction * new_action(const gchar *name, const gchar **names, const gcha } return action; #else - return gtk_action_new(nm,NULL,NULL,NULL); + return gtk_action_new(name,NULL,NULL,NULL); +#endif // GTK(2,16) +} + +static GtkAction * new_toggle(const gchar *name, const gchar **names, const gchar **values) +{ +#if GTK_CHECK_VERSION(2,16,0) + const gchar *label = ui_get_attribute("label",names,values); + const gchar *tooltip = ui_get_attribute("tooltip",names,values); + const gchar *id = ui_get_attribute("label",names,values); + GtkAction *action = NULL; + + if(id) + { + gchar * stock = g_strconcat("gtk-",id,NULL); + action = gtk_toggle_action_new(name,label,tooltip,stock); + g_free(stock); + } + else + { + action = gtk_toggle_action_new(name,label,tooltip,NULL); + } + return GTK_ACTION(action); +#else + return GTK_ACTION(gtk_toggle_action_new(name,NULL,NULL,NULL)); #endif // GTK(2,16) } @@ -752,7 +776,7 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash break; case ACTION_TYPE_TOGGLE: - action = GTK_ACTION(gtk_toggle_action_new(nm,NULL,NULL,NULL)); + action = new_toggle(nm,names,values); if(id < LIB3270_TOGGLE_COUNT) toggle_action[id] = action; g_object_set_data(G_OBJECT(action),"toggle_id",GINT_TO_POINTER(id)); diff --git a/src/pw3270/fonts.c b/src/pw3270/fonts.c index 9b1cd4c..fee932d 100644 --- a/src/pw3270/fonts.c +++ b/src/pw3270/fonts.c @@ -40,7 +40,11 @@ { if(!gtk_check_menu_item_get_active(item)) return; +#if GTK_CHECK_VERSION(2,16,0) v3270_set_font_family(widget,gtk_menu_item_get_label(GTK_MENU_ITEM(item))); +#else + v3270_set_font_family(widget,g_object_get_data(G_OBJECT(item),"fontfamily")); +#endif // GTK(2,16,0) } static void load_system_monospaced_fonts(GtkWidget *topmenu, GtkWidget *menu, GtkWidget *obj) @@ -62,6 +66,10 @@ group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(item)); +#if ! GTK_CHECK_VERSION(2,16,0) + g_object_set_data_full(G_OBJECT(item),"fontfamily",g_strdup(name),g_free); +#endif // !GTK(2,16,0) + g_signal_connect(G_OBJECT(item),"toggled",G_CALLBACK(activate_font),obj); gtk_widget_show(item); diff --git a/src/pw3270/uiparser/parser.c b/src/pw3270/uiparser/parser.c index 04a0f3b..00836f1 100644 --- a/src/pw3270/uiparser/parser.c +++ b/src/pw3270/uiparser/parser.c @@ -153,11 +153,15 @@ static void action_group_setup(gpointer key, GtkAction *action, struct action_in } // Update proxy widgets +#if GTK_CHECK_VERSION(2,16,0) while(child) { gtk_activatable_sync_action_properties(GTK_ACTIVATABLE(child->data),action); child = child->next; } +#else + +#endif // GTK(2,16,0) } -- libgit2 0.21.2