Wx text entry not updated

I have constantly problems with wx in Linux. In KICAD 5 the plots from ngspice were not properly displayed. I had to repaint the window manually (e.g. by stretching the picture size), then the proper graph appeared. Since I was not using the spice tool too much, this was not a large issue.
I was happy, that this behaviour was fixed in KICAD6. Plots were correctly plotted and updated without any additional handling.
The drawback of this update: the text editor windows took over this bad behaviour. I cannot see any entry in the editable text widget until I resize the UI. This is a bad implementation of the wx system and needs to be fixed.
When I start a text entry, a sample ui looks like this:

I can enter any text blindly, it will appear in the schematic, but no wysiwyg in the UI.

Are you using GTK 2 or GTK 3? There are known issues like this when using GTK 2, which is why we ask everyone to use GTK 3.

Window decorations look like linux mint. Are you on the latest OS release?

Since I get constant delivery delay notifications for the reply of your email please find my response below:
Plese find enclosed the libraries KICAD will use:

linux-vdso.so.1 (0x00007fff731bb000)
libwx_gtk3u_aui-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_gtk3u_aui-3.0.so.0 (0x00007f2db56b8000)
libwx_gtk3u_adv-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_gtk3u_adv-3.0.so.0 (0x00007f2db54c8000)
libwx_gtk3u_html-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_gtk3u_html-3.0.so.0 (0x00007f2db53e0000)
libwx_gtk3u_core-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_gtk3u_core-3.0.so.0 (0x00007f2db4d58000)
libwx_baseu_net-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_baseu_net-3.0.so.0 (0x00007f2db4d08000)
libwx_baseu-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0 (0x00007f2db4a40000)
libwx_baseu_xml-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_baseu_xml-3.0.so.0 (0x00007f2db4a28000)
libwx_gtk3u_stc-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_gtk3u_stc-3.0.so.0 (0x00007f2db47e0000)
libgtk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007f2db4028000)
libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f2db3e40000)
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f2db3de0000)
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f2db3cb0000)
libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007f2db3c18000)
libpython3.8.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0 (0x00007f2db36c0000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f2db34d8000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2db3388000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f2db3368000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2db3340000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2db3148000)
libgdk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007f2db3040000)
libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f2db2ff0000)
libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f2db2ec8000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f2db2ea0000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f2db2d60000)
libnotify.so.4 => /usr/lib/x86_64-linux-gnu/libnotify.so.4 (0x00007f2db2d50000)
libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f2db2d38000)
libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007f2db2d28000)
libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f2db2cf0000)
libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f2db2c68000)
libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f2db2be0000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f2db2bc0000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2db2bb8000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f2db2b88000)
libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f2db2b80000)
libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f2db2b68000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f2db2b60000)
libcairo-gobject.so.2 => /usr/lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007f2db2b50000)
libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f2db2b20000)
libatk-bridge-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007f2db2ae8000)
libepoxy.so.0 => /usr/lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007f2db29b0000)
libfribidi.so.0 => /usr/lib/x86_64-linux-gnu/libfribidi.so.0 (0x00007f2db2990000)
libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f2db2970000)
libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f2db2868000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f2db2820000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f2db2760000)
libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007f2db2700000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f2db26d0000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f2db26b0000)
libffi.so.7 => /usr/lib/x86_64-linux-gnu/libffi.so.7 (0x00007f2db26a0000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f2db2628000)
libnghttp2.so.14 => /usr/lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007f2db25f8000)
libidn2.so.0 => /usr/lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f2db25d0000)
librtmp.so.1 => /usr/lib/x86_64-linux-gnu/librtmp.so.1 (0x00007f2db25b0000)
libssh.so.4 => /usr/lib/x86_64-linux-gnu/libssh.so.4 (0x00007f2db2540000)
libpsl.so.5 => /usr/lib/x86_64-linux-gnu/libpsl.so.5 (0x00007f2db2528000)
libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f2db2490000)
libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f2db21b8000)
libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f2db2168000)
libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007f2db2110000)
liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007f2db20f8000)
libbrotlidec.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007f2db20e8000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f2db20e0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2db61e0000)
libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f2db20d8000)
libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f2db20c8000)
libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f2db20b8000)
libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f2db20b0000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f2db20a8000)
libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f2db2060000)
libwayland-cursor.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007f2db2050000)
libwayland-egl.so.1 => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f2db2048000)
libwayland-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f2db2030000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f2db2018000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f2db2008000)
libthai.so.0 => /usr/lib/x86_64-linux-gnu/libthai.so.0 (0x00007f2db1ff8000)
libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007f2db1f50000)
libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f2db1f48000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f2db1f18000)
libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f2db1f08000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f2db1cf8000)
libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007f2db1cd8000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f2db1cc8000)
libwebp.so.6 => /usr/lib/x86_64-linux-gnu/libwebp.so.6 (0x00007f2db1c58000)
libzstd.so.1 => /usr/lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f2db1ba8000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f2db1b78000)
libjbig.so.0 => /usr/lib/x86_64-linux-gnu/libjbig.so.0 (0x00007f2db1968000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f2db1910000)
libatspi.so.0 => /usr/lib/x86_64-linux-gnu/libatspi.so.0 (0x00007f2db18d8000)
libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f2db18a8000)
libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f2db1850000)
libpcre2-8.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f2db17c0000)
libunistring.so.2 => /usr/lib/x86_64-linux-gnu/libunistring.so.2 (0x00007f2db1638000)
libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f2db1460000)
libhogweed.so.5 => /usr/lib/x86_64-linux-gnu/libhogweed.so.5 (0x00007f2db1428000)
libnettle.so.7 => /usr/lib/x86_64-linux-gnu/libnettle.so.7 (0x00007f2db13e8000)
libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f2db1360000)
libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f2db1280000)
libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f2db1248000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f2db1240000)
libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f2db1230000)
libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f2db1210000)
libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00007f2db11c8000)
libbrotlicommon.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007f2db11a0000)
libdatrie.so.1 => /usr/lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f2db1190000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f2db1188000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f2db1180000)
libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f2db1160000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f2db10b0000)
libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f2db0f78000)
libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f2db0f60000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f2db0f58000)
libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00007f2db0f48000)
libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00007f2db0eb0000)
libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00007f2db0e08000)
libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00007f2db0dd0000)
libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00007f2db0db0000)
liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f2db0d88000)
libgcrypt.so.20 => /usr/lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f2db0c68000)
libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007f2db0c38000)
libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00007f2db0c20000)
libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007f2db0bd0000)
libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f2db0aa0000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f2db0a60000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f2db0a38000)

Since I get constant delivery delay notifications for the reply of your email please find my response below:
Yes, I’m using Mint with the latest long term OS-Release:
Linux holger 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Periodically, we get people on this forum wondering why we don’t support Mint (since it just uses the same packages as Ubuntu).

This is an example of precisely the type of issues that prevent us from supporting Mint without a dedicated developer running the operating system. They do not so a good job of quality control, leading to strange display issues like this.

I would highly recommend utilizing Ubuntu or Debian if running KiCad is important to you.

edit
Alternatively, if running Mint is more important, we are open to patches from the community that can detect and address these display issues.

1 Like

Thank you for this insight. Sometimes i hear about issues with software related to linux mint and their special implementations. However, in this special case I would see the poor quality control in the KICAD source.
From my experience the weakness is the usage of WXwidgets. I had some poor experience with this framework by myself, specially with the refresh of widgets. The behavior is changing even with small version upgrades, unimpressed from the statements of the documentation. Key topic is the refresh of each widget after content update: you cannot rely on the automatic refresh, you have to place it in the code as extra statement.
It seems to me, that one group dealing with the simulator is implementing this mechanism properly, while another group dealing with the schematic UI trust the documentation… Just an impression without checking the source code.

I guess you are trying to be funny here by insulting KiCad development. It’s an interesting choice but probably not terribly productive.

I was making a factual statement. Mint uses a lot of packages that they do not control, so quality control issues happen.

I think I’ve read in previous posts that the WX stuff is legacy code and just not the programming cycles to change it right now. But, feel free to fork it.

I use linux Mint 20.3 Cinnamon and don’t experience that issue.

wxWidgets is the cross platform framework that underlies all of our menus, dialogs, windows, event handling, etc, etc. It is not legacy code but it does have a slow update cycle. Periodically, we discuss whether we would want to move development to a different framework (e.g. QT, electron) and we generally calculate that it would take about a year of not developing the core functionality of KiCad. At the end, we would be using a new framework that will have all new issues that we would need to learn and work around.

At some point, if wx development slows/stops, we might need to consider that. But for now, wx gets us where we need to be and lets us (mostly) focus on developing CAD.

In case it wasn’t clear above, we have nothing against Mint and would be happy to support it but it requires a lead developer to agree to take on edge cases like this. Right now, none of us use Mint, so we’re not able to do that.

1 Like

Yeah. My use of ‘legacy’ was mostly meant to convey it’s already in there because that was a decision made a long time ago. My ‘fork it’ comment was semi-serious in terms of that’s probably what it would take to change it over to something else. At which point, something even better will pop up. :wink:

That’s my configuration:
Desktop: Cinnamon 5.2.7 wm: muffin dm: LightDM Distro: Linux Mint 20.3 Una
You may check for differences to your desktop environment.

Another point for discussion:


You are compiling using wxWidget 3.0.

I downloaded the source code and compiled the program on my environment with wxWidget 3.1.

This action is resolving my problems concerning the missing refresh without changing one code line.


Once again, I think you should discuss wxWidged incompatibilities instead of possible Linux Mint issues.

you sound like a good candidate for using the flatpak version of KiCad which ships with a bundled WxWidgets 3.1.

There are a variety of reasons why KiCad in most (all?) linux distribution repositories is built against wx 3.0, and that won’t change until wx 3.2 is released at some unspecified future date.

It’s not up to KiCad what version of libs Mint ships with. KiCad builds using whatever system provides, that’s how all native apps build on linux. If you want newer stuff you can either use flatpack, compile yourself or upgrade to testing OS release.

To me this sounds like you use wx as a framework for your own apps.

Is it possible you installed wxpython with pip3 as well? I think this could result in the issues you are seeing which will indeed be “resolved” by building kicad yourself.

I also use Mint and also do not experience this issue.

Application: KiCad

Version: 6.0.4-6f826c9f35~116~ubuntu20.04.1, release build

Libraries:
wxWidgets 3.0.4
libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3

Platform: Linux 5.4.0-105-generic x86_64, 64 bit, Little endian, wxGTK, cinnamon, x11

Build Info:
Date: Mar 21 2022 17:21:29
wxWidgets: 3.0.4 (wchar_t,wx containers,compatible with 2.8) GTK+ 3.24
Boost: 1.71.0
OCC: 7.5.2
Curl: 7.81.0
ngspice: 31
Compiler: GCC 9.4.0 with C++ ABI 1013

Build settings:
KICAD_USE_OCC=ON
KICAD_SPICE=ON