2020-12-13 Kjell Ahlstedt 3.24.3 2020-10-22 Chun-wei Fan NMake Makefiles: "Install" the codegen .m4 files This way, we can make gtkmm's codegen m4 scripts available to other packages that uses them to generate sources 2020-10-12 Kjell Ahlstedt gtk/gtkmm.h: Fix a typo 2020-10-11 Kjell Ahlstedt gtk/gtkmm.h: Describe how to use gtkmm with meson 2020-10-06 Kjell Ahlstedt Documentation: Explain key values and add links to gdk/gdkkeysyms.h. Fixes #6 2020-10-06 Kjell Ahlstedt gtk/gtkmm.h: Update the link to libsigc++'s home page 2020-10-01 Kjell Ahlstedt Meson build: Fix versioning on macOS See libsigcplusplus, pull request 65 2020-09-02 Kjell Ahlstedt Remove an obsolete file * docs/reference/README: Removed * meson.build: Exclude some git-tracked files from generated tarballs. Works as intended only with a new enough dist-build-scripts.py file from mm-common-get. 2020-08-31 Kjell Ahlstedt Gtk::Actionable::get_action_target_value(): Fix ref count gtk_actionable_get_action_target_value() does not give the caller a ref. get_action_target_value_vfunc_callback() shall store a copy of the returned value. It shall not give the caller a ref. 2020-08-31 Chun-wei Fan NMake Makefiles: Fix gendef invocation We ought to pass in the DLL filenames with the '.dll' extension, not just the .lib filenames. 2020-08-28 Chun-wei Fan gtk/gtkmm/private/object_p.h: Decorate Gtk::Object_Class with GTKMM_API This way, we can fix gtksourceviewmm builds on Visual Studio as well, when gtkmm was not built with gendef.exe 2020-07-23 Chun-wei Fan NMake Makefiles: Use Meson-style DLL and .lib naming if requested To make things more consistent and less prone to confusion, if 'USE_MESON_LIBS' is specified in the NMake command line, build the DLLs and .lib's that are named like the Meson counterparts. Binaries built with Meson+Visual Studio and the ones that are built via NMake using 'USE_MESON_LIBS' are interchangeable, provided that they are built with the same Visual Studio version. 2020-07-23 Chun-wei Fan NMake Makefiles: Fix build from release tarballs Make sure that we do not needlessly re-generate [gdk|gtk]mm[config.h|.rc], and ensure when they are generated, they will always contain the needed version info in them. Also streamline the process so that it is no longer necessary to run the 'prep-git-build' target; instead, this file generating process is carried out when necessary when running the 'all' target. 2020-07-08 Chun-wei Fan NMake Makefiles: Fix header search paths We should also look in $(PREFIX)\include\harfbuzz and $(PREFIX)\include for HarfBuzz (which the Pango headers may include) and Cairo (and libepoxy) respectively, since these are likely locations where the headers are located. 2020-07-08 Chun-wei Fan NMake Makefiles: Support ARM64 Windows builds This will make the NMake Makefiles capable of building ARM64 binaries of gdkmm and gtkmm, which can be used on Windows 10 on ARM systems. 2020-07-01 Kjell Ahlstedt gdk/meson.build: Set MSVC_TOOLSET_VER in conf data 2020-06-30 Chun-wei Fan NMake Makefiles: Fix previous commit We should also account for Visual Studio 2015 when we use 'USE_MESON_LIBS' with 'USE_COMPAT_LIBS' as well... 2020-06-30 Chun-wei Fan MSVC_NMake/README: Update build info Note that it is possible to build with Visual Studio with Meson, on the condition that the -mm dependencies are built with Meson as well, since we need their pkg-config files. Also note that the same compiler version should be used to build gtkmm and the -mm dependencies, even for Visual Studio 2015, 2017 and 2019. 2020-06-30 Chun-wei Fan NMake Makefiles: Apply toolset version for Meson-built deps As the Meson build files for Visual Studio apply the toolset version in the .lib filenames by default, apply the toolset version in the Meson-built -mm .lib files that we link in, just as we did when we we link in the -mm .lib files that was built with NMake, by default. The option 'USE_COMPAT_LIBS' will also mean that we will use the former behavior when we link in the Meson-built -mm .lib's, just as we did when we link in the NMake-built -mm .lib's. 2020-06-30 Chun-wei Fan Meson/Visual Studio builds: Include toolset version by default This makes the built DLL and .lib's contain the toolset version if the build is carried out using Visual Studio 2015 or later, unless the 'msvc14x-parallel-installable' option is set to be false during configuration. The reasoning behind this change is that there are subtle problems when, for instance, one tries to link to a Visual Studio 2015-built glibmm when building gtkmm and libxml++ with Visual Studio 2017 or 2019. This is unfortunate as Microsoft did try hard to make interoperating between binaries built with Visual Studio 2015, 2017 and 2019 as easy as possible in terms of ABI and API, but unfortunately this hits the corner cases where this compatibility does not work. As the name suggests, this attempts to make Visual Studio 2015, 2017 and 2019 builds share a single set of underlying C DLLs easier, while avoiding breakages caused by such subtle differences. 2020-06-30 Chun-wei Fan meson: Remove gmmproc-dir option It was not used, anyways, since we look for the -mm dependencies only via pkg-config, which will give us the info we need 2020-06-17 Kjell Ahlstedt docs/reference/meson.build: Improve the update for Doxygen >= 1.8.16 Move some code from meson.build to doc-install.pl (in mm-common), where regular expressions can be used. 2020-06-17 Chun-wei Fan NMake Makefiles: Clean up building demo and test programs We can group some items together and "generate" the build rules for the test programs instead of hand-writing them one-by-one, since the compiler and linker flags for them are largly the same. 2020-06-17 Chun-wei Fan NMake Makefiles: Fix 32-bit Visual Studio 2017 builds We need to disable /EHsc in the compiler flags when building gtkmm-demo, because it turns out that the linking will fail with an internal compiler error like on Visual Studio 2015 32-bit builds. The x64 builds on Visual Studio 2015 and later and 32-bit builds on Visual Studio 2019 build and run as expected. 2020-06-17 Chun-wei Fan NMake Makefiles: Distinguish between MSVC 2015, 2017 and 2019 It was found that we cannot completely rely on the fact that Visual Studio 2015~2019 tried very hard to be binary compatible, as there are corner cases when linking against glibmm built with Visual Studio 2015 with builds done by Visual Studio 2017 and 2019 where the code will fail to link and the DLLs are therefore not ABI-compatible. Note that the libsigc++ DLLs, however, are ABI compatible between these 3 Visual Studio versions. As a result, for the DLL and LIB names, use 'vc140' for Visual Studio 2015 builds, 'vc141' for Visual Studio 2017 builds and 'vc142' for Visual Studio 2019 builds, according to the toolset versions as defined by Microsoft. For people that may have previously built gtkmm (and glibmm) with Visual Studio 2017 or 2019, which had 'vc140' in the built .lib and DLL, an NMake option 'USE_COMPAT_LIBS' is added to make building such binaries with 'vc140' easier, if needed. 2020-06-15 Kjell Ahlstedt docs/reference/Doxyfile.in: Remove PERL_PATH Doxygen since version 1.8.0 does not use PERL_PATH and MSCGEN_PATH. 2020-06-15 Kjell Ahlstedt docs/reference/meson.build: Update for Doxygen >= 1.8.16 Doxygen 1.8.16 and later does not store tag file names in the html files. This requires changes in meson.build and in doc-install.pl (in mm-common). Otherwise references to other modules won't be updated in the html files when they are installed. 2020-06-05 Kjell Ahlstedt README: Update with instructions for building gtkmm 2020-05-18 Chun-wei Fan NMake Makefiles: Remove pkg-ver.mak That file is generated and was added to the repository by accident. 2020-05-15 Chun-wei Fan Meson: Fix building when gendef.exe is used When gendef.exe is used, the gtkmm library must link to the gdkmm library, as we do when gendef.exe is not used. Also, make sure that we do apply '-DGDKMM_USE_GENDEF' and '-DGTKMM_USE_GENDEF' as necessary 2020-05-15 Chun-wei Fan NMake Makefiles: Support building from Meson-generated tarballs Make the build files look for the sources in untracked/ when needed. One may need to run 'nmake /f Makefile.vc CFG= prep-git-build' prior to building. 2020-05-15 Chun-wei Fan Meson: Use '-utf-8' for the the MSVC C compiler We are also generating a GResource C file that will be compiled, so also use the -utf-8 compiler flag for the C compiler too 2020-05-15 Chun-wei Fan Meson: Fix linking demos and tests on Visual Studio GTK (and therefore gtkmm) applications require a linker flag '-entry:mainCRTStartup' if building with 'gui_app' is set to be true (which means, we are using /subsystem:windows in the linker flags on Visual Studio) unless a WinMain() is defined in the individual application's sources. This fixes the build of such programs by adding this linker flag where it is needed. 2020-05-15 Chun-wei Fan Meson: Ignore more warnings on Visual Studio We can safely ignore warnings C4251, C4273 and C4275 as we are sure that we want to use __declspec(dllimport) on the libraries that we depend upon, and even with the C++11 versions, we are basically tied to the same CRT as Visual Studio 2015 or later is required to build the C++11 branches of the the -mm dependencies fully. We can also ignore warning C4805 since a 'gboolean' is defined to mimic a 'bool'. 2020-05-15 Chun-wei Fan [gdk|gtk]mmconfig.h.meson: Define [GDK|GTK]MM_API appropriately Like in the [gdk|gtk]mmconfig.h.in files, we want to put the definitions of [GDK|GTK]MM_API in there appropriately, so that we may be able to build without gendef.exe 2020-05-15 Chun-wei Fan Meson: Clean-up and fix dependency search Since we have Meson build files for the C++ dependencies, just use the normal dependency search via pkg-config for all the -mm dependencies. This also includes looking for atkmm, unless we request not to. We do, however, want to look for gtk+-unix-print-3.0 only if we are not building on Windows (at least), becuase there is no way that it will be there on Windows. Also clean up the parts where we decide whether to build gdkmm/gtkmm as a shared library directly without using gendef.exe. 2020-05-15 Kjell Ahlstedt Add support for building gtkmm with Meson gtkmm-3.0 can be built with either Autotools or Meson. New files have been copied from glibmm-2.4 and atkmm-1.6 and modified. See MR !24 2020-05-13 Chun-wei Fan NMake Makefiles: Ignore warning C4273 We are likely using the dll-interface for our builds here, which we know pretty well, so we can just ignore this warning here too, as our builds here are tied to the CRT version 2020-05-13 Chun-wei Fan NMake Makefiles: Export symbols without gendef if possible We check to see whether we have a new-enough gmmproc that is capable of generating the headers from the .hg templates with function decorations at places where they need to be. If it is, we skip building gendef and use __declspec(dllexport) to export the needed symbols. Otherwise, we continue to use gendef.exe to export symbols, as we did before. 2020-05-13 Chun-wei Fan gtk/gtkmm/*.h: Mark functions with GTKMM_API If gmmproc is new enough to generate the full sources from the .hg files with GTKMM_API applied to all applicable places, we can use this to export symbols without the need to use gendef.exe. The build-time check to check if gmmproc is new enough will be in an upcoming commit. 2020-05-13 Chun-wei Fan gtk/src/*.hg: Mark classes and functions with GTKMM_API Mark all the classes and methods/functions (if applicable) with GTKMM_API so that we can use it to export symbols, if gmmproc is new enough to apply GTKMM_API to the _WRAP_ENUM, _WRAP_GERROR, _WRAP_EQUAL* and _CLASS_* items. The check on whether gmmproc is new enough will be in an upcoming commit. 2020-05-13 Chun-wei Fan tools/m4/class_gtkobject.m4: Allow applying decorations This updates the _CLASS_GTKOBJECT m4 macro so that we can decorate the declarations of classes and wrap functions with decorations so that we can use them to export symbols via defining those decorations with compiler directives. 2020-05-13 Chun-wei Fan gdk/gdkmm/*.h: Mark functions with GDKMM_API If gmmproc is new enough to generate the full sources from the .hg files with GDKMM_API applied to all applicable places, we can use this to export symbols without the need to use gendef.exe. The build-time check to check if gmmproc is new enough will be in an upcoming commit. 2020-05-13 Chun-wei Fan gdk/src/*.hg: Mark classes and functions with GDKMM_API Mark all the classes and methods/functions (if applicable) with GDKMM_API so that we can use it to export symbols, if gmmproc is new enough to apply GDKMM_API to the _WRAP_ENUM, _WRAP_GERROR and _CLASS_* items. The check on whether gmmproc is new enough will be in an upcoming commit. 2020-05-13 Chun-wei Fan gtk/gtkmmconfig.h.in: Re-organize GTKMM_API definitions This way, we can update the public headers and use this macro to export symbols without using gendef if the classes and methods are marked adequately. 2020-05-13 Chun-wei Fan gdk/gdkmmconfig.h.in: Add GDKMM_API This enables us to use this macros later in public headers so that we can export symbols from the DLLs using compiler directives, instead of gendef, if we marked classes and APIs/methods sufficiently. 2020-05-13 Chun-wei Fan NMake Makefiles: Fix previous commit on /utf-8 The previous commit only meant "Visual Studio 2017 or later", where it should have been "Visual Studio 2015 or later". Doh :| 2020-05-13 Chun-wei Fan NMake Makefiles: Fix build rules Make sure that the cmd.exe 'if not...' statements are correct. 2020-05-13 Chun-wei Fan NMake Makefiles: Use /utf-8 if available This flag is provided on Visual Studio 2015 and later, so that it will help to work around unicode handling issues that occur when building on East Asian locales, that is demonstrated by error/warning C4819. Disabling warning C4828 is meant for gendef.exe, which comes as a consequence of using /utf-8. 2020-05-10 Kjell Ahlstedt gtk/gtkmm/filelist.am: Remove border.h border.h and border.cc are generated files since about 10 years. border.hg is listed in gtk/src/filelist.am. 2020-05-10 Kjell Ahlstedt docs/reference/images/stock: Remove .svg files There are about 200 unused .svg files. Remove them. Stock items are deprecated. They are removed in gtk4 and gtkmm4. When Meson support is added, and tarballs are created with 'ninja dist', all files stored in git will be included in the tarballs unless removed by a custom command. It's easier to remove unused files from the git repo. 2020-05-09 Kjell Ahlstedt Fix build with X11 backend disabled * configure.ac: * gdk/gdkmmconfig.h.in: Define GDKMM_X11_BACKEND_ENABLED if X11 API shall be built. * gtk/src/plug.hg: * gtk/src/socket.hg: Enable in wrap_init.cc if GDKMM_X11_BACKEND_ENABLED is defined. (Was enabled if GDK_WINDOWING_X11 was defined.) This was partly fixed 8 years ago. See Bugzilla #678883. But it failed if the X11 backend was available in gtk, but X11-only code shall still not be built in gtkmm. (configuration with --enable-x11-backend=no) 2020-05-06 Chun-wei Fan NMake Makefiles: Allow linking to more Meson-built items atkmm and cairomm recently gained Meson build files, so add their libary and DLL names to the NMake Makefiles so that we can easily link to them when we use USE_MESON_LIBS in the NMake command line. 2020-05-06 Chun-wei Fan NMake Makefiles: Avoid an Internal Compiler Error On Visual Studio 2015 32-bit, the compiler crashes while building gtkmm3-demo with /EHsc enabled, so disable that if we are on Visual Studio 2015 32-bit. 2020-04-13 Chun-wei Fan NMake Makefiles: Fix test program build rules We want to make sure that we really do re-link the test programs if either or both of gdkmm and gtkmm were rebuilt. Also, remove repeated use of /wd4275, since we are using that throughout the build of gtkmm. 2020-04-10 Chun-wei Fan NMake Makefiles: Mention about the 'prep-git-build' target Let people know how it may be used to build from GIT checkouts. 2020-04-10 Chun-wei Fan NMake Makefiles: Fix headers 'install' The previous update accidentily removed the parts where we copy the deprecated header files, so we want to restore that. We also want to streamline whether we copy the deprecated hand-written headers by whether we include deprecated items in the build. 2020-04-08 Chun-wei Fan NMake Makefiles: Update build info Tell people about the build options USE_MESON_LIBS and GMMPROC[_PANGO|_ATK]_DIR. 2020-04-08 Chun-wei Fan NMake Makefiles: Support linking to Meson-built -mm deps This makes it easier for people that want to build dependencies with Meson as far as possible, by adding an USE_MESON_LIBS NMake option. Note that by using USE_MESON_LIBS at this time of writing, libsigc++, glibmm and pangomm should be built by Meson, and atkmm and cairomm should also link to the Meson-built variants of glibmm and libsigc++ as well (as atkmm and cairomm do not yet have Meson build files). 2020-04-08 Chun-wei Fan NMake Makefiles: Speed up builds Just use 'md' to create the intermediate build directories, so that we do not need to re-load NMake Makefile stuff that often, so this should make things build faster. This also enables us to clean up generate-msvc.mak as well. 2020-04-08 Chun-wei Fan NMake Makefiles: Fix 'nmake tests' Make sure that we have all the rules for the various test programs that are listed by their directories in $(srcroot)/tests 2020-04-08 Chun-wei Fan NMake Makefiles: Fix up 'nmake clean' Look instead for the build directories by using the dirname's in $(srcroot)/tests, and constructing the IntDir paths from them. 2020-04-06 Chun-wei Fan NMake Makefiles: Silence some warnings Enable /EHsc so that we do not receive warning C4577 for constexpr usage. Also disable warnings C4251 and C4275 as they relate to whether we are using __declspec(dllimport) for the public symbols in the glibmm headers, when building against glibmm 2.64.0 or later. Since we know what we are indeed going to use __declspec(dllimport) as we build against glibmm 2.64.0 or later, we can just ignore those warnings. 2020-04-06 Chun-wei Fan NMake Makefiles: Add rules to generate sources This way, we are now able to build directly from a GIT checkout by first running the 'prep-git-build' target before running the NMake build itself. This will require PERL (with XML::Parser) and some common UNIX utilities such as 'cp' and 'rm' in order to run gmmproc from glibmm. Note that the m4 files for atkmm and pangomm used for their code generation are required as well. 2020-04-06 Chun-wei Fan NMake Makefiles: Add rules to generate versioned items This adds rules to generate [gdk|gtk]mm/[gdk|gtk]mm.rc and [gdk|gtk]mm/[gdk|gtk]mmconfig.h from their .in counterparts by reading from configure.ac. 2020-04-06 Chun-wei Fan NMake Makefiles: Separate OutDir and IntDir by PDB version This way, we reduce the likelyhood that object files built by different toolset versions get mixed up with the ones built by other toolset versions, which can well be a source of trouble. 2020-04-05 Chun-wei Fan NMake Makefiles: Standardize on PDB version Make the default prefix relate to the PDB version, not the Visual Studio version. This is becuase the dependent C++-11 -mm libraries already did so. 2020-04-05 Chun-wei Fan NMake Makefiles: Get rid of references to Vulkan Only the master (gtk-4) branch use Vulkan, so we don't need these here. 2020-01-18 Kjell Ahlstedt Gtk::TreeView::append_column() doc: Modify the code exmaple 2020-01-18 Pavlo Solntsev Gtk::TreeView::append_column() doc: Add code example 2020-01-02 Kjell Ahlstedt GLArea demo: Fix a crash Fixes #63 2019-12-13 Kjell Ahlstedt Update the GLArea demo Similar fixes have been made to the GLArea demo in gtk. The replacement of m_Vao by m_Buffer in some methods has been performed only in gtk4, but it would be appropriate to do it also in gtk3. 2019-12-01 Daniel Boles tests/builder: Test derived props declared in C++, by giving DerivedButton one and then setting it in the Builder .ui file. 2019-11-24 Daniel Boles tests/builder: Default-init members at declaration as that is safer than having to remember to default-construct pointers in every constructor overload—& getting undefined behaviour if we don’t. 2019-11-24 Daniel Boles tests/builder: Fix icon_name to const& and shorten …the way of declaring that it should default to a default-init’d string. It didn’t make sense to pass a const value, so make it a const reference as per basically everywhere else that we take string parameters. 2019-11-24 Daniel Boles gtk-demo/demowindow—Don't use C++14 auto deduction I broke this in 152fe12c6fe2960c98665c488d6d48a1d9e11f8b back in 2017 :O It seems it only got noticed now I set warnings as errors & `make check` >>> /home/daniel/jhbuild/checkout/gnome/gtkmm-3/demos/gtk-demo/demowindow.cc:54:1: error: ‘demo_columns’ function uses ‘auto’ type specifier without trailing return type 54 | const auto& demo_columns() | ^~~~~ /home/daniel/jhbuild/checkout/gnome/gtkmm-3/demos/gtk-demo/demowindow.cc:54:1: note: deduced return type only available with ‘-std=c++14’ or ‘-std=gnu++14’ >>> 2019-11-19 Daniel Boles Button: Explain how to unset image via prop proxy, since without being able to add ABI we cannot add unset_image() for that https://gitlab.gnome.org/GNOME/gtkmm/issues/58 https://gitlab.gnome.org/GNOME/gtkmm/merge_requests/22#note_650284 2019-11-19 Daniel Boles Button: Remove mentions of NULL args @ set_image() ...by copying the documentation generated from the C docs and fixing it up, because neither a string nor a Widget& in C++ can be NULL/nullptr. The documentation as generated and previously left in the .h file was: >>> ```cpp /** Set the image of @a button to the given widget. The image will be * displayed if the label text is nullptr or if * Gtk::Button::property_always_show_image() is true. You don’t have to call * Gtk::Widget::show() on @a image yourself. * * @newin{2,6} * * @param image A widget to set as the image for the button, or nullptr to unset. */ ``` >>> https://gitlab.gnome.org/GNOME/gtkmm/issues/58 https://gitlab.gnome.org/GNOME/gtkmm/merge_requests/22 2019-11-18 Kjell Ahlstedt Avoid unnecessary conversions between std::string and Glib::ustring and make necessary conversions explicit. 2019-11-14 Kjell Ahlstedt Gtk::Application, Window: Improve some documentation Improve the description of Application::add_window() and Window::set_application(), making it clear that they differ as to what happens when a window is hidden. Fixes #56