diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2019-09-20 15:24:10 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2019-09-20 15:26:21 +0200 |
commit | 1f34706f0b55ddabe3f2486904fd35fc94c67717 (patch) | |
tree | bf43bb5a10e623e7f7275f3a426858f970e52ca2 | |
parent | 31c0d3c6b8db22ba464024be7e7cbe31da983a29 (diff) | |
parent | df7f1f5bd32290b7798d93018e5cb1d094d676f0 (diff) | |
download | network-manager-applet-1f34706f0b55ddabe3f2486904fd35fc94c67717.tar.gz |
merge: branch 'lr/gtk4'
Uh, huh, let's see how well this flies.
https://gitlab.gnome.org/GNOME/network-manager-applet/merge_requests/38
40 files changed, 760 insertions, 204 deletions
@@ -95,17 +95,26 @@ src/connection-editor/nm-connection-editor-service-glue.h src/connection-editor/ce-resources.c src/connection-editor/ce-resources.h src/libnma/libnma.pc +src/libnma/libnma-gtk4.pc src/libnma/NMA-1.0.gir src/libnma/NMA-1.0.typelib +src/libnma/NMA4-1.0.gir +src/libnma/NMA4-1.0.typelib src/libnma/nma-resources.c src/libnma/nma-resources.h src/libnma/nma-version.h src/libnma/tests/cert-chooser +src/libnma/tests/cert-chooser-gtk4 src/libnma/tests/mobile-wizard +src/libnma/tests/mobile-wizard-gtk4 src/libnma/tests/run-vpn +src/libnma/tests/run-vpn-gtk4 src/libnma/tests/vpn-password-dialog +src/libnma/tests/vpn-password-dialog-gtk4 src/libnma/tests/wifi-dialog +src/libnma/tests/wifi-dialog-gtk4 src/libnma/tests/wifi-dialog-secrets +src/libnma/tests/wifi-dialog-secrets-gtk4 src/libnm-gtk/libnm-gtk.pc src/libnm-gtk/NMGtk-1.0.gir src/libnm-gtk/NMGtk-1.0.typelib diff --git a/Makefile.am b/Makefile.am index c863e8d4..bce4be42 100644 --- a/Makefile.am +++ b/Makefile.am @@ -216,6 +216,26 @@ src_utils_libutils_libnm_glib_la_LIBADD = \ endif +if WITH_LIBNMA_GTK4 + +noinst_LTLIBRARIES += src/utils/libutils-libnm-gtk4.la + +src_utils_libutils_libnm_gtk4_la_CPPFLAGS = \ + "-I$(srcdir)/shared" \ + $(GTK4_CFLAGS) \ + $(LIBNM_CFLAGS) + +src_utils_libutils_libnm_gtk4_la_SOURCES = \ + $(shared_files) \ + src/utils/utils.c \ + src/utils/utils.h + +src_utils_libutils_libnm_gtk4_la_LIBADD = \ + $(GTK4_LIBS) \ + $(LIBNM_LIBS) + +endif + check_programs += src/utils/tests/test-utils src_utils_tests_test_utils_SOURCES = src/utils/tests/test-utils.c @@ -336,6 +356,33 @@ $(src_wireless_security_libwireless_security_libnm_glib_la_OBJECTS): $(wireless_ endif +if WITH_LIBNMA_GTK4 + +noinst_LTLIBRARIES += src/wireless-security/libwireless-security-libnm-gtk4.la + +src_wireless_security_libwireless_security_libnm_gtk4_la_SOURCES = \ + $(wireless_security_c_real) + +nodist_src_wireless_security_libwireless_security_libnm_gtk4_la_SOURCES = \ + $(wireless_security_c_gen) + +src_wireless_security_libwireless_security_libnm_gtk4_la_CPPFLAGS = \ + "-I$(srcdir)/shared" \ + "-I$(srcdir)/src/utils" \ + "-I$(srcdir)/src/libnma" \ + -Isrc/libnma \ + $(GTK4_CFLAGS) \ + $(LIBNM_CFLAGS) + +src_wireless_security_libwireless_security_libnm_gtk4_la_LIBADD = \ + src/utils/libutils-libnm-gtk4.la \ + $(GTK4_LIBS) \ + $(LIBNM_LIBS) + +$(src_wireless_security_libwireless_security_libnm_gtk4_la_OBJECTS): $(wireless_security_h_gen) + +endif + EXTRA_DIST += \ src/wireless-security/eap-method-fast.ui \ src/wireless-security/eap-method-leap.ui \ @@ -498,9 +545,19 @@ src/libnma/nma-resources.h: src/libnma/nma.gresource.xml src/libnma/nma-resources.c: src/libnma/nma.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/src/libnma --generate-dependencies $(srcdir)/src/libnma/nma.gresource.xml) $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $< --target=$@ --sourcedir=$(srcdir)/src/libnma --generate-source --internal +src/libnma-gtk4/nma-resources.c: src/libnma/nma.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies $(srcdir)/src/libnma/nma.gresource.xml |sed "s,^,$(builddir)/src/libnma-gtk4/,") + @mkdir -p $(builddir)/src/libnma-gtk4 + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $< --target=$@ --sourcedir=$(builddir)/src/libnma-gtk4 --generate-source --internal + + +src/libnma-gtk4/%.ui: src/libnma/%.ui + @mkdir -p $(builddir)/src/libnma-gtk4 + gtk4-builder-tool simplify --3to4 $< >$@ + CLEANFILES += \ $(libnma_h_priv_gen) \ - $(libnma_c_gen) + $(libnma_c_gen) \ + $(libnma_gtk4_c_gen) libnma_h_priv_gen = \ src/libnma/nma-resources.h @@ -508,6 +565,9 @@ libnma_h_priv_gen = \ libnma_c_gen = \ src/libnma/nma-resources.c +libnma_gtk4_c_gen = \ + src/libnma-gtk4/nma-resources.c + libnma_h_pub = \ src/libnma/nma-version.h \ src/libnma/nma-wifi-dialog.h \ @@ -536,7 +596,8 @@ EXTRA_DIST += \ src/libnma/qrcodegen.h libnma_h_priv_real = \ - src/libnma/nma-cert-chooser-private.h + src/libnma/nma-cert-chooser-private.h \ + src/libnma/nma-private.h libnma_h_priv_gcr = \ src/libnma/nma-pkcs11-token-login-dialog.h \ @@ -742,9 +803,222 @@ src_libnma_tests_bar_code_LDADD = \ $(LIBNM_LIBS) \ src/libnma/libnma.la +if WITH_LIBNMA_GTK4 + +lib_LTLIBRARIES += src/libnma/libnma-gtk4.la + +src_libnma_libnma_gtk4_la_SOURCES = \ + $(libnma_h_priv_real) \ + $(libnma_c_real) + +if WITH_GCR_GTK4 +src_libnma_libnma_gtk4_la_SOURCES += \ + $(libnma_h_priv_gcr) \ + $(libnma_c_gcr) +endif + +nodist_src_libnma_libnma_gtk4_la_SOURCES = \ + $(libnma_h_priv_gen) \ + $(libnma_gtk4_c_gen) + +src_libnma_libnma_gtk4_la_CFLAGS = \ + -DICONDIR=\""$(datadir)/icons"\" \ + -DBINDIR=\""$(bindir)"\" \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -DLIBEXECDIR=\""$(libexecdir)"\" \ + -DDATADIR=\""$(datadir)"\" \ + -DAUTOSTARTDIR=\""$(sysconfdir)/xdg/autostart"\" \ + -DNMALOCALEDIR=\"$(datadir)/locale\" \ + -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_LIB \ + "-I$(srcdir)/shared" \ + "-I$(srcdir)/src/utils" \ + "-I$(srcdir)/src/wireless-security" \ + "-I$(srcdir)/src/libnma" \ + -Isrc/libnma \ + $(GTK4_CFLAGS) \ + $(LIBNM_CFLAGS) \ + $(GUDEV_CFLAGS) \ + $(GCR_GCR4_CFLAGS) + +src_libnma_libnma_gtk4_la_LIBADD = \ + src/wireless-security/libwireless-security-libnm-gtk4.la \ + $(GTK4_LIBS) \ + $(LIBNM_LIBS) \ + $(GUDEV_LIBS) \ + $(GCR_GCR4_LIBS) + +EXTRA_src_libnma_libnma_gtk4_la_DEPENDENCIES = src/libnma/libnma.ver + +src_libnma_libnma_gtk4_la_LDFLAGS = \ + -Wl,-no-undefined \ + -Wl,--version-script=$(srcdir)/src/libnma/libnma.ver + + +pkgconfig_DATA += src/libnma/libnma-gtk4.pc + +if HAVE_INTROSPECTION +src/libnma/NMA4-1.0.gir: src/libnma/libnma-gtk4.la +src_libnma_NMA4_1_0_gir_INCLUDES = NM-1.0 Gtk-4.0 +src_libnma_NMA4_1_0_gir_EXPORT_PACKAGES = libnma-gtk4 +src_libnma_NMA4_1_0_gir_CFLAGS = $(src_libnma_libnma_gtk4_la_CFLAGS) +src_libnma_NMA4_1_0_gir_LIBS = src/libnma/libnma-gtk4.la +src_libnma_NMA4_1_0_gir_FILES = \ + $(libnma_h_pub) \ + $(libnma_c_real) +if WITH_GCR_GTK4 +src_libnma_NMA4_1_0_gir_FILES += \ + $(libnma_c_gcr) +endif +src_libnma_NMA4_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=NMA --symbol-prefix=nma +INTROSPECTION_GIRS += src/libnma/NMA4-1.0.gir +endif + +check_PROGRAMS_norun += src/libnma/tests/mobile-wizard-gtk4 + +src_libnma_tests_mobile_wizard_gtk4_SOURCES = \ + src/libnma/tests/mobile-wizard.c + +src_libnma_tests_mobile_wizard_gtk4_CPPFLAGS = \ + $(dflt_cppflags) \ + $(GLIB_CFLAGS) \ + $(GTK4_CFLAGS) \ + $(LIBNM_CFLAGS) \ + "-I$(srcdir)/shared/" \ + "-I$(srcdir)/src/libnma" \ + -Isrc/libnma + +src_libnma_tests_mobile_wizard_gtk4_LDADD = \ + $(GLIB_LIBS) \ + $(GTK4_LIBS) \ + $(LIBNM_LIBS) \ + src/libnma/libnma-gtk4.la + +check_PROGRAMS_norun += src/libnma/tests/vpn-password-dialog-gtk4 + +src_libnma_tests_vpn_password_dialog_gtk4_SOURCES = \ + src/libnma/tests/vpn-password-dialog.c + +src_libnma_tests_vpn_password_dialog_gtk4_CPPFLAGS = \ + $(dflt_cppflags) \ + $(GLIB_CFLAGS) \ + $(GTK4_CFLAGS) \ + $(LIBNM_CFLAGS) \ + "-I$(srcdir)/shared/" \ + "-I$(srcdir)/src/libnma" \ + -Isrc/libnma + +src_libnma_tests_vpn_password_dialog_gtk4_LDADD = \ + $(GLIB_LIBS) \ + $(GTK4_LIBS) \ + $(LIBNM_LIBS) \ + src/libnma/libnma-gtk4.la + +check_PROGRAMS_norun += src/libnma/tests/wifi-dialog-gtk4 + +src_libnma_tests_wifi_dialog_gtk4_SOURCES = \ + src/libnma/tests/wifi-dialog.c + +src_libnma_tests_wifi_dialog_gtk4_CPPFLAGS = \ + $(dflt_cppflags) \ + $(GLIB_CFLAGS) \ + $(GTK4_CFLAGS) \ + $(LIBNM_CFLAGS) \ + "-I$(srcdir)/shared/" \ + "-I$(srcdir)/src/libnma" \ + -Isrc/libnma + +src_libnma_tests_wifi_dialog_gtk4_LDADD = \ + $(GLIB_LIBS) \ + $(GTK4_LIBS) \ + $(LIBNM_LIBS) \ + src/libnma/libnma-gtk4.la + +check_PROGRAMS_norun += src/libnma/tests/wifi-dialog-secrets-gtk4 + +src_libnma_tests_wifi_dialog_secrets_gtk4_SOURCES = \ + src/libnma/tests/wifi-dialog-secrets.c + +src_libnma_tests_wifi_dialog_secrets_gtk4_CPPFLAGS = \ + $(dflt_cppflags) \ + $(GLIB_CFLAGS) \ + $(GTK4_CFLAGS) \ + $(LIBNM_CFLAGS) \ + "-I$(srcdir)/shared/" \ + "-I$(srcdir)/src/libnma" \ + -Isrc/libnma + +src_libnma_tests_wifi_dialog_secrets_gtk4_LDADD = \ + $(GLIB_LIBS) \ + $(GTK4_LIBS) \ + $(LIBNM_LIBS) \ + src/libnma/libnma-gtk4.la + +check_PROGRAMS_norun += src/libnma/tests/run-vpn-gtk4 + +src_libnma_tests_run_vpn_gtk4_SOURCES = \ + src/libnma/tests/run-vpn.c + +src_libnma_tests_run_vpn_gtk4_CPPFLAGS = \ + $(dflt_cppflags) \ + $(GLIB_CFLAGS) \ + $(GTK4_CFLAGS) \ + $(LIBNM_CFLAGS) \ + "-I$(srcdir)/shared/" \ + "-I$(srcdir)/src/libnma" \ + -Isrc/libnma + +src_libnma_tests_run_vpn_gtk4_LDADD = \ + $(GLIB_LIBS) \ + $(GTK4_LIBS) \ + $(LIBNM_LIBS) \ + src/libnma/libnma-gtk4.la + +check_PROGRAMS_norun += src/libnma/tests/cert-chooser-gtk4 + +src_libnma_tests_cert_chooser_gtk4_SOURCES = \ + src/libnma/tests/cert-chooser.c + +src_libnma_tests_cert_chooser_gtk4_CPPFLAGS = \ + $(dflt_cppflags) \ + $(GLIB_CFLAGS) \ + $(GTK4_CFLAGS) \ + $(LIBNM_CFLAGS) \ + "-I$(srcdir)/shared/" \ + "-I$(srcdir)/src/libnma" \ + -Isrc/libnma + +src_libnma_tests_cert_chooser_gtk4_LDADD = \ + $(GLIB_LIBS) \ + $(GTK4_LIBS) \ + $(LIBNM_LIBS) \ + src/libnma/libnma-gtk4.la + +check_PROGRAMS_norun += src/libnma/tests/bar-code-gtk4 + +src_libnma_tests_bar_code_gtk4_SOURCES = \ + src/libnma/tests/bar-code.c + +src_libnma_tests_bar_code_gtk4_CPPFLAGS = \ + $(dflt_cppflags) \ + $(GLIB_CFLAGS) \ + $(GTK4_CFLAGS) \ + $(LIBNM_CFLAGS) \ + "-I$(srcdir)/shared/" \ + "-I$(srcdir)/src/libnma" \ + -Isrc/libnma + +src_libnma_tests_bar_code_gtk4_LDADD = \ + $(GLIB_LIBS) \ + $(GTK4_LIBS) \ + $(LIBNM_LIBS) \ + src/libnma/libnma-gtk4.la + +endif + EXTRA_DIST += \ src/libnma/nma-version.h.in \ src/libnma/libnma.pc.in \ + src/libnma/libnma-gtk4.pc.in \ src/libnma/libnma.ver \ src/libnma/wifi.ui \ src/libnma/nma-mobile-wizard.ui \ @@ -1075,6 +1349,7 @@ IGNORE_HFILES = \ nma-resources.h \ nma-version.h \ nma-cert-chooser-private.h \ + nma-private.h \ nma-pkcs11-token-login-dialog.h \ nma-pkcs11-cert-chooser-dialog.h \ nma-cert-chooser-button.h @@ -1,4 +1,12 @@ ======================================================= +network-manager-applet-1.8.24 +Overview of changes since network-manager-applet-1.8.22 +======================================================= + +* Add EXPERIMENTAL libnma-gtk4 library for use with GTK4. + Not recommended for production use. + +======================================================= network-manager-applet-1.8.22 Overview of changes since network-manager-applet-1.8.20 ======================================================= diff --git a/config.h.meson b/config.h.meson index c3ca560e..41246fc0 100644 --- a/config.h.meson +++ b/config.h.meson @@ -50,6 +50,9 @@ /* Define if Gcr is available */ #mesondefine WITH_GCR +/* Define if GTK4 Gcr is available */ +#mesondefine WITH_GCR_GTK4 + /* Define if Jansson is available */ #mesondefine WITH_JANSSON diff --git a/configure.ac b/configure.ac index 4c7fbf90..d5cc23fc 100644 --- a/configure.ac +++ b/configure.ac @@ -165,6 +165,20 @@ PKG_CHECK_MODULES(NOTIFY, [libnotify >= 0.4.3]) PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.10) GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_10 -DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_10" +AC_ARG_WITH(libnma-gtk4, AS_HELP_STRING([--with-libnma-gtk4], [build EXPERIMENTAL libnma-gtk4 library for use with GTK4])) +if test "$with_libnma_gtk4" == yes; then + PKG_CHECK_MODULES(GTK4, gtk4 >= 3.94) + GTK4_CFLAGS="$GTK4_CFLAGS -DGTK_VERSION_MIN_REQUIRED=GTK_VERSION_3_96 -DGTK_VERSION_MAX_ALLOWED=GTK_VERSION_3_96" +else + with_libnma_gtk4=no +fi +AM_CONDITIONAL(WITH_LIBNMA_GTK4, test "$with_libnma_gtk4" != "no") + +# No such thing yet, just same lame duck placeholders. +# it may actually end up being called differently. +AC_DEFINE(WITH_GCR_GTK4, 0, [Define if GTK4 Gcr is available]) +AM_CONDITIONAL(WITH_GCR_GTK4, false) + AC_ARG_WITH([appindicator], AS_HELP_STRING([--with-appindicator=no|yes|auto|ayatana|ubuntu], [Build with lib(ayatana-)appindicator support in addition to xembed systray support.]), [], [with_appindicator=no]) @@ -318,6 +332,15 @@ NM_COMPILER_WARNINGS(CFLAGS, [yes]) NM_LTO NM_LD_GC +# Disable extra compiler warning until GTK4 doesn't trigger it via graphene +# https://github.com/ebassi/graphene/issues/134 +if test "$with_libnma_gtk4" == yes; then + _CFLAGS_SAVED="$CFLAGS" + CFLAGS="$CFLAGS $GTK4_CFLAGS" + NM_COMPILER_WARNING([_CFLAGS], [float-equal], [#include <gtk/gtk.h>]) + CFLAGS="$_CFLAGS_SAVED $_CFLAGS" +fi + AC_ARG_WITH(more-asserts, AS_HELP_STRING([--with-more-asserts=level], [Enable more assertions for debugging (default: 0)]), [more_asserts=${with_more_asserts}], @@ -336,6 +359,7 @@ AC_CONFIG_FILES([ Makefile src/libnm-gtk/libnm-gtk.pc src/libnma/libnma.pc +src/libnma/libnma-gtk4.pc po/Makefile.in man/nm-applet.1 man/nm-connection-editor.1 @@ -346,6 +370,7 @@ AC_OUTPUT echo "" echo " Build legacy library libnm-gtk: --with-libnm-gtk=${with_libnm_gtk}" +echo " Build EXPERIMENTAL libnma-gtk4 library for use with GTK4: --with-libnma-gtk4=${with_libnma_gtk4}" echo " GCR: --with-gcr=$have_gcr" echo " LTO: --enable-lto=$enable_lto" echo " Linker garbage collection: --enable-ld-gc=$enable_ld_gc" diff --git a/meson.build b/meson.build index 75a866ea..2157a4b0 100644 --- a/meson.build +++ b/meson.build @@ -20,7 +20,6 @@ nma_micro_version = version_array[2].to_int() nma_gir_version = '1.0' nma_gir_prefix = 'NMA' -nma_gir_ns = 'NMA' nma_gtk_gir_ns = 'NMGtk' nma_prefix = get_option('prefix') @@ -77,10 +76,21 @@ if enable_ld_gc common_ldflags += test_ldflags endif +enable_libnma_gtk4 = get_option('libnma_gtk4') +if enable_libnma_gtk4 + gtk4_ext_dep = dependency('gtk4', version: '>= 3.96') + gtk4_dep = declare_dependency( + dependencies: gtk4_ext_dep, + compile_args: [ + '-DGTK_VERSION_MIN_REQUIRED=GTK_VERSION_3_96', + '-DGTK_VERSION_MAX_ALLOWED=GTK_VERSION_3_96' + ] + ) +endif + if nma_debug test_cflags = [ '-Wdeclaration-after-statement', - '-Wfloat-equal', '-Wformat=2', '-Wimplicit-fallthrough', '-Winit-self', @@ -100,6 +110,12 @@ if nma_debug '-Wvla', ] + # Disable extra compiler warning until GTK4 doesn't trigger it via graphene + # https://github.com/ebassi/graphene/issues/134 + if not enable_libnma_gtk4 or cc.compiles('#include <gtk/gtk.h>', dependencies: gtk4_ext_dep, args: ['-Werror=float-equal']) + test_cflags += '-Wfloat-equal' + endif + common_flags += cc.get_supported_arguments(test_cflags) endif @@ -206,6 +222,10 @@ if enable_libnm_gtk ) endif +# No such thing yet, just same lame duck placeholders. +# it may actually end up being called differently. +config_h.set10('WITH_GCR_GTK4', false) + enable_appindicator = get_option('appindicator') if enable_appindicator == 'auto' or enable_appindicator == 'yes' appindicator_dep = dependency('ayatana-appindicator3-0.1', required: false) @@ -448,7 +468,8 @@ if enable_gtk_doc 'nma-pkcs11-cert-chooser-dialog.h', 'nma-pkcs11-token-login-dialog.h', 'nma-resources.h', - 'nma-version.h' + 'nma-private.h', + 'nma-version.h', ] private_sources = [ @@ -511,6 +532,7 @@ meson.add_install_script( ) output = '\n Build legacy library libnm-gtk: ' + enable_libnm_gtk.to_string() + '\n' +output += ' Build EXPERIMENTAL library libnm-gtk4 for use with GTK4: ' + enable_libnma_gtk4.to_string() + '\n' output += ' GCR: ' + enable_gcr.to_string() + '\n' output += ' LTO: ' + get_option('b_lto').to_string() + '\n' output += ' Linker garbage collection: ' + enable_ld_gc.to_string() + '\n' diff --git a/meson_options.txt b/meson_options.txt index 5a13c793..eadec332 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,4 +1,5 @@ option('libnm_gtk', type: 'boolean', value: false, description: 'build legacy library libnm-gtk which depends on libnm-glib/libnm-util/dbus-glib') +option('libnma_gtk4', type: 'boolean', value: false, description: 'build EXPERIMENTAL library libnma-gtk4 for use with GTK4') option('appindicator', type: 'string', value: 'no', description: 'Build with lib(ayatana-)appindicator support in addition to xembed systray support (no|yes|auto|ayatana|ubuntu). Default is "no", "yes" is an alias for "auto".') option('wwan', type: 'boolean', value: true, description: 'Enable WWAN support.') option('selinux', type: 'boolean', value: true, description: 'Enable support for adjusting SELinux labels in configuration editor.') diff --git a/src/libnma/libnma-gtk4.pc.in b/src/libnma/libnma-gtk4.pc.in new file mode 100644 index 00000000..a2cf2b49 --- /dev/null +++ b/src/libnma/libnma-gtk4.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +includedir=@includedir@ +libdir=@libdir@ + +Name: libnma +Description: NetworkManager UI utilities (gtk4 version) +Version: @PACKAGE_VERSION@ +Requires: libnm +Cflags: -I${includedir}/libnma +Libs: -L${libdir} -lnma-gtk4 diff --git a/src/libnma/meson.build b/src/libnma/meson.build index d959ec5f..04f4e65e 100644 --- a/src/libnma/meson.build +++ b/src/libnma/meson.build @@ -1,5 +1,3 @@ -lib_name = 'libnma' - cert_chooser_headers = files('nma-cert-chooser.h') cert_chooser_sources = files( @@ -27,11 +25,9 @@ gir_headers = cert_chooser_headers + files( 'nma-wifi-dialog.h' ) -headers = gir_headers + files('nma-cert-chooser-private.h') - install_headers( gir_headers, - subdir: lib_name + subdir: 'libnma' ) gir_sources = [version_header] + cert_chooser_sources + files( @@ -54,7 +50,6 @@ incs = [ ] deps = [ - gtk_dep, gudev_dep, libnm_dep, libutils_libnm_dep, @@ -73,29 +68,24 @@ cflags = [ symbol_map = join_paths(meson.current_source_dir(), 'libnma.ver') +nma_deps = [ deps, gtk_dep ] +nma_sources = [ gir_sources, built_sources ] if enable_gcr - headers += files( - 'nma-cert-chooser-button.h', - 'nma-pkcs11-cert-chooser-dialog.h', - 'nma-pkcs11-token-login-dialog.h' - ) - - gir_sources += files( + nma_sources += files( 'nma-cert-chooser-button.c', 'nma-pkcs11-cert-chooser.c', 'nma-pkcs11-cert-chooser-dialog.c', 'nma-pkcs11-token-login-dialog.c' ) - - deps += gcr_dep + nma_deps += gcr_dep endif libnma = shared_library( 'nma', - sources: gir_sources + built_sources, + sources: nma_sources, version: libversion, include_directories: incs, - dependencies: deps, + dependencies: nma_deps, c_args: cflags, link_args: '-Wl,--version-script,' + symbol_map, link_depends: symbol_map, @@ -109,26 +99,56 @@ libnma_dep = declare_dependency( include_directories: libnma_inc ) +if enable_libnma_gtk4 + libnma_gtk4 = shared_library( + 'nma-gtk4', + sources: gir_sources + built_sources, + version: libversion, + include_directories: incs, + dependencies: [ deps, gtk4_dep ], + c_args: cflags, + link_args: '-Wl,--version-script,' + symbol_map, + link_depends: symbol_map, + link_whole: libwireless_security_libnma_gtk4, + install: true, + install_dir: nma_libdir + ) + + libnma_gtk4_dep = declare_dependency( + link_with: libnma_gtk4, + include_directories: libnma_inc + ) +endif + subdir('tests') pkg.generate( libraries: libnma, version: nma_version, - name: lib_name, + name: 'libnma', description: 'NetworkManager UI utilities (libnm version)', - filebase: lib_name, - subdirs: lib_name, + filebase: 'libnma', + subdirs: 'libnma', requires: 'libnm', variables: 'exec_prefix=' + nma_prefix, install_dir: join_paths(nma_libdir, 'pkgconfig') ) -if enable_introspection - gir_incs = [ - 'Gtk-3.0', - 'NM-1.0' - ] +if enable_libnma_gtk4 + pkg.generate( + libraries: libnma_gtk4, + version: nma_version, + name: 'libnma-gtk4', + description: 'NetworkManager UI utilities (gtk4 version)', + filebase: 'libnma-gtk4', + subdirs: 'libnma', + requires: 'libnm', + variables: 'exec_prefix=' + nma_prefix, + install_dir: join_paths(nma_libdir, 'pkgconfig') + ) +endif +if enable_introspection gir_dir = join_paths(nma_datadir, 'gir-' + nma_gir_version) typelib_dir = join_paths(nma_libdir, 'girepository-' + nma_gir_version) @@ -136,13 +156,29 @@ if enable_introspection libnma, sources: gir_sources + gir_headers, nsversion: nma_gir_version, - namespace: nma_gir_ns, - includes: gir_incs, + namespace: 'NMA', + includes: [ 'Gtk-3.0', 'NM-1.0' ], identifier_prefix: nma_gir_prefix, symbol_prefix: nma_gir_prefix.to_lower(), - export_packages: lib_name, + export_packages: 'libnma', install: true, install_dir_gir: gir_dir, install_dir_typelib: typelib_dir ) + + if enable_libnma_gtk4 + gnome.generate_gir( + libnma, + sources: gir_sources + gir_headers, + nsversion: nma_gir_version, + namespace: 'NMA4', + includes: [ 'Gtk-4.0', 'NM-1.0' ], + identifier_prefix: nma_gir_prefix, + symbol_prefix: nma_gir_prefix.to_lower(), + export_packages: 'libnma', + install: true, + install_dir_gir: gir_dir, + install_dir_typelib: typelib_dir + ) + endif endif diff --git a/src/libnma/nma-cert-chooser.c b/src/libnma/nma-cert-chooser.c index 93d4a76a..82d0e00b 100644 --- a/src/libnma/nma-cert-chooser.c +++ b/src/libnma/nma-cert-chooser.c @@ -597,7 +597,7 @@ constructor (GType type, guint n_construct_properties, GObjectConstructParam *co flags |= g_value_get_uint (construct_properties[i].value); } priv->vtable = &nma_cert_chooser_vtable_file; -#if LIBNM_BUILD && WITH_GCR +#if LIBNM_BUILD && (GTK_CHECK_VERSION(3,90,0) ? WITH_GCR_GTK4 : WITH_GCR) if ((flags & NMA_CERT_CHOOSER_FLAG_PEM) == 0) priv->vtable = &nma_cert_chooser_vtable_pkcs11; #endif diff --git a/src/libnma/nma-file-cert-chooser.c b/src/libnma/nma-file-cert-chooser.c index 1a3e200b..8f24c826 100644 --- a/src/libnma/nma-file-cert-chooser.c +++ b/src/libnma/nma-file-cert-chooser.c @@ -8,6 +8,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include "nma-cert-chooser-private.h" #include "utils.h" #ifdef LIBNM_BUILD @@ -18,13 +19,19 @@ #define NMA_FILE_CERT_CHOOSER_GET_PRIVATE(self) (&(_NM_GET_PRIVATE (self, NMACertChooser, NMA_IS_CERT_CHOOSER)->_sub.file)) +#if GTK_CHECK_VERSION(3,90,0) +#define gtk3_widget_set_no_show_all(widget, show) +#else +#define gtk3_widget_set_no_show_all(widget, show) gtk_widget_set_no_show_all (widget, show); +#endif + static void set_key_password (NMACertChooser *cert_chooser, const gchar *password) { NMAFileCertChooserPrivate *priv = NMA_FILE_CERT_CHOOSER_GET_PRIVATE (cert_chooser); g_return_if_fail (priv->key_password != NULL); - gtk_entry_set_text (GTK_ENTRY (priv->key_password), password); + gtk_editable_set_text (GTK_EDITABLE (priv->key_password), password); } static const gchar * @@ -33,7 +40,7 @@ get_key_password (NMACertChooser *cert_chooser) NMAFileCertChooserPrivate *priv = NMA_FILE_CERT_CHOOSER_GET_PRIVATE (cert_chooser); g_return_val_if_fail (priv->key_password != NULL, NULL); - return gtk_entry_get_text (GTK_ENTRY (priv->key_password)); + return gtk_editable_get_text (GTK_EDITABLE (priv->key_password)); } static void @@ -293,7 +300,7 @@ init (NMACertChooser *cert_chooser) gtk_widget_set_hexpand (priv->key_button, TRUE); gtk_widget_set_sensitive (priv->key_button, FALSE); gtk_widget_show (priv->key_button); - gtk_widget_set_no_show_all (priv->key_button, TRUE); + gtk3_widget_set_no_show_all (priv->key_button, TRUE); g_signal_connect (priv->key_button, "selection-changed", G_CALLBACK (key_changed_cb), cert_chooser); @@ -304,7 +311,7 @@ init (NMACertChooser *cert_chooser) gtk_grid_attach (GTK_GRID (cert_chooser), priv->key_button_label, 0, 0, 1, 1); gtk_widget_set_sensitive (priv->key_button_label, FALSE); gtk_widget_show (priv->key_button_label); - gtk_widget_set_no_show_all (priv->key_button_label, TRUE); + gtk3_widget_set_no_show_all (priv->key_button_label, TRUE); /* The key password entry */ gtk_grid_insert_row (GTK_GRID (cert_chooser), 1); @@ -315,7 +322,7 @@ init (NMACertChooser *cert_chooser) gtk_widget_set_hexpand (priv->key_password, TRUE); gtk_widget_set_sensitive (priv->key_password, FALSE); gtk_widget_show (priv->key_password); - gtk_widget_set_no_show_all (priv->key_password, TRUE); + gtk3_widget_set_no_show_all (priv->key_password, TRUE); g_signal_connect (priv->key_password, "changed", G_CALLBACK (key_password_changed_cb), cert_chooser); @@ -326,14 +333,14 @@ init (NMACertChooser *cert_chooser) gtk_grid_attach (GTK_GRID (cert_chooser), priv->key_password_label, 0, 1, 1, 1); gtk_widget_set_sensitive (priv->key_password_label, FALSE); gtk_widget_show (priv->key_password_label); - gtk_widget_set_no_show_all (priv->key_password_label, TRUE); + gtk3_widget_set_no_show_all (priv->key_password_label, TRUE); /* Show password */ gtk_grid_insert_row (GTK_GRID (cert_chooser), 2); priv->show_password = gtk_check_button_new_with_mnemonic _("Sho_w password"); gtk_grid_attach (GTK_GRID (cert_chooser), priv->show_password, 1, 2, 1, 1); gtk_widget_show (priv->show_password); - gtk_widget_set_no_show_all (priv->show_password, TRUE); + gtk3_widget_set_no_show_all (priv->show_password, TRUE); g_signal_connect (priv->show_password, "toggled", G_CALLBACK (show_toggled_cb), cert_chooser); @@ -349,7 +356,7 @@ init (NMACertChooser *cert_chooser) gtk_grid_attach (GTK_GRID (cert_chooser), priv->cert_button, 1, 0, 1, 1); gtk_widget_set_hexpand (priv->cert_button, TRUE); gtk_widget_show (priv->cert_button); - gtk_widget_set_no_show_all (priv->cert_button, TRUE); + gtk3_widget_set_no_show_all (priv->cert_button, TRUE); /* For some reason, GTK+ calls set_current_filter (..., NULL) from * gtkfilechooserdefault.c::show_and_select_files_finished_loading() on our @@ -367,7 +374,7 @@ init (NMACertChooser *cert_chooser) gtk_label_set_mnemonic_widget (GTK_LABEL (priv->cert_button_label), priv->cert_button); gtk_grid_attach (GTK_GRID (cert_chooser), priv->cert_button_label, 0, 0, 1, 1); gtk_widget_show (priv->cert_button_label); - gtk_widget_set_no_show_all (priv->cert_button_label, TRUE); + gtk3_widget_set_no_show_all (priv->cert_button_label, TRUE); } const NMACertChooserVtable nma_cert_chooser_vtable_file = { diff --git a/src/libnma/nma-mobile-wizard.c b/src/libnma/nma-mobile-wizard.c index cf10e0a8..9a4e753b 100644 --- a/src/libnma/nma-mobile-wizard.c +++ b/src/libnma/nma-mobile-wizard.c @@ -8,9 +8,16 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <stdlib.h> +#if GTK_CHECK_VERSION(3,90,0) +#include <gdk/x11/gdkx.h> +#else +#include <gdk/gdkx.h> +#endif + #include <NetworkManager.h> #include <nm-setting-gsm.h> #include <nm-setting-cdma.h> @@ -90,7 +97,7 @@ typedef struct { GtkTreeStore *plan_store; guint32 plan_focus_id; - GtkEntry *plan_apn_entry; + GtkEditable *plan_apn_entry; /* Confirm page */ GtkWidget *confirm_page; @@ -165,7 +172,7 @@ assistant_closed (GtkButton *button, gpointer user_data) } } else { family = NMA_MOBILE_FAMILY_3GPP; - wiz_method->gsm_apn = g_strdup (gtk_entry_get_text (priv->plan_apn_entry)); + wiz_method->gsm_apn = g_strdup (gtk_editable_get_text (priv->plan_apn_entry)); } } } @@ -271,7 +278,7 @@ confirm_prepare (NMAMobileWizard *self) else gtk_label_set_text (priv->confirm_plan, _("Unlisted")); - apn = gtk_entry_get_text (priv->plan_apn_entry); + apn = gtk_editable_get_text (priv->plan_apn_entry); } if (apn) { @@ -339,7 +346,7 @@ plan_update_complete (NMAMobileWizard *self) } else { const char *manual_apn; - manual_apn = gtk_entry_get_text (priv->plan_apn_entry); + manual_apn = gtk_editable_get_text (priv->plan_apn_entry); gtk_assistant_set_page_complete (assistant, priv->plan_page, (manual_apn && strlen (manual_apn))); } @@ -354,10 +361,10 @@ plan_combo_changed (NMAMobileWizard *self) method = get_selected_method (self, &is_manual); if (method) { - gtk_entry_set_text (priv->plan_apn_entry, nma_mobile_access_method_get_3gpp_apn (method)); + gtk_editable_set_text (priv->plan_apn_entry, nma_mobile_access_method_get_3gpp_apn (method)); gtk_widget_set_sensitive (GTK_WIDGET (priv->plan_apn_entry), FALSE); } else { - gtk_entry_set_text (priv->plan_apn_entry, ""); + gtk_editable_set_text (priv->plan_apn_entry, ""); gtk_widget_set_sensitive (GTK_WIDGET (priv->plan_apn_entry), TRUE); gtk_widget_grab_focus (GTK_WIDGET (priv->plan_apn_entry)); } @@ -1450,6 +1457,17 @@ static void nma_mobile_wizard_init (NMAMobileWizard *self) { gtk_widget_init_template (GTK_WIDGET (self)); + gtk_widget_realize (GTK_WIDGET (self)); + + if (GDK_IS_X11_DISPLAY (gtk_widget_get_display (GTK_WIDGET (self)))) { +#if GTK_CHECK_VERSION(3,90,0) + GdkSurface *surface = gtk_widget_get_surface (GTK_WIDGET (self)); + gdk_x11_surface_set_skip_taskbar_hint (surface, TRUE); +#else + GdkWindow *gdk_window = gtk_widget_get_window (GTK_WIDGET (self)); + gdk_window_set_skip_taskbar_hint (gdk_window, TRUE); +#endif + } } /** diff --git a/src/libnma/nma-mobile-wizard.ui b/src/libnma/nma-mobile-wizard.ui index 4c64f3c1..e120e962 100644 --- a/src/libnma/nma-mobile-wizard.ui +++ b/src/libnma/nma-mobile-wizard.ui @@ -50,7 +50,6 @@ <property name="modal">True</property> <property name="window_position">center-always</property> <property name="type_hint">dialog</property> - <property name="skip_taskbar_hint">True</property> <property name="use_header_bar">1</property> <signal name="cancel" handler="assistant_cancel" swapped="no"/> <signal name="close" handler="assistant_closed" swapped="no"/> @@ -568,9 +567,9 @@ If you are unsure of your plan please ask your provider for your plan’s APN.</ </child> <child> <object class="GtkLabel" id="confirm_connect_after_label"> + <property name="visible">False</property> <property name="width_request">500</property> <property name="can_focus">False</property> - <property name="no_show_all">True</property> <property name="valign">end</property> <property name="vexpand">True</property> <property name="label" translatable="yes">A connection will now be made to your mobile broadband provider using the settings you selected. If the connection fails or you cannot access network resources, double-check your settings. To modify your mobile broadband connection settings, choose “Network Connections” from the System → Preferences menu.</property> diff --git a/src/libnma/nma-pkcs11-cert-chooser.c b/src/libnma/nma-pkcs11-cert-chooser.c index b0449ec5..8e45138e 100644 --- a/src/libnma/nma-pkcs11-cert-chooser.c +++ b/src/libnma/nma-pkcs11-cert-chooser.c @@ -7,6 +7,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include "nma-cert-chooser-private.h" #include "nma-cert-chooser-button.h" #include "nma-ui-utils.h" @@ -27,7 +28,7 @@ set_key_password (NMACertChooser *cert_chooser, const gchar *password) g_return_if_fail (priv->key_password != NULL); if (password) - gtk_entry_set_text (GTK_ENTRY (priv->key_password), password); + gtk_editable_set_text (GTK_EDITABLE (priv->key_password), password); } static const gchar * @@ -37,7 +38,7 @@ get_key_password (NMACertChooser *cert_chooser) const gchar *text; g_return_val_if_fail (priv->key_password != NULL, NULL); - text = gtk_entry_get_text (GTK_ENTRY (priv->key_password)); + text = gtk_editable_get_text (GTK_EDITABLE (priv->key_password)); return text && text[0] ? text : NULL; } @@ -72,7 +73,7 @@ set_cert_password (NMACertChooser *cert_chooser, const gchar *password) g_return_if_fail (priv->cert_password != NULL); if (password) - gtk_entry_set_text (GTK_ENTRY (priv->cert_password), password); + gtk_editable_set_text (GTK_EDITABLE (priv->cert_password), password); } static const gchar * @@ -82,7 +83,7 @@ get_cert_password (NMACertChooser *cert_chooser) const gchar *text; g_return_val_if_fail (priv->cert_password != NULL, NULL); - text = gtk_entry_get_text (GTK_ENTRY (priv->cert_password)); + text = gtk_editable_get_text (GTK_EDITABLE (priv->cert_password)); return text && text[0] ? text : NULL; } @@ -281,7 +282,7 @@ cert_changed_cb (NMACertChooserButton *button, gpointer user_data) if (nma_cert_chooser_button_get_remember_pin (button)) pin = nma_cert_chooser_button_get_pin (button); if (pin) - gtk_entry_set_text (GTK_ENTRY (priv->cert_password), pin); + gtk_editable_set_text (GTK_EDITABLE (priv->cert_password), pin); gtk_widget_set_sensitive (priv->cert_password, uri_data != NULL); gtk_widget_set_sensitive (priv->cert_password_label, uri_data != NULL); @@ -297,7 +298,7 @@ cert_changed_cb (NMACertChooserButton *button, gpointer user_data) gtk_widget_set_sensitive (priv->key_password, TRUE); gtk_widget_set_sensitive (priv->key_password_label, TRUE); if (pin) - gtk_entry_set_text (GTK_ENTRY (priv->key_password), pin); + gtk_editable_set_text (GTK_EDITABLE (priv->key_password), pin); } } } @@ -319,7 +320,7 @@ key_changed_cb (NMACertChooserButton *button, gpointer user_data) if (nma_cert_chooser_button_get_remember_pin (button)) pin = nma_cert_chooser_button_get_pin (button); if (pin) { - gtk_entry_set_text (GTK_ENTRY (priv->key_password), pin); + gtk_editable_set_text (GTK_EDITABLE (priv->key_password), pin); g_free (pin); } diff --git a/src/libnma/nma-private.h b/src/libnma/nma-private.h new file mode 100644 index 00000000..8470fbf3 --- /dev/null +++ b/src/libnma/nma-private.h @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* NetworkManager Applet -- allow user control over networking + * + * Lubomir Rintel <lkundrak@v3.sk> + * + * Copyright (C) 2019 Red Hat, Inc. + */ + +#ifndef NMA_PRIVATE_H + +#if !GTK_CHECK_VERSION(3,96,0) +#define gtk_editable_set_text(editable,text) gtk_entry_set_text(GTK_ENTRY(editable), (text)) +#define gtk_editable_get_text(editable) gtk_entry_get_text(GTK_ENTRY(editable)) +#define gtk_editable_set_width_chars(editable, n_chars) gtk_entry_set_width_chars(GTK_ENTRY(editable), (n_chars)) +#endif + +void nma_gtk_widget_activate_default (GtkWidget *widget); + +#define NMA_PRIVATE_H + +#endif /* NMA_PRIVATE_H */ diff --git a/src/libnma/nma-ui-utils.c b/src/libnma/nma-ui-utils.c index 91d13214..7a4e6770 100644 --- a/src/libnma/nma-ui-utils.c +++ b/src/libnma/nma-ui-utils.c @@ -4,6 +4,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <string.h> @@ -74,11 +75,11 @@ change_password_storage_icon (GtkWidget *passwd_entry, MenuItem item) if ( (item == ITEM_STORAGE_ASK && !ask_mode) || item == ITEM_STORAGE_UNUSED) { /* Store the old password */ - old_pwd = gtk_entry_get_text (GTK_ENTRY (passwd_entry)); + old_pwd = gtk_editable_get_text (GTK_EDITABLE (passwd_entry)); if (old_pwd && *old_pwd) g_object_set_data_full (G_OBJECT (passwd_entry), "password-old", g_strdup (old_pwd), g_free_str0); - gtk_entry_set_text (GTK_ENTRY (passwd_entry), ""); + gtk_editable_set_text (GTK_EDITABLE (passwd_entry), ""); if (gtk_widget_is_focus (passwd_entry)) gtk_widget_child_focus ((gtk_widget_get_toplevel (passwd_entry)), GTK_DIR_TAB_BACKWARD); @@ -87,7 +88,7 @@ change_password_storage_icon (GtkWidget *passwd_entry, MenuItem item) /* Set the old password to the entry */ old_pwd = g_object_get_data (G_OBJECT (passwd_entry), "password-old"); if (old_pwd && *old_pwd) - gtk_entry_set_text (GTK_ENTRY (passwd_entry), old_pwd); + gtk_editable_set_text (GTK_EDITABLE (passwd_entry), old_pwd); g_object_set_data (G_OBJECT (passwd_entry), "password-old", NULL); if (!gtk_widget_get_can_focus (passwd_entry)) { @@ -205,17 +206,45 @@ popup_menu_item_info_register (GtkWidget *item, (GClosureNotify) popup_menu_item_info_destroy, 0); } +void +nma_gtk_widget_activate_default (GtkWidget *widget) +{ +#if GTK_CHECK_VERSION(3,90,0) + gtk_widget_activate_default (widget); +#else + gtk_window_activate_default (GTK_WINDOW (widget)); +#endif +} + static void icon_release_cb (GtkEntry *entry, GtkEntryIconPosition position, +#if !GTK_CHECK_VERSION(3,90,0) GdkEventButton *event, +#endif gpointer data) { GtkMenu *menu = GTK_MENU (data); +#if GTK_CHECK_VERSION(3,90,0) + GdkRectangle icon_area; +#endif + if (position == GTK_ENTRY_ICON_SECONDARY) { - gtk_widget_show_all (GTK_WIDGET (data)); + gtk_widget_show (GTK_WIDGET (data)); +#if GTK_CHECK_VERSION(3,90,0) + gtk_entry_get_icon_area (entry, + GTK_ENTRY_ICON_SECONDARY, + &icon_area); + gtk_menu_popup_at_rect (menu, + gtk_widget_get_surface (GTK_WIDGET (entry)), + &icon_area, + GDK_GRAVITY_CENTER, + GDK_GRAVITY_CENTER, + NULL); +#else gtk_menu_popup (menu, NULL, NULL, NULL, NULL, event->button, event->time); +#endif } } diff --git a/src/libnma/nma-vpn-password-dialog.c b/src/libnma/nma-vpn-password-dialog.c index a0397b49..a6738146 100644 --- a/src/libnma/nma-vpn-password-dialog.c +++ b/src/libnma/nma-vpn-password-dialog.c @@ -19,7 +19,7 @@ */ #include "nm-default.h" - +#include "nma-private.h" #include "nma-vpn-password-dialog.h" typedef struct { @@ -83,7 +83,7 @@ nma_vpn_password_dialog_class_init (NMAVpnPasswordDialogClass *klass) gtk_widget_class_bind_template_callback (widget_class, dialog_close_callback); gtk_widget_class_bind_template_callback (widget_class, dialog_show_callback); - gtk_widget_class_bind_template_callback (widget_class, gtk_window_activate_default); + gtk_widget_class_bind_template_callback (widget_class, nma_gtk_widget_activate_default); gtk_widget_class_bind_template_callback (widget_class, show_passwords_toggled_cb); } @@ -169,7 +169,7 @@ nma_vpn_password_dialog_set_password (NMAVpnPasswordDialog *dialog, g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - gtk_entry_set_text (GTK_ENTRY (priv->password_entry), password ? password : ""); + gtk_editable_set_text (GTK_EDITABLE (priv->password_entry), password ? password : ""); } void @@ -181,7 +181,7 @@ nma_vpn_password_dialog_set_password_secondary (NMAVpnPasswordDialog *dialog, g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - gtk_entry_set_text (GTK_ENTRY (priv->password_entry_secondary), + gtk_editable_set_text (GTK_EDITABLE (priv->password_entry_secondary), password_secondary ? password_secondary : ""); } @@ -194,7 +194,7 @@ nma_vpn_password_dialog_set_password_ternary (NMAVpnPasswordDialog *dialog, g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - gtk_entry_set_text (GTK_ENTRY (priv->password_entry_tertiary), + gtk_editable_set_text (GTK_EDITABLE (priv->password_entry_tertiary), password_tertiary ? password_tertiary : ""); } @@ -286,7 +286,7 @@ nma_vpn_password_dialog_get_password (NMAVpnPasswordDialog *dialog) g_return_val_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog), NULL); priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - return gtk_entry_get_text (GTK_ENTRY (priv->password_entry)); + return gtk_editable_get_text (GTK_EDITABLE (priv->password_entry)); } const char * @@ -297,7 +297,7 @@ nma_vpn_password_dialog_get_password_secondary (NMAVpnPasswordDialog *dialog) g_return_val_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog), NULL); priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - return gtk_entry_get_text (GTK_ENTRY (priv->password_entry_secondary)); + return gtk_editable_get_text (GTK_EDITABLE (priv->password_entry_secondary)); } const char * @@ -308,7 +308,7 @@ nma_vpn_password_dialog_get_password_ternary (NMAVpnPasswordDialog *dialog) g_return_val_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog), NULL); priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - return gtk_entry_get_text (GTK_ENTRY (priv->password_entry_tertiary)); + return gtk_editable_get_text (GTK_EDITABLE (priv->password_entry_tertiary)); } void nma_vpn_password_dialog_set_password_label (NMAVpnPasswordDialog *dialog, diff --git a/src/libnma/nma-vpn-password-dialog.ui b/src/libnma/nma-vpn-password-dialog.ui index ca3009dc..4774d2e4 100644 --- a/src/libnma/nma-vpn-password-dialog.ui +++ b/src/libnma/nma-vpn-password-dialog.ui @@ -90,7 +90,7 @@ <property name="can_focus">True</property> <property name="visibility">False</property> <property name="width_chars">20</property> - <signal name="activate" handler="gtk_window_activate_default" swapped="yes"/> + <signal name="activate" handler="nma_gtk_widget_activate_default" swapped="yes"/> </object> <packing> <property name="left_attach">2</property> @@ -103,7 +103,7 @@ <property name="can_focus">True</property> <property name="visibility">False</property> <property name="width_chars">20</property> - <signal name="activate" handler="gtk_window_activate_default" swapped="yes"/> + <signal name="activate" handler="nma_gtk_widget_activate_default" swapped="yes"/> </object> <packing> <property name="left_attach">2</property> @@ -116,7 +116,7 @@ <property name="can_focus">True</property> <property name="visibility">False</property> <property name="width_chars">20</property> - <signal name="activate" handler="gtk_window_activate_default" swapped="yes"/> + <signal name="activate" handler="nma_gtk_widget_activate_default" swapped="yes"/> </object> <packing> <property name="left_attach">2</property> diff --git a/src/libnma/nma-wifi-dialog.c b/src/libnma/nma-wifi-dialog.c index 121441ac..12a16e85 100644 --- a/src/libnma/nma-wifi-dialog.c +++ b/src/libnma/nma-wifi-dialog.c @@ -7,6 +7,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <string.h> #include <netinet/ether.h> @@ -219,7 +220,7 @@ validate_dialog_ssid (NMAWifiDialog *self) widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "network_name_entry")); - ssid = gtk_entry_get_text (GTK_ENTRY (widget)); + ssid = gtk_editable_get_text (GTK_EDITABLE (widget)); if (!ssid || strlen (ssid) == 0 || strlen (ssid) > 32) return NULL; @@ -365,10 +366,10 @@ connection_combo_changed (GtkWidget *combo, s_wireless = nm_connection_get_setting_wireless (priv->connection); ssid = nm_setting_wireless_get_ssid (s_wireless); utf8_ssid = nm_utils_ssid_to_utf8 (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid)); - gtk_entry_set_text (GTK_ENTRY (widget), utf8_ssid); + gtk_editable_set_text (GTK_EDITABLE (widget), utf8_ssid); g_free (utf8_ssid); } else { - gtk_entry_set_text (GTK_ENTRY (widget), ""); + gtk_editable_set_text (GTK_EDITABLE (widget), ""); } gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (priv->builder, "network_name_entry")), is_new); @@ -518,7 +519,9 @@ connection_combo_init (NMAWifiDialog *self) gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (widget), renderer, TRUE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (widget), renderer, "text", C_NAME_COLUMN); +#if !GTK_CHECK_VERSION(3,96,0) gtk_combo_box_set_wrap_width (GTK_COMBO_BOX (widget), 1); +#endif gtk_combo_box_set_model (GTK_COMBO_BOX (widget), priv->connection_model); @@ -1083,7 +1086,11 @@ internal_init (NMAWifiDialog *self, gtk_window_set_icon_name (GTK_WINDOW (self), icon_name); widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "image1")); +#if GTK_CHECK_VERSION(3,90,0) + gtk_image_set_from_icon_name (GTK_IMAGE (widget), icon_name); +#else gtk_image_set_from_icon_name (GTK_IMAGE (widget), icon_name, GTK_ICON_SIZE_DIALOG); +#endif gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), 2); @@ -1097,8 +1104,10 @@ internal_init (NMAWifiDialog *self, priv->ok_response_button = widget; } +#if !GTK_CHECK_VERSION(3,96,0) g_object_set (G_OBJECT (widget), "can-default", TRUE, NULL); gtk_widget_grab_default (widget); +#endif widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "wifi_dialog")); if (!widget) { diff --git a/src/libnma/tests/bar-code.c b/src/libnma/tests/bar-code.c index 8da5e093..f85a0cfa 100644 --- a/src/libnma/tests/bar-code.c +++ b/src/libnma/tests/bar-code.c @@ -13,6 +13,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <stdio.h> #include <string.h> @@ -59,7 +60,7 @@ password_changed (GtkEditable *editable, gpointer user_data) g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_PSK, - gtk_entry_get_text (GTK_ENTRY (editable)), + gtk_editable_get_text (editable), NULL); } @@ -105,10 +106,14 @@ main (int argc, char *argv[]) nm_connection_add_setting (connection, nm_setting_wireless_new ()); - gtk_init (&argc, &argv); +#if GTK_CHECK_VERSION(3,90,0) + gtk_init (); +#else + gtk_init (&argc, &argv); +#endif - w = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_widget_show (w); + w = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_widget_show (w); gtk_window_set_default_size (GTK_WINDOW (w), 800, 680); g_signal_connect (w, "delete-event", G_CALLBACK (delete), NULL); @@ -131,7 +136,7 @@ main (int argc, char *argv[]) w = gtk_entry_new (); g_signal_connect (w, "changed", G_CALLBACK (ssid_changed), connection); - gtk_entry_set_text (GTK_ENTRY (w), "\"ab:cd\""); + gtk_editable_set_text (GTK_EDITABLE (w), "\"ab:cd\""); gtk_widget_show (w); gtk_grid_attach (GTK_GRID (grid), w, 1, 0, 1, 1); @@ -142,7 +147,7 @@ main (int argc, char *argv[]) pass = gtk_entry_new (); g_signal_connect (pass, "changed", G_CALLBACK (password_changed), connection); - gtk_entry_set_text (GTK_ENTRY (pass), "lolofon"); + gtk_editable_set_text (GTK_EDITABLE (pass), "lolofon"); gtk_widget_show (pass); gtk_grid_attach (GTK_GRID (grid), pass, 1, 1, 1, 1); diff --git a/src/libnma/tests/cert-chooser.c b/src/libnma/tests/cert-chooser.c index 352460a9..99808d12 100644 --- a/src/libnma/tests/cert-chooser.c +++ b/src/libnma/tests/cert-chooser.c @@ -24,21 +24,36 @@ main (int argc, char *argv[]) GtkBox *content; GtkWidget *widget; +#if GTK_CHECK_VERSION(3,90,0) + gtk_init (); +#else gtk_init (&argc, &argv); +#endif dialog = gtk_dialog_new_with_buttons ("NMACertChooser test", NULL, GTK_DIALOG_MODAL, "Dismiss", GTK_RESPONSE_DELETE_EVENT, NULL); content = GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))); +#if GTK_CHECK_VERSION(3,90,0) + gtk_box_set_spacing (content, 6); +#endif widget = nma_cert_chooser_new ("Any", 0); gtk_widget_show (widget); +#if GTK_CHECK_VERSION(3,90,0) + gtk_container_add (GTK_CONTAINER (content), widget); +#else gtk_box_pack_start (content, widget, TRUE, TRUE, 6); +#endif widget = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); gtk_widget_show (widget); +#if GTK_CHECK_VERSION(3,90,0) + gtk_container_add (GTK_CONTAINER (content), widget); +#else gtk_box_pack_start (content, widget, TRUE, TRUE, 6); +#endif widget = nma_cert_chooser_new ("FLAG_PASSWORDS", NMA_CERT_CHOOSER_FLAG_PASSWORDS); nma_cert_chooser_set_cert (NMA_CERT_CHOOSER (widget), @@ -47,23 +62,43 @@ main (int argc, char *argv[]) nma_cert_chooser_set_key_uri (NMA_CERT_CHOOSER (widget), "pkcs11:object=worship;type=doom"); gtk_widget_show (widget); +#if GTK_CHECK_VERSION(3,90,0) + gtk_container_add (GTK_CONTAINER (content), widget); +#else gtk_box_pack_start (content, widget, TRUE, TRUE, 6); +#endif widget = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); gtk_widget_show (widget); +#if GTK_CHECK_VERSION(3,90,0) + gtk_container_add (GTK_CONTAINER (content), widget); +#else gtk_box_pack_start (content, widget, TRUE, TRUE, 6); +#endif widget = nma_cert_chooser_new ("FLAG_CERT", NMA_CERT_CHOOSER_FLAG_CERT); gtk_widget_show (widget); +#if GTK_CHECK_VERSION(3,90,0) + gtk_container_add (GTK_CONTAINER (content), widget); +#else gtk_box_pack_start (content, widget, TRUE, TRUE, 6); +#endif widget = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); gtk_widget_show (widget); +#if GTK_CHECK_VERSION(3,90,0) + gtk_container_add (GTK_CONTAINER (content), widget); +#else gtk_box_pack_start (content, widget, TRUE, TRUE, 6); +#endif widget = nma_cert_chooser_new ("FLAG_PEM", NMA_CERT_CHOOSER_FLAG_PEM); gtk_widget_show (widget); +#if GTK_CHECK_VERSION(3,90,0) + gtk_container_add (GTK_CONTAINER (content), widget); +#else gtk_box_pack_start (content, widget, TRUE, TRUE, 6); +#endif gtk_dialog_run (GTK_DIALOG (dialog)); } diff --git a/src/libnma/tests/meson.build b/src/libnma/tests/meson.build index 2d682e86..253de9e7 100644 --- a/src/libnma/tests/meson.build +++ b/src/libnma/tests/meson.build @@ -1,59 +1,31 @@ -deps = [ - gtk_dep, - libnm_dep, - libnma_dep -] - -executable( +tests = [ + 'bar-code', 'cert-chooser', - 'cert-chooser.c', - include_directories: incs, - dependencies: deps, - c_args: cflags, - install: false -) - -executable( 'mobile-wizard', - 'mobile-wizard.c', - include_directories: incs, - dependencies: deps, - c_args: cflags, - install: false -) - -executable( 'run-vpn', - 'run-vpn.c', - include_directories: incs, - dependencies: deps, - c_args: cflags, - install: false -) - -executable( 'vpn-password-dialog', - 'vpn-password-dialog.c', - include_directories: incs, - dependencies: deps, - c_args: cflags, - install: false -) - -executable( 'wifi-dialog', - 'wifi-dialog.c', - include_directories: incs, - dependencies: deps, - c_args: cflags, - install: false -) - -executable( 'wifi-dialog-secrets', - 'wifi-dialog-secrets.c', - include_directories: incs, - dependencies: deps, - c_args: cflags, - install: false -) +] + +foreach tst : tests + executable( + tst, + tst + '.c', + include_directories: incs, + dependencies: [ gtk_dep, libnm_dep, libnma_dep ], + c_args: cflags, + install: false + ) + + if enable_libnma_gtk4 + executable( + tst + '-gtk4', + tst + '.c', + include_directories: incs, + dependencies: [ gtk4_dep, libnm_dep, libnma_gtk4_dep ], + c_args: cflags, + install: false + ) + endif +endforeach diff --git a/src/libnma/tests/mobile-wizard.c b/src/libnma/tests/mobile-wizard.c index 36232115..1e21868f 100644 --- a/src/libnma/tests/mobile-wizard.c +++ b/src/libnma/tests/mobile-wizard.c @@ -19,7 +19,11 @@ main (int argc, char *argv[]) { NMAMobileWizard *wizard; +#if GTK_CHECK_VERSION(3,90,0) + gtk_init (); +#else gtk_init (&argc, &argv); +#endif wizard = nma_mobile_wizard_new (NULL, NULL, NM_DEVICE_MODEM_CAPABILITY_NONE, TRUE, wizard_cb, NULL); diff --git a/src/libnma/tests/run-vpn.c b/src/libnma/tests/run-vpn.c index 8f3eb16b..b0e39d9d 100644 --- a/src/libnma/tests/run-vpn.c +++ b/src/libnma/tests/run-vpn.c @@ -33,7 +33,12 @@ main (int argc, char *argv[]) GtkWidget *widget; gs_free_error GError *error = NULL; +#if GTK_CHECK_VERSION(3,90,0) + gtk_init (); +#else gtk_init (&argc, &argv); +#endif + if (argc != 2) { g_printerr ("Usage: %s libnm-vpn-plugin-<name>.so\n", argv[0]); return EXIT_FAILURE; diff --git a/src/libnma/tests/vpn-password-dialog.c b/src/libnma/tests/vpn-password-dialog.c index 696599aa..2a65b432 100644 --- a/src/libnma/tests/vpn-password-dialog.c +++ b/src/libnma/tests/vpn-password-dialog.c @@ -13,7 +13,11 @@ main (int argc, char *argv[]) { GtkWidget *widget; +#if GTK_CHECK_VERSION(3,90,0) + gtk_init (); +#else gtk_init (&argc, &argv); +#endif widget = nma_vpn_password_dialog_new ("Title", "Message", "Password"); diff --git a/src/libnma/tests/wifi-dialog-secrets.c b/src/libnma/tests/wifi-dialog-secrets.c index 4ceffcc4..f6d9ef95 100644 --- a/src/libnma/tests/wifi-dialog-secrets.c +++ b/src/libnma/tests/wifi-dialog-secrets.c @@ -54,7 +54,11 @@ main (int argc, char *argv[]) NULL }; +#if GTK_CHECK_VERSION(3,90,0) + gtk_init (); +#else gtk_init (&argc, &argv); +#endif client = nm_client_new (NULL, NULL); connection = nm_simple_connection_new (); diff --git a/src/libnma/tests/wifi-dialog.c b/src/libnma/tests/wifi-dialog.c index 10c08ff3..1f8219ae 100644 --- a/src/libnma/tests/wifi-dialog.c +++ b/src/libnma/tests/wifi-dialog.c @@ -20,7 +20,11 @@ main (int argc, char *argv[]) GError *error = NULL; gs_unref_bytes GBytes *ssid = g_bytes_new_static ("<Maj Vaj Faj>", 13); +#if GTK_CHECK_VERSION(3,90,0) + gtk_init (); +#else gtk_init (&argc, &argv); +#endif client = nm_client_new (NULL, NULL); connection = nm_simple_connection_new (); diff --git a/src/mobile-helpers.c b/src/mobile-helpers.c index 0621a81b..54f250b8 100644 --- a/src/mobile-helpers.c +++ b/src/mobile-helpers.c @@ -7,7 +7,7 @@ */ #include "nm-default.h" - +#include "nma-private.h" #include <ctype.h> #include <libsecret/secret.h> @@ -469,7 +469,7 @@ ask_for_pin (GtkEntry **out_secret_entry) w = gtk_entry_new (); *out_secret_entry = GTK_ENTRY (w); gtk_entry_set_max_length (GTK_ENTRY (w), 8); - gtk_entry_set_width_chars (GTK_ENTRY (w), 8); + gtk_editable_set_width_chars (GTK_EDITABLE (w), 8); gtk_entry_set_activates_default (GTK_ENTRY (w), TRUE); gtk_entry_set_visibility (GTK_ENTRY (w), FALSE); gtk_box_pack_start (box, w, FALSE, FALSE, 0); diff --git a/src/utils/utils.c b/src/utils/utils.c index ef6e6a85..3a6f07e0 100644 --- a/src/utils/utils.c +++ b/src/utils/utils.c @@ -318,10 +318,19 @@ utils_override_bg_color (GtkWidget *widget, GdkRGBA *rgba) if (rgba) { css = g_strdup_printf ("* { background-color: %s; background-image: none; }", gdk_rgba_to_string (rgba)); +#if GTK_CHECK_VERSION(3,90,0) + gtk_css_provider_load_from_data (provider, css, -1); +#else gtk_css_provider_load_from_data (provider, css, -1, NULL); +#endif g_free (css); - } else + } else { +#if GTK_CHECK_VERSION(3,90,0) + gtk_css_provider_load_from_data (provider, "", -1); +#else gtk_css_provider_load_from_data (provider, "", -1, NULL); +#endif + } } void diff --git a/src/wireless-security/eap-method-fast.c b/src/wireless-security/eap-method-fast.c index 311371c3..32674739 100644 --- a/src/wireless-security/eap-method-fast.c +++ b/src/wireless-security/eap-method-fast.c @@ -6,6 +6,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <ctype.h> #include <string.h> @@ -131,7 +132,7 @@ fill_connection (EAPMethod *parent, NMConnection *connection) widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_fast_anon_identity_entry")); g_assert (widget); - text = gtk_entry_get_text (GTK_ENTRY (widget)); + text = gtk_editable_get_text (GTK_EDITABLE (widget)); if (text && strlen (text)) g_object_set (s_8021x, NM_SETTING_802_1X_ANONYMOUS_IDENTITY, text, NULL); @@ -382,7 +383,7 @@ eap_method_fast_new (WirelessSecurity *ws_parent, widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_fast_anon_identity_entry")); if (s_8021x && nm_setting_802_1x_get_anonymous_identity (s_8021x)) - gtk_entry_set_text (GTK_ENTRY (widget), nm_setting_802_1x_get_anonymous_identity (s_8021x)); + gtk_editable_set_text (GTK_EDITABLE (widget), nm_setting_802_1x_get_anonymous_identity (s_8021x)); g_signal_connect (G_OBJECT (widget), "changed", (GCallback) wireless_security_changed_cb, ws_parent); diff --git a/src/wireless-security/eap-method-leap.c b/src/wireless-security/eap-method-leap.c index 2f43ab85..ee45257b 100644 --- a/src/wireless-security/eap-method-leap.c +++ b/src/wireless-security/eap-method-leap.c @@ -7,6 +7,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <ctype.h> #include <string.h> @@ -46,7 +47,7 @@ validate (EAPMethod *parent, GError **error) const char *text; gboolean ret = TRUE; - text = gtk_entry_get_text (method->username_entry); + text = gtk_editable_get_text (GTK_EDITABLE (method->username_entry)); if (!text || !strlen (text)) { widget_set_error (GTK_WIDGET (method->username_entry)); g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("missing EAP-LEAP username")); @@ -54,7 +55,7 @@ validate (EAPMethod *parent, GError **error) } else widget_unset_error (GTK_WIDGET (method->username_entry)); - text = gtk_entry_get_text (method->password_entry); + text = gtk_editable_get_text (GTK_EDITABLE (method->password_entry)); if (!text || !strlen (text)) { widget_set_error (GTK_WIDGET (method->password_entry)); if (ret) { @@ -94,8 +95,10 @@ fill_connection (EAPMethod *parent, NMConnection *connection) nm_setting_802_1x_add_eap_method (s_8021x, "leap"); - g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_entry_get_text (method->username_entry), NULL); - g_object_set (s_8021x, NM_SETTING_802_1X_PASSWORD, gtk_entry_get_text (method->password_entry), NULL); + g_object_set (s_8021x, + NM_SETTING_802_1X_IDENTITY, gtk_editable_get_text (GTK_EDITABLE (method->username_entry)), + NM_SETTING_802_1X_PASSWORD, gtk_editable_get_text (GTK_EDITABLE (method->password_entry)), + NULL); passwd_entry = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_leap_password_entry")); g_assert (passwd_entry); @@ -126,15 +129,19 @@ update_secrets (EAPMethod *parent, NMConnection *connection) static void set_userpass_ui (EAPMethodLEAP *method) { - if (method->ws_parent->username) - gtk_entry_set_text (method->username_entry, method->ws_parent->username); - else - gtk_entry_set_text (method->username_entry, ""); - - if (method->ws_parent->password && !method->ws_parent->always_ask) - gtk_entry_set_text (method->password_entry, method->ws_parent->password); - else - gtk_entry_set_text (method->password_entry, ""); + if (method->ws_parent->username) { + gtk_editable_set_text (GTK_EDITABLE (method->username_entry), + method->ws_parent->username); + } else { + gtk_editable_set_text (GTK_EDITABLE (method->username_entry), ""); + } + + if (method->ws_parent->password && !method->ws_parent->always_ask) { + gtk_editable_set_text (GTK_EDITABLE (method->password_entry), + method->ws_parent->password); + } else { + gtk_editable_set_text (GTK_EDITABLE (method->password_entry), ""); + } gtk_toggle_button_set_active (method->show_password, method->ws_parent->show_password); } @@ -149,8 +156,8 @@ static void widgets_unrealized (GtkWidget *widget, EAPMethodLEAP *method) { wireless_security_set_userpass (method->ws_parent, - gtk_entry_get_text (method->username_entry), - gtk_entry_get_text (method->password_entry), + gtk_editable_get_text (GTK_EDITABLE (method->username_entry)), + gtk_editable_get_text (GTK_EDITABLE (method->password_entry)), (gboolean) -1, gtk_toggle_button_get_active (method->show_password)); } diff --git a/src/wireless-security/eap-method-peap.c b/src/wireless-security/eap-method-peap.c index 4c765dbc..a7dd3e59 100644 --- a/src/wireless-security/eap-method-peap.c +++ b/src/wireless-security/eap-method-peap.c @@ -7,6 +7,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <ctype.h> #include <string.h> @@ -142,14 +143,14 @@ fill_connection (EAPMethod *parent, NMConnection *connection) widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_peap_anon_identity_entry")); g_assert (widget); - text = gtk_entry_get_text (GTK_ENTRY (widget)); + text = gtk_editable_get_text (GTK_EDITABLE (widget)); if (text && strlen (text)) g_object_set (s_8021x, NM_SETTING_802_1X_ANONYMOUS_IDENTITY, text, NULL); #if LIBNM_BUILD widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_peap_domain_entry")); g_assert (widget); - text = gtk_entry_get_text (GTK_ENTRY (widget)); + text = gtk_editable_get_text (GTK_EDITABLE (widget)); if (text && strlen (text)) g_object_set (s_8021x, NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH, text, NULL); #endif @@ -455,7 +456,7 @@ eap_method_peap_new (WirelessSecurity *ws_parent, widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_peap_anon_identity_entry")); if (s_8021x && nm_setting_802_1x_get_anonymous_identity (s_8021x)) - gtk_entry_set_text (GTK_ENTRY (widget), nm_setting_802_1x_get_anonymous_identity (s_8021x)); + gtk_editable_set_text (GTK_EDITABLE (widget), nm_setting_802_1x_get_anonymous_identity (s_8021x)); g_signal_connect (G_OBJECT (widget), "changed", (GCallback) wireless_security_changed_cb, ws_parent); @@ -463,7 +464,7 @@ eap_method_peap_new (WirelessSecurity *ws_parent, widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_peap_domain_entry")); #if LIBNM_BUILD if (s_8021x && nm_setting_802_1x_get_domain_suffix_match (s_8021x)) - gtk_entry_set_text (GTK_ENTRY (widget), nm_setting_802_1x_get_domain_suffix_match (s_8021x)); + gtk_editable_set_text (GTK_EDITABLE (widget), nm_setting_802_1x_get_domain_suffix_match (s_8021x)); g_signal_connect (G_OBJECT (widget), "changed", (GCallback) wireless_security_changed_cb, ws_parent); diff --git a/src/wireless-security/eap-method-simple.c b/src/wireless-security/eap-method-simple.c index 20322868..26aef0de 100644 --- a/src/wireless-security/eap-method-simple.c +++ b/src/wireless-security/eap-method-simple.c @@ -7,6 +7,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <ctype.h> #include <string.h> @@ -70,7 +71,7 @@ validate (EAPMethod *parent, GError **error) gboolean ret = TRUE; if (method->username_requested) { - text = gtk_entry_get_text (method->username_entry); + text = gtk_editable_get_text (GTK_EDITABLE (method->username_entry)); if (!text || !strlen (text)) { widget_set_error (GTK_WIDGET (method->username_entry)); g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("missing EAP username")); @@ -84,7 +85,7 @@ validate (EAPMethod *parent, GError **error) if (always_ask_selected (method->password_entry)) widget_unset_error (GTK_WIDGET (method->password_entry)); else { - text = gtk_entry_get_text (method->password_entry); + text = gtk_editable_get_text (GTK_EDITABLE (method->password_entry)); if (!text || !strlen (text)) { widget_set_error (GTK_WIDGET (method->password_entry)); if (ret) { @@ -98,7 +99,7 @@ validate (EAPMethod *parent, GError **error) } if (method->pkey_passphrase_requested) { - text = gtk_entry_get_text (method->pkey_passphrase_entry); + text = gtk_editable_get_text (GTK_EDITABLE (method->pkey_passphrase_entry)); if (!text || !strlen (text)) { widget_set_error (GTK_WIDGET (method->pkey_passphrase_entry)); if (ret) { @@ -193,8 +194,11 @@ fill_connection (EAPMethod *parent, NMConnection *connection) nm_setting_802_1x_add_eap_method (s_8021x, eap_type->name); } - if (method->username_requested) - g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_entry_get_text (method->username_entry), NULL); + if (method->username_requested) { + g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, + gtk_editable_get_text (GTK_EDITABLE (method->username_entry)), + NULL); + } if (method->password_requested) { /* Save the password always ask setting */ @@ -209,7 +213,8 @@ fill_connection (EAPMethod *parent, NMConnection *connection) */ if (!(method->flags & EAP_METHOD_SIMPLE_FLAG_IS_EDITOR) || not_saved == FALSE) { g_object_set (s_8021x, NM_SETTING_802_1X_PASSWORD, - gtk_entry_get_text (method->password_entry), NULL); + gtk_editable_get_text (GTK_EDITABLE (method->password_entry)), + NULL); } /* Update secret flags and popup when editing the connection */ @@ -225,7 +230,8 @@ fill_connection (EAPMethod *parent, NMConnection *connection) if (method->pkey_passphrase_requested) { g_object_set (s_8021x, NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD, - gtk_entry_get_text (method->pkey_passphrase_entry), NULL); + gtk_editable_get_text (GTK_EDITABLE (method->pkey_passphrase_entry)), + NULL); } } @@ -280,15 +286,19 @@ password_storage_changed (GObject *entry, static void set_userpass_ui (EAPMethodSimple *method) { - if (method->ws_parent->username) - gtk_entry_set_text (method->username_entry, method->ws_parent->username); - else - gtk_entry_set_text (method->username_entry, ""); + if (method->ws_parent->username) { + gtk_editable_set_text (GTK_EDITABLE (method->username_entry), + method->ws_parent->username); + } else { + gtk_editable_set_text (GTK_EDITABLE (method->username_entry), ""); + } - if (method->ws_parent->password && !method->ws_parent->always_ask) - gtk_entry_set_text (method->password_entry, method->ws_parent->password); - else - gtk_entry_set_text (method->password_entry, ""); + if (method->ws_parent->password && !method->ws_parent->always_ask) { + gtk_editable_set_text (GTK_EDITABLE (method->password_entry), + method->ws_parent->password); + } else { + gtk_editable_set_text (GTK_EDITABLE (method->password_entry), ""); + } gtk_toggle_button_set_active (method->show_password, method->ws_parent->show_password); password_storage_changed (NULL, NULL, method); @@ -304,8 +314,8 @@ static void widgets_unrealized (GtkWidget *widget, EAPMethodSimple *method) { wireless_security_set_userpass (method->ws_parent, - gtk_entry_get_text (method->username_entry), - gtk_entry_get_text (method->password_entry), + gtk_editable_get_text (GTK_EDITABLE (method->username_entry)), + gtk_editable_get_text (GTK_EDITABLE (method->password_entry)), always_ask_selected (method->password_entry), gtk_toggle_button_get_active (method->show_password)); } diff --git a/src/wireless-security/eap-method-tls.c b/src/wireless-security/eap-method-tls.c index 12374e87..79f296dc 100644 --- a/src/wireless-security/eap-method-tls.c +++ b/src/wireless-security/eap-method-tls.c @@ -8,6 +8,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <ctype.h> #include <string.h> @@ -44,7 +45,7 @@ validate (EAPMethod *parent, GError **error) widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_tls_identity_entry")); g_assert (widget); - identity = gtk_entry_get_text (GTK_ENTRY (widget)); + identity = gtk_editable_get_text (GTK_EDITABLE (widget)); if (!identity || !strlen (identity)) { widget_set_error (widget); g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("missing EAP-TLS identity")); @@ -114,14 +115,14 @@ fill_connection (EAPMethod *parent, NMConnection *connection) widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_tls_identity_entry")); g_assert (widget); - g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_entry_get_text (GTK_ENTRY (widget)), NULL); + g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_editable_get_text (GTK_EDITABLE (widget)), NULL); #if LIBNM_BUILD widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_tls_domain_entry")); g_assert (widget); g_object_set (s_8021x, parent->phase2 ? NM_SETTING_802_1X_PHASE2_DOMAIN_SUFFIX_MATCH : NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH, - gtk_entry_get_text (GTK_ENTRY (widget)), NULL); + gtk_editable_get_text (GTK_EDITABLE (widget)), NULL); #endif /* TLS private key */ @@ -398,7 +399,7 @@ eap_method_tls_new (WirelessSecurity *ws_parent, (GCallback) wireless_security_changed_cb, ws_parent); if (s_8021x && nm_setting_802_1x_get_identity (s_8021x)) - gtk_entry_set_text (GTK_ENTRY (widget), nm_setting_802_1x_get_identity (s_8021x)); + gtk_editable_set_text (GTK_EDITABLE (widget), nm_setting_802_1x_get_identity (s_8021x)); widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_tls_domain_entry")); g_assert (widget); @@ -408,10 +409,10 @@ eap_method_tls_new (WirelessSecurity *ws_parent, ws_parent); if (phase2) { if (s_8021x && nm_setting_802_1x_get_phase2_domain_suffix_match (s_8021x)) - gtk_entry_set_text (GTK_ENTRY (widget), nm_setting_802_1x_get_phase2_domain_suffix_match (s_8021x)); + gtk_editable_set_text (GTK_EDITABLE (widget), nm_setting_802_1x_get_phase2_domain_suffix_match (s_8021x)); } else { if (s_8021x && nm_setting_802_1x_get_domain_suffix_match (s_8021x)) - gtk_entry_set_text (GTK_ENTRY (widget), nm_setting_802_1x_get_domain_suffix_match (s_8021x)); + gtk_editable_set_text (GTK_EDITABLE (widget), nm_setting_802_1x_get_domain_suffix_match (s_8021x)); } #else gtk_widget_hide (widget); diff --git a/src/wireless-security/eap-method-ttls.c b/src/wireless-security/eap-method-ttls.c index c94a9deb..1d589ee7 100644 --- a/src/wireless-security/eap-method-ttls.c +++ b/src/wireless-security/eap-method-ttls.c @@ -7,6 +7,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <ctype.h> #include <string.h> @@ -138,14 +139,14 @@ fill_connection (EAPMethod *parent, NMConnection *connection) widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_anon_identity_entry")); g_assert (widget); - text = gtk_entry_get_text (GTK_ENTRY (widget)); + text = gtk_editable_get_text (GTK_EDITABLE (widget)); if (text && strlen (text)) g_object_set (s_8021x, NM_SETTING_802_1X_ANONYMOUS_IDENTITY, text, NULL); #if LIBNM_BUILD widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_domain_entry")); g_assert (widget); - text = gtk_entry_get_text (GTK_ENTRY (widget)); + text = gtk_editable_get_text (GTK_EDITABLE (widget)); if (text && strlen (text)) g_object_set (s_8021x, NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH, text, NULL); #endif @@ -487,7 +488,7 @@ eap_method_ttls_new (WirelessSecurity *ws_parent, widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_anon_identity_entry")); if (s_8021x && nm_setting_802_1x_get_anonymous_identity (s_8021x)) - gtk_entry_set_text (GTK_ENTRY (widget), nm_setting_802_1x_get_anonymous_identity (s_8021x)); + gtk_editable_set_text (GTK_EDITABLE (widget), nm_setting_802_1x_get_anonymous_identity (s_8021x)); g_signal_connect (G_OBJECT (widget), "changed", (GCallback) wireless_security_changed_cb, ws_parent); @@ -495,7 +496,7 @@ eap_method_ttls_new (WirelessSecurity *ws_parent, widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_domain_entry")); #if LIBNM_BUILD if (s_8021x && nm_setting_802_1x_get_domain_suffix_match (s_8021x)) - gtk_entry_set_text (GTK_ENTRY (widget), nm_setting_802_1x_get_domain_suffix_match (s_8021x)); + gtk_editable_set_text (GTK_EDITABLE (widget), nm_setting_802_1x_get_domain_suffix_match (s_8021x)); g_signal_connect (G_OBJECT (widget), "changed", (GCallback) wireless_security_changed_cb, ws_parent); diff --git a/src/wireless-security/helpers.c b/src/wireless-security/helpers.c index 5cb86377..31009cb2 100644 --- a/src/wireless-security/helpers.c +++ b/src/wireless-security/helpers.c @@ -7,7 +7,7 @@ */ #include "nm-default.h" - +#include "nma-private.h" #include "helpers.h" void @@ -32,7 +32,7 @@ helper_fill_secret_entry (NMConnection *connection, if (tmp) { widget = GTK_WIDGET (gtk_builder_get_object (builder, entry_name)); g_assert (widget); - gtk_entry_set_text (GTK_ENTRY (widget), tmp); + gtk_editable_set_text (GTK_EDITABLE (widget), tmp); } } } diff --git a/src/wireless-security/meson.build b/src/wireless-security/meson.build index a4fbe97d..3a7cfc51 100644 --- a/src/wireless-security/meson.build +++ b/src/wireless-security/meson.build @@ -57,6 +57,22 @@ libwireless_security_libnm = static_library( dependencies: deps ) +if enable_libnma_gtk4 + deps = [ + gtk4_dep, + libnm_dep, + libutils_libnm_dep + ] + + libwireless_security_libnma_gtk4 = static_library( + 'wireless-security-libnma-gtk4', + sources: sources, + include_directories: incs, + dependencies: deps, + c_args: cflags + ) +endif + if enable_libnm_gtk deps = [ gtk_dep, diff --git a/src/wireless-security/ws-leap.c b/src/wireless-security/ws-leap.c index f102fc6a..e400a10a 100644 --- a/src/wireless-security/ws-leap.c +++ b/src/wireless-security/ws-leap.c @@ -7,6 +7,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <string.h> @@ -44,7 +45,7 @@ validate (WirelessSecurity *parent, GError **error) entry = GTK_WIDGET (gtk_builder_get_object (parent->builder, "leap_username_entry")); g_assert (entry); - text = gtk_entry_get_text (GTK_ENTRY (entry)); + text = gtk_editable_get_text (GTK_EDITABLE (entry)); if (!text || !strlen (text)) { widget_set_error (entry); g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("missing leap-username")); @@ -56,7 +57,7 @@ validate (WirelessSecurity *parent, GError **error) g_assert (entry); secret_flags = nma_utils_menu_to_secret_flags (entry); - text = gtk_entry_get_text (GTK_ENTRY (entry)); + text = gtk_editable_get_text (GTK_EDITABLE (entry)); if ( secret_flags & NM_SETTING_SECRET_FLAG_NOT_SAVED || secret_flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED @@ -99,11 +100,11 @@ fill_connection (WirelessSecurity *parent, NMConnection *connection) nm_connection_add_setting (connection, (NMSetting *) s_wireless_sec); widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "leap_username_entry")); - leap_username = gtk_entry_get_text (GTK_ENTRY (widget)); + leap_username = gtk_editable_get_text (GTK_EDITABLE (widget)); widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "leap_password_entry")); passwd_entry = widget; - leap_password = gtk_entry_get_text (GTK_ENTRY (widget)); + leap_password = gtk_editable_get_text (GTK_EDITABLE (widget)); g_object_set (s_wireless_sec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "ieee8021x", @@ -190,7 +191,7 @@ ws_leap_new (NMConnection *connection, gboolean secrets_only) (GCallback) wireless_security_changed_cb, sec); if (wsec) - gtk_entry_set_text (GTK_ENTRY (widget), nm_setting_wireless_security_get_leap_username (wsec)); + gtk_editable_set_text (GTK_EDITABLE (widget), nm_setting_wireless_security_get_leap_username (wsec)); if (secrets_only) gtk_widget_hide (widget); diff --git a/src/wireless-security/ws-wep-key.c b/src/wireless-security/ws-wep-key.c index caedfa5f..fc5a4b74 100644 --- a/src/wireless-security/ws-wep-key.c +++ b/src/wireless-security/ws-wep-key.c @@ -7,6 +7,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <string.h> @@ -49,7 +50,7 @@ key_index_combo_changed_cb (GtkWidget *combo, WirelessSecurity *parent) /* Save WEP key for old key index */ entry = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wep_key_entry")); - key = gtk_entry_get_text (GTK_ENTRY (entry)); + key = gtk_editable_get_text (GTK_EDITABLE (entry)); if (key) g_strlcpy (sec->keys[sec->cur_index], key, sizeof (sec->keys[sec->cur_index])); else @@ -60,7 +61,7 @@ key_index_combo_changed_cb (GtkWidget *combo, WirelessSecurity *parent) g_return_if_fail (key_index >= 0); /* Populate entry with key from new index */ - gtk_entry_set_text (GTK_ENTRY (entry), sec->keys[key_index]); + gtk_editable_set_text (GTK_EDITABLE (entry), sec->keys[key_index]); sec->cur_index = key_index; wireless_security_changed_cb (combo, parent); @@ -89,7 +90,7 @@ validate (WirelessSecurity *parent, GError **error) g_assert (entry); secret_flags = nma_utils_menu_to_secret_flags (entry); - key = gtk_entry_get_text (GTK_ENTRY (entry)); + key = gtk_editable_get_text (GTK_EDITABLE (entry)); if ( secret_flags & NM_SETTING_SECRET_FLAG_NOT_SAVED || secret_flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED) { @@ -166,7 +167,7 @@ fill_connection (WirelessSecurity *parent, NMConnection *connection) widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wep_key_entry")); passwd_entry = widget; - key = gtk_entry_get_text (GTK_ENTRY (widget)); + key = gtk_editable_get_text (GTK_EDITABLE (widget)); g_strlcpy (sec->keys[sec->cur_index], key, sizeof (sec->keys[sec->cur_index])); /* Blow away the old security setting by adding a clear one */ @@ -217,7 +218,7 @@ update_secrets (WirelessSecurity *parent, NMConnection *connection) { WirelessSecurityWEPKey *sec = (WirelessSecurityWEPKey *) parent; NMSettingWirelessSecurity *s_wsec; - GtkWidget *widget; + GtkEditable *entry; const char *tmp; int i; @@ -228,9 +229,9 @@ update_secrets (WirelessSecurity *parent, NMConnection *connection) g_strlcpy (sec->keys[i], tmp, sizeof (sec->keys[i])); } - widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wep_key_entry")); + entry = GTK_EDITABLE (gtk_builder_get_object (parent->builder, "wep_key_entry")); if (strlen (sec->keys[sec->cur_index])) - gtk_entry_set_text (GTK_ENTRY (widget), sec->keys[sec->cur_index]); + gtk_editable_set_text (entry, sec->keys[sec->cur_index]); } WirelessSecurityWEPKey * @@ -267,7 +268,7 @@ ws_wep_key_new (NMConnection *connection, widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wep_key_entry")); g_assert (widget); - gtk_entry_set_width_chars (GTK_ENTRY (widget), 28); + gtk_editable_set_width_chars (GTK_EDITABLE (widget), 28); /* Create password-storage popup menu for password entry under entry's secondary icon */ if (connection) diff --git a/src/wireless-security/ws-wpa-psk.c b/src/wireless-security/ws-wpa-psk.c index eba22a79..5f0df4db 100644 --- a/src/wireless-security/ws-wpa-psk.c +++ b/src/wireless-security/ws-wpa-psk.c @@ -7,6 +7,7 @@ */ #include "nm-default.h" +#include "nma-private.h" #include <ctype.h> #include <string.h> @@ -51,7 +52,7 @@ validate (WirelessSecurity *parent, GError **error) g_assert (entry); secret_flags = nma_utils_menu_to_secret_flags (entry); - key = gtk_entry_get_text (GTK_ENTRY (entry)); + key = gtk_editable_get_text (GTK_EDITABLE (entry)); len = key ? strlen (key) : 0; if ( secret_flags & NM_SETTING_SECRET_FLAG_NOT_SAVED @@ -115,7 +116,7 @@ fill_connection (WirelessSecurity *parent, NMConnection *connection) widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wpa_psk_entry")); passwd_entry = widget; - key = gtk_entry_get_text (GTK_ENTRY (widget)); + key = gtk_editable_get_text (GTK_EDITABLE (widget)); g_object_set (s_wireless_sec, NM_SETTING_WIRELESS_SECURITY_PSK, key, NULL); /* Save PSK_FLAGS to the connection */ @@ -184,7 +185,7 @@ ws_wpa_psk_new (NMConnection *connection, gboolean secrets_only) g_signal_connect (G_OBJECT (widget), "changed", (GCallback) wireless_security_changed_cb, sec); - gtk_entry_set_width_chars (GTK_ENTRY (widget), 28); + gtk_editable_set_width_chars (GTK_EDITABLE (widget), 28); /* Create password-storage popup menu for password entry under entry's secondary icon */ if (connection) |