Coder Social home page Coder Social logo

framework's Introduction

Maliit

Maliit provides a flexible and cross-platform input method framework. It has a plugin-based client-server architecture where applications act as clients and communicate with the Maliit server via input context plugins. The communication link currently uses D-Bus. Maliit is an open source framework (LGPL 2.1) with a production-quality keyboard plugin (LGPL 3.0).

Installing

Qt 5 must be installed to build the Maliit framework. At a terminal, run:

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make
make install

Running

Set Maliit as the Qt and GTK+ input context:

export QT_IM_MODULE=Maliit
export GTK_IM_MODULE=Maliit

Start the server:

maliit-server

Note that a compositing window manager and a D-Bus session bus are required to use Maliit.

Test with the provided example applications:

maliit-exampleapp-plainqt # for Qt
maliit-exampleapp-gtk2 # for Gtk2
maliit-exampleapp-gtk3 # for Gtk3

Double-tap on the input field, and an input method (usually a virtual keyboard) should be shown. Note that an input method plugin, such as the Maliit keyboard from the maliit-plugins package, must be installed for the example applications to work.

NETWORK TRANSPARENCY

On one computer run:

maliit-server -allow-anonymous -override-address tcp:host=xxx.xxx.xxx.xxx,port=yyyyy

Any valid dbus address is supported. Using -allow-anonymous must only be done on a trusted network. If using a method with authentication, the -allow-anonymous flag may be dropped.

On another computer:

MALIIT_SERVER_ADDRESS=tcp:host=xxx.xxx.xxx.xxx,port=yyyyy
export MALIIT_SERVER_ADDRESS
maliit-exampleapp-plainqt (or maliit-exampleapp-gtk{2,3})

Where xxx.xxx.xxx.xxx is IP address of computer where maliit-server is ran and yyyyy is port number < 65536.

framework's People

Contributors

aleixpol avatar araujoluis avatar bhush9 avatar colorant avatar csaavedra avatar deqing avatar dobey avatar elleo avatar gvaldambrini avatar hannuko avatar inean avatar jmalmari avatar jpetersen avatar kamikazow avatar kananoja avatar kecsap avatar krnowak avatar maliit-buildbot avatar mariogrip avatar mbarbon avatar murraycu avatar nicolasfella avatar pvuorela avatar ruedigergad avatar rustylynch avatar sandsmark avatar sil2100 avatar surprized avatar veskuh avatar zccrs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

framework's Issues

undefined reference to 'vtable for Maliit::XCBPlatform'

I want to use the maliit keyboard 2.0 on an embedded Linux system with wayland without X11. Therefore I configure the cmake with
-Denable-docs=OFF
-Denable-tests=OFF
-Denable-dbus-activation=ON
-Denable-xcb=OFF

maliit-cmake.txt

but when I start make I get an error message that there is a undefined reference to 'vtable for Maliit::XCBPlatform'

maliit-make.txt

So what can I do to build maliit without X11 dependencies?

How to run Maliit on Ubuntu?

Hi,

Maliit is available in the Ubuntu repositories, see:

http://packages.ubuntu.com/search?keywords=maliit&searchon=names&suite=all&section=all

However, for some reason it does not seem to start.

This might be a dumb question, but:

How do you actually use Maliit on Ubuntu? Can not get it to open ๐Ÿ˜Ÿ.

Looks like lot of other people have the same issue, see:

https://ubuntuforums.org/showthread.php?t=2316415
http://askubuntu.com/questions/709269/maliit-on-screen-keyboard
http://askubuntu.com/questions/421173/maliit-onscreen-keyboard-installed-on-msi-windpad-110w-tablet-in-saucy-but-will
http://stackoverflow.com/questions/33256854/how-to-get-maliit-keyboard-working-on-linux-mint

Any chance you could help?

Regards

Application crashes when updating preedit with no focus object

  1. Compile FW with qmake CONFIG+=qt5-inputcontext.
  2. Run maliit-server and bring up VKB in maliit-exampleapp-plainqt.
  3. Type some stuff, then focus out.
  4. App crashes.
(gdb) bt
#0  0x00007ffff6566dac in QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::data (this=0x8)
    at ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:132
#1  0x00007ffff6587f24 in qGetPtrHelper<QScopedPointer<QObjectData> > (p=...)
    at ../../include/QtCore/../../src/corelib/global/qglobal.h:882
#2  0x00007ffff6587f42 in QObject::d_func (this=0x0) at ../../include/QtCore/../../src/corelib/kernel/qobject.h:117
#3  0x00007ffff67c5126 in QCoreApplication::notifyInternal (this=0x7fffffffe010, receiver=0x0, event=0x7fffffffc700)
    at kernel/qcoreapplication.cpp:797
#4  0x00007ffff75763ed in QCoreApplication::sendEvent (receiver=0x0, event=0x7fffffffc700)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:206
#5  0x00007fffed47fb6a in MInputContext::updatePreeditInternally (this=0x626d60, string=..., preeditFormats=..., 
    replacementStart=0, replacementLength=0, cursorPos=-1) at minputcontext.cpp:524
#6  0x00007fffed47f5c1 in MInputContext::updatePreedit (this=0x626d60, string=..., preeditFormats=..., replacementStart=0, 
    replacementLength=0, cursorPos=-1) at minputcontext.cpp:474
#7  0x00007fffed484d47 in MInputContext::qt_static_metacall (_o=0x626d60, _c=QMetaObject::InvokeMetaMethod, _id=6, 
    _a=0x7fffffffcc40) at .moc/moc_minputcontext.cpp:196
#8  0x00007ffff68057a6 in QMetaObject::activate (sender=0x626f90, signalOffset=3, local_signal_index=8, argv=0x7fffffffcc40)
    at kernel/qobject.cpp:3451
#9  0x00007ffff6805108 in QMetaObject::activate (sender=0x626f90, m=0x7fffed6a33c0, local_signal_index=8, argv=0x7fffffffcc40)
    at kernel/qobject.cpp:3326
#10 0x00007fffed48d8c3 in MImServerConnection::updatePreedit (this=0x626f90, _t1=..., _t2=..., _t3=0, _t4=0, _t5=-1)
    at .moc/moc_mimserverconnection.cpp:431
#11 0x00007fffed48f19f in Inputcontext1Adaptor::updatePreedit (this=0x609920, in0=..., in1=..., in2=0, in3=0, in4=-1)
    at minputmethodcontext1interface_adaptor.cpp:123
#12 0x00007fffed48ffd9 in Inputcontext1Adaptor::qt_static_metacall (_o=0x609920, _c=QMetaObject::InvokeMetaMethod, _id=14, 
    _a=0x7fffffffcf80) at .moc/moc_minputmethodcontext1interface_adaptor.cpp:197
#13 0x00007fffed49016c in Inputcontext1Adaptor::qt_metacall (this=0x609920, _c=QMetaObject::InvokeMetaMethod, _id=14, 
    _a=0x7fffffffcf80) at .moc/moc_minputmethodcontext1interface_adaptor.cpp:247
#14 0x00007fffed90c69c in QDBusConnectionPrivate::deliverCall (this=0x860390, object=0x609920, msg=..., metaTypes=..., slotIdx=19)
    at qdbusintegrator.cpp:1013
#15 0x00007fffed90be1e in QDBusConnectionPrivate::activateCall (this=0x860390, object=0x609920, flags=273, msg=...)
    at qdbusintegrator.cpp:918
#16 0x00007fffed90f68a in QDBusConnectionPrivate::activateObject (this=0x860390, node=..., msg=..., pathStartPos=35)
    at qdbusintegrator.cpp:1489
#17 0x00007fffed90fe2c in QDBusActivateObjectEvent::placeMetaCall (this=0x801cd0) at qdbusintegrator.cpp:1603
#18 0x00007ffff67ff01c in QObject::event (this=0x626f90, e=0x801cd0) at kernel/qobject.cpp:1070
#19 0x00007ffff7583dfe in QApplicationPrivate::notify_helper (this=0x609ea0, receiver=0x626f90, e=0x801cd0)
    at kernel/qapplication.cpp:3410
#20 0x00007ffff75814e0 in QApplication::notify (this=0x7fffffffe010, receiver=0x626f90, e=0x801cd0) at kernel/qapplication.cpp:2841
#21 0x00007ffff67c516c in QCoreApplication::notifyInternal (this=0x7fffffffe010, receiver=0x626f90, event=0x801cd0)
    at kernel/qcoreapplication.cpp:800

Logging

Hello.
I currently have an issue where i've gotten the keyboard working but im running into an odd issue on boot where it goes to 100% cpu and essentially blocks the system.

If i kill it, and let it start as it should, via qprocess in the application, it works fine.
Im am looking for where the logs would be so I can try and determine:
-Why its starting itself when it should be started by the application
-Why, when it starts itself, it uses 100% cpu.

Thank you for your time.

cmake error installing

when trying to compile from the latest release cmake returns these error:

By not providing "FindQt5XkbCommonSupport.cmake" in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
"Qt5XkbCommonSupport", but CMake did not find one.

Could not find a package configuration file provided by
"Qt5XkbCommonSupport" with any of the following names:

Qt5XkbCommonSupportConfig.cmake
qt5xkbcommonsupport-config.cmake

Add the installation prefix of "Qt5XkbCommonSupport" to CMAKE_PREFIX_PATH
or set "Qt5XkbCommonSupport_DIR" to a directory containing one of the above
files.  If "Qt5XkbCommonSupport" provides a separate development package or
SDK, be sure it has been installed.

Is it some packages missing?

Recommended type of window manager.

I am attempting to get Maliit running on a tablet style device, but i've run across an odd issue that I didnt have on the desktop.
When the text input is activated (touched like one is going to type) the keyboard appears but it covers the entire application.
The keyboard shows up as it normally would in the lower third of the screen, but the remaining space is black and I can no longer see the application I was attempting to enter text into.
Are there any additional system requirements for Maliit server / keyboard system wise? Im a bit confused as to whats happening here.

Building latest `master` fails

Summary

  • Building the latest master (commit 2d2b7ac) fails
  • Building against a478e92 (tag 2.0.0) works

Abridged Build Log

framework$ mkdir build; cd build
framework/build$ cmake ..
framework/build$ make
... snipped ...
[ 58%] Linking CXX shared module libmaliitplatforminputcontextplugin.so
[ 58%] Built target maliitplatforminputcontextplugin
Scanning dependencies of target doc
[ 58%] Generating API documentation with Doxygen
warning: Tag 'COLS_IN_ALPHA_INDEX' at line 65 of file '/home/user/Documents/Build/maliit/framework/build/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag 'PERL_PATH' at line 128 of file '/home/user/Documents/Build/maliit/framework/build/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
[ 58%] Built target doc
Scanning dependencies of target inputpanel-shell_autogen
[ 59%] Automatic MOC for target inputpanel-shell

AutoMoc subprocess error
------------------------
The moc process failed to compile
  "SRC:/src/qt/plugins/shellintegration/inputpanelshellplugin.cpp"
into
  "SRC:/build/inputpanel-shell_autogen/include/inputpanelshellplugin.moc"
included by
  "SRC:/src/qt/plugins/shellintegration/inputpanelshellplugin.cpp"

Command
-------
/usr/lib/qt5/bin/moc -DHAVE_WAYLAND "-DMALIIT_CONFIG_ROOT=\"/maliit/\"" "-DMALIIT_DEFAULT_HW_PLUGIN=\"libmaliit-keyboard-plugin.so\"" "-DMALIIT_DEFAULT_PLUGIN=\"libmaliit-keyboard-plugin.so\"" "-DMALIIT_DEFAULT_SUBVIEW=\"\"" -DMALIIT_ENABLE_MULTITOUCH=true "-DMALIIT_EXTENSIONS_DIR=\"/usr/local/share/maliit-framework/extensions\"" -DMALIIT_FRAMEWORK_USE_INTERNAL_API "-DMALIIT_PLUGINS_DATA_DIR=\"/usr/local/share/maliit/plugins\"" "-DMALIIT_PLUGINS_DIR=\"/usr/local/lib/maliit/plugins\"" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_WAYLANDCLIENT_LIB -Dinputpanel_shell_EXPORTS -I/home/user/Documents/Build/maliit/framework/build -I/home/user/Documents/Build/maliit/framework -I/home/user/Documents/Build/maliit/framework/src -I/home/user/Documents/Build/maliit/framework/common -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.15.2 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.15.2/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.15.2 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.15.2/QtCore -I/usr/include/x86_64-linux-gnu/qt5/QtWaylandClient/5.15.2 -I/usr/include/x86_64-linux-gnu/qt5/QtWaylandClient/5.15.2/QtWaylandClient -I/usr/include/x86_64-linux-gnu/qt5/QtXkbCommonSupport/5.15.2 -I/usr/include/x86_64-linux-gnu/qt5/QtXkbCommonSupport/5.15.2/QtXkbCommonSupport -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWaylandClient -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/usr/include -I/usr/include/c++/10 -I/usr/include/x86_64-linux-gnu/c++/10 -I/usr/include/c++/10/backward -I/usr/lib/gcc/x86_64-linux-gnu/10/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu --include /home/user/Documents/Build/maliit/framework/build/inputpanel-shell_autogen/moc_predefs.h --output-dep-file -o /home/user/Documents/Build/maliit/framework/build/inputpanel-shell_autogen/include/inputpanelshellplugin.moc /home/user/Documents/Build/maliit/framework/src/qt/plugins/shellintegration/inputpanelshellplugin.cpp

Output
------
/home/user/Documents/Build/maliit/framework/src/qt/plugins/shellintegration/inputpanelshellplugin.cpp:23: Parse error at "IID"

make[2]: *** [CMakeFiles/inputpanel-shell_autogen.dir/build.make:77: CMakeFiles/inputpanel-shell_autogen] Error 1
make[1]: *** [CMakeFiles/Makefile2:1055: CMakeFiles/inputpanel-shell_autogen.dir/all] Error 2
make: *** [Makefile:160: all] Error 2

Version Information

  • PoP OS (X11)
  • moc --version: moc 5.15.2

Windows resize when using maliit

I hope this is the right place. I'm using maliit (the only option AFAIK) on my Surface Go, running KDE Neon (20.04 based) in a Wayland session.

When maliit is used, often windows get smaller to accomodate it (Konsole and Firefox both do this), but then do not return to full size.

CMake fails to get results from PkgConfig

My solution was to export the proper locations through external variables.
This patch 0000-fix_header_locations.txt
Or this should work as a temporary fix:

target_include_directories(inputpanel-shell PUBLIC $ENV{wayland_private_headers_devel_includes})
target_include_directories(inputpanel-shell PUBLIC $ENV{xkbcommon_includes})
target_include_directories(maliit-common PUBLIC $ENV{xkbcommon_includes})

Simon from the Plasma Mobile community proposed adding something similar to this at the lists:
find_package(PkgConfig REQUIRED) <-- already on the lists
pkg_check_modules(IMGUI REQUIRED IMPORTED_TARGET GLOBAL imgui)
target_link_libraries(OgreOverlay PRIVATE PkgConfig::IMGUI)

Same problem for maliit-keyboard2.

tests/ut_mimserveroptions/ut_mimserveroptions.cpp: FTBFS ,error: no match for โ€˜operator==โ€™ (operand types are โ€˜const MImServerCommonOptionsโ€™ and โ€˜const MImServerCommonOptionsโ€™)

[ 85%] Building CXX object CMakeFiles/ut_mimserveroptions.dir/ut_mimserveroptions_autogen/mocs_compilation.cpp.o
/usr/bin/c++ -DHAVE_WAYLAND -DHAVE_XCB -DIN_TREE_TEST_PLUGIN_DIR=\"/<<PKGBUILDDIR>>/examples/plugins\" -DMALIIT_CONFIG_ROOT=\"/maliit/\" -DMALIIT_DEFAULT_HW_PLUGIN=\"libmaliit-keyboard-plugin.so\" -DMALIIT_DEFAULT_PLUGIN=\"libmaliit-keyboard-plugin.so\" -DMALIIT_DEFAULT_SUBVIEW=\"\" -DMALIIT_ENABLE_MULTITOUCH=true -DMALIIT_EXTENSIONS_DIR=\"/usr/share/maliit-framework/extensions\" -DMALIIT_FRAMEWORK_USE_INTERNAL_API -DMALIIT_PLUGINS_DATA_DIR=\"/usr/share/maliit/plugins\" -DMALIIT_PLUGINS_DIR=\"/usr/lib/x86_64-linux-gnu/maliit/plugins\" -DMALIIT_TEST_DATA_PATH=\"/usr/lib/x86_64-linux-gnu/maliit-framework-tests\" -DMALIIT_TEST_PLUGINS_DIR=\"/usr/lib/x86_64-linux-gnu/maliit-framework-tests/plugins\" -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_TESTCASE_BUILDDIR=\"/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu\" -DQT_TESTLIB_LIB -I/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu -I/<<PKGBUILDDIR>> -I/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/ut_mimserveroptions_autogen/include -I/<<PKGBUILDDIR>>/src -I/<<PKGBUILDDIR>>/common -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.15.4 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.15.4/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.15.4 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.15.4/QtCore -I/<<PKGBUILDDIR>>/tests/utils -I/<<PKGBUILDDIR>>/connection -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtTest -isystem /usr/include/x86_64-linux-gnu/qt5/QtDBus -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuick -isystem /usr/include/x86_64-linux-gnu/qt5/QtQmlModels -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -MD -MT CMakeFiles/ut_mimserveroptions.dir/ut_mimserveroptions_autogen/mocs_compilation.cpp.o -MF CMakeFiles/ut_mimserveroptions.dir/ut_mimserveroptions_autogen/mocs_compilation.cpp.o.d -o CMakeFiles/ut_mimserveroptions.dir/ut_mimserveroptions_autogen/mocs_compilation.cpp.o -c /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/ut_mimserveroptions_autogen/mocs_compilation.cpp
[ 86%] Building CXX object CMakeFiles/ut_mimserveroptions.dir/tests/ut_mimserveroptions/ut_mimserveroptions.cpp.o
/usr/bin/c++ -DHAVE_WAYLAND -DHAVE_XCB -DIN_TREE_TEST_PLUGIN_DIR=\"/<<PKGBUILDDIR>>/examples/plugins\" -DMALIIT_CONFIG_ROOT=\"/maliit/\" -DMALIIT_DEFAULT_HW_PLUGIN=\"libmaliit-keyboard-plugin.so\" -DMALIIT_DEFAULT_PLUGIN=\"libmaliit-keyboard-plugin.so\" -DMALIIT_DEFAULT_SUBVIEW=\"\" -DMALIIT_ENABLE_MULTITOUCH=true -DMALIIT_EXTENSIONS_DIR=\"/usr/share/maliit-framework/extensions\" -DMALIIT_FRAMEWORK_USE_INTERNAL_API -DMALIIT_PLUGINS_DATA_DIR=\"/usr/share/maliit/plugins\" -DMALIIT_PLUGINS_DIR=\"/usr/lib/x86_64-linux-gnu/maliit/plugins\" -DMALIIT_TEST_DATA_PATH=\"/usr/lib/x86_64-linux-gnu/maliit-framework-tests\" -DMALIIT_TEST_PLUGINS_DIR=\"/usr/lib/x86_64-linux-gnu/maliit-framework-tests/plugins\" -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_TESTCASE_BUILDDIR=\"/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu\" -DQT_TESTLIB_LIB -I/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu -I/<<PKGBUILDDIR>> -I/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/ut_mimserveroptions_autogen/include -I/<<PKGBUILDDIR>>/src -I/<<PKGBUILDDIR>>/common -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.15.4 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.15.4/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.15.4 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.15.4/QtCore -I/<<PKGBUILDDIR>>/tests/utils -I/<<PKGBUILDDIR>>/connection -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtTest -isystem /usr/include/x86_64-linux-gnu/qt5/QtDBus -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuick -isystem /usr/include/x86_64-linux-gnu/qt5/QtQmlModels -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -MD -MT CMakeFiles/ut_mimserveroptions.dir/tests/ut_mimserveroptions/ut_mimserveroptions.cpp.o -MF CMakeFiles/ut_mimserveroptions.dir/tests/ut_mimserveroptions/ut_mimserveroptions.cpp.o.d -o CMakeFiles/ut_mimserveroptions.dir/tests/ut_mimserveroptions/ut_mimserveroptions.cpp.o -c /<<PKGBUILDDIR>>/tests/ut_mimserveroptions/ut_mimserveroptions.cpp
In file included from /usr/include/x86_64-linux-gnu/qt5/QtTest/qtest.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtTest/QtTest:11,
                 from /<<PKGBUILDDIR>>/tests/ut_mimserveroptions/ut_mimserveroptions.h:19,
                 from /<<PKGBUILDDIR>>/tests/ut_mimserveroptions/ut_mimserveroptions.cpp:14:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h: In instantiation of โ€˜bool QTest::qCompare(const T&, const T&, const char*, const char*, const char*, int) [with T = MImServerCommonOptions]โ€™:
/<<PKGBUILDDIR>>/tests/ut_mimserveroptions/ut_mimserveroptions.cpp:107:5:   required from here
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: error: no match for โ€˜operator==โ€™ (operand types are โ€˜const MImServerCommonOptionsโ€™ and โ€˜const MImServerCommonOptionsโ€™)
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qhashfunctions.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:47,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:49,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qabstractanimation.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:6,
                 from /usr/include/x86_64-linux-gnu/qt5/QtTest/QtTestDepends:3,
                 from /usr/include/x86_64-linux-gnu/qt5/QtTest/QtTest:3:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:113:41: note: candidate: โ€˜template<class T1, class T2> constexpr bool operator==(const QPair<T1, T2>&, const QPair<T1, T2>&)โ€™
  113 | Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
      |                                         ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:113:41: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QPair<T1, T2>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:53:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:184:13: note: candidate: โ€˜template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, const QScopedPointer<T, Cleanup>&)โ€™
  184 | inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, const QScopedPointer<T, Cleanup> &rhs) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:184:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QScopedPointer<T, Cleanup>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:196:13: note: candidate: โ€˜template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, std::nullptr_t)โ€™
  196 | inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, std::nullptr_t) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:196:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QScopedPointer<T, Cleanup>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:202:13: note: candidate: โ€˜template<class T, class Cleanup> bool operator==(std::nullptr_t, const QScopedPointer<T, Cleanup>&)โ€™
  202 | inline bool operator==(std::nullptr_t, const QScopedPointer<T, Cleanup> &rhs) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:202:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QScopedPointer<T, Cleanup>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qmetatype.h:48,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:54:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:557:6: note: candidate: โ€˜template<class T, int Prealloc1, int Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1>&, const QVarLengthArray<T, Prealloc2>&)โ€™
  557 | bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)
      |      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:557:6: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QVarLengthArray<T, Prealloc1>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:28:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qarraydatapointer.h:193:13: note: candidate: โ€˜template<class T> bool operator==(const QArrayDataPointer<T>&, const QArrayDataPointer<T>&)โ€™
  193 | inline bool operator==(const QArrayDataPointer<T> &lhs, const QArrayDataPointer<T> &rhs)
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qarraydatapointer.h:193:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QArrayDataPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qlocale.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qcalendar.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:37:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:141:32: note: candidate: โ€˜template<class T> bool operator==(std::nullptr_t, const QSharedDataPointer<T>&)โ€™
  141 | template <class T> inline bool operator==(std::nullptr_t p1, const QSharedDataPointer<T> &p2)
      |                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:141:32: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QSharedDataPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:147:32: note: candidate: โ€˜template<class T> bool operator==(const QSharedDataPointer<T>&, std::nullptr_t)โ€™
  147 | template <class T> inline bool operator==(const QSharedDataPointer<T> &p1, std::nullptr_t p2)
      |                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:147:32: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QSharedDataPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:287:32: note: candidate: โ€˜template<class T> bool operator==(std::nullptr_t, const QExplicitlySharedDataPointer<T>&)โ€™
  287 | template <class T> inline bool operator==(std::nullptr_t p1, const QExplicitlySharedDataPointer<T> &p2)
      |                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:287:32: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QExplicitlySharedDataPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:293:32: note: candidate: โ€˜template<class T> bool operator==(const QExplicitlySharedDataPointer<T>&, std::nullptr_t)โ€™
  293 | template <class T> inline bool operator==(const QExplicitlySharedDataPointer<T> &p1, std::nullptr_t p2)
      |                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:293:32: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QExplicitlySharedDataPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:48,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qdebug.h:54,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qcborcommon.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qcborvalue.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qcborarray.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:38:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:747:6: note: candidate: โ€˜template<class T, class X> bool operator==(const QSharedPointer<T>&, const QSharedPointer<T>&)โ€™
  747 | bool operator==(const QSharedPointer<T> &ptr1, const QSharedPointer<X> &ptr2) noexcept
      |      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:747:6: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QSharedPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:758:6: note: candidate: โ€˜template<class T, class X> bool operator==(const QSharedPointer<T>&, const X*)โ€™
  758 | bool operator==(const QSharedPointer<T> &ptr1, const X *ptr2) noexcept
      |      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:758:6: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QSharedPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:763:6: note: candidate: โ€˜template<class T, class X> bool operator==(const T*, const QSharedPointer<T>&)โ€™
  763 | bool operator==(const T *ptr1, const QSharedPointer<X> &ptr2) noexcept
      |      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:763:6: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   mismatched types โ€˜const T*โ€™ and โ€˜MImServerCommonOptionsโ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:779:6: note: candidate: โ€˜template<class T, class X> bool operator==(const QSharedPointer<T>&, const QWeakPointer<X>&)โ€™
  779 | bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2) noexcept
      |      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:779:6: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QSharedPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:790:13: note: candidate: โ€˜template<class T> bool operator==(const QSharedPointer<T>&, std::nullptr_t)โ€™
  790 | inline bool operator==(const QSharedPointer<T> &lhs, std::nullptr_t) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:790:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QSharedPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:802:13: note: candidate: โ€˜template<class T> bool operator==(std::nullptr_t, const QSharedPointer<T>&)โ€™
  802 | inline bool operator==(std::nullptr_t, const QSharedPointer<T> &rhs) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:802:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QSharedPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:814:13: note: candidate: โ€˜template<class T> bool operator==(const QWeakPointer<T>&, std::nullptr_t)โ€™
  814 | inline bool operator==(const QWeakPointer<T> &lhs, std::nullptr_t) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:814:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QWeakPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:826:13: note: candidate: โ€˜template<class T> bool operator==(std::nullptr_t, const QWeakPointer<T>&)โ€™
  826 | inline bool operator==(std::nullptr_t, const QWeakPointer<T> &rhs) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:826:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QWeakPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qplugin.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:165:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpointer.h:94:13: note: candidate: โ€˜template<class T> bool operator==(const T*, const QPointer<T>&)โ€™
   94 | inline bool operator==(const T *o, const QPointer<T> &p)
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpointer.h:94:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   mismatched types โ€˜const T*โ€™ and โ€˜MImServerCommonOptionsโ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpointer.h:98:13: note: candidate: โ€˜template<class T> bool operator==(const QPointer<T>&, const T*)โ€™
   98 | inline bool operator==(const QPointer<T> &p, const T *o)
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpointer.h:98:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpointer.h:102:13: note: candidate: โ€˜template<class T> bool operator==(T*, const QPointer<T>&)โ€™
  102 | inline bool operator==(T *o, const QPointer<T> &p)
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpointer.h:102:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   mismatched types โ€˜T*โ€™ and โ€˜MImServerCommonOptionsโ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpointer.h:106:13: note: candidate: โ€˜template<class T> bool operator==(const QPointer<T>&, T*)โ€™
  106 | inline bool operator==(const QPointer<T> &p, T *o)
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpointer.h:106:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpointer.h:110:13: note: candidate: โ€˜template<class T> bool operator==(const QPointer<T>&, const QPointer<T>&)โ€™
  110 | inline bool operator==(const QPointer<T> &p1, const QPointer<T> &p2)
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpointer.h:110:13: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtTest/qtestcase.h:352:34: note:   โ€˜const MImServerCommonOptionsโ€™ is not derived from โ€˜const QPointer<T>โ€™
  352 |         return compare_helper(t1 == t2, "Compared values are not the same",
      |                               ~~~^~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:49,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QString:1,
                 from /<<PKGBUILDDIR>>/src/mimserveroptions.h:18,
                 from /<<PKGBUILDDIR>>/tests/ut_mimserveroptions/ut_mimserveroptions.h:17:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:61:30: note: candidate: โ€˜constexpr bool operator==(char, QLatin1Char)โ€™
   61 | Q_DECL_CONSTEXPR inline bool operator==(char lhs, QLatin1Char rhs) noexcept { return lhs == rhs.toLatin1(); }
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:61:46: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜charโ€™
   61 | Q_DECL_CONSTEXPR inline bool operator==(char lhs, QLatin1Char rhs) noexcept { return lhs == rhs.toLatin1(); }
      |                                         ~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:68:30: note: candidate: โ€˜constexpr bool operator==(QLatin1Char, char)โ€™
   68 | Q_DECL_CONSTEXPR inline bool operator==(QLatin1Char lhs, char rhs) noexcept { return lhs.toLatin1() == rhs; }
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:68:53: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QLatin1Charโ€™
   68 | Q_DECL_CONSTEXPR inline bool operator==(QLatin1Char lhs, char rhs) noexcept { return lhs.toLatin1() == rhs; }
      |                                         ~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:637:30: note: candidate: โ€˜constexpr bool operator==(QChar, QChar)โ€™
  637 | Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) noexcept { return c1.ucs == c2.ucs; }
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:637:47: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QCharโ€™
  637 | Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) noexcept { return c1.ucs == c2.ucs; }
      |                                         ~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:646:30: note: candidate: โ€˜constexpr bool operator==(QChar, std::nullptr_t)โ€™
  646 | Q_DECL_CONSTEXPR inline bool operator==(QChar lhs, std::nullptr_t) noexcept { return lhs.isNull(); }
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:646:47: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QCharโ€™
  646 | Q_DECL_CONSTEXPR inline bool operator==(QChar lhs, std::nullptr_t) noexcept { return lhs.isNull(); }
      |                                         ~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:648:30: note: candidate: โ€˜constexpr bool operator==(std::nullptr_t, QChar)โ€™
  648 | Q_DECL_CONSTEXPR inline bool operator==(std::nullptr_t, QChar rhs) noexcept { return rhs.isNull(); }
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:648:41: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜std::nullptr_tโ€™
  648 | Q_DECL_CONSTEXPR inline bool operator==(std::nullptr_t, QChar rhs) noexcept { return rhs.isNull(); }
      |                                         ^~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:50:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:684:13: note: candidate: โ€˜bool operator==(const QByteArray&, const QByteArray&)โ€™
  684 | inline bool operator==(const QByteArray &a1, const QByteArray &a2) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:684:42: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QByteArray&โ€™
  684 | inline bool operator==(const QByteArray &a1, const QByteArray &a2) noexcept
      |                        ~~~~~~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:686:13: note: candidate: โ€˜bool operator==(const QByteArray&, const char*)โ€™
  686 | inline bool operator==(const QByteArray &a1, const char *a2) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:686:42: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QByteArray&โ€™
  686 | inline bool operator==(const QByteArray &a1, const char *a2) noexcept
      |                        ~~~~~~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:688:13: note: candidate: โ€˜bool operator==(const char*, const QByteArray&)โ€™
  688 | inline bool operator==(const char *a1, const QByteArray &a2) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:688:36: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const char*โ€™
  688 | inline bool operator==(const char *a1, const QByteArray &a2) noexcept
      |                        ~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:800:13: note: candidate: โ€˜bool operator==(const QByteArray::FromBase64Result&, const QByteArray::FromBase64Result&)โ€™
  800 | inline bool operator==(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:800:60: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QByteArray::FromBase64Result&โ€™
  800 | inline bool operator==(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
      |                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1374:13: note: candidate: โ€˜bool operator==(QString::Null, QString::Null)โ€™
 1374 | inline bool operator==(QString::Null, QString::Null) { return true; }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1374:24: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QString::Nullโ€™
 1374 | inline bool operator==(QString::Null, QString::Null) { return true; }
      |                        ^~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1376:13: note: candidate: โ€˜bool operator==(QString::Null, const QString&)โ€™
 1376 | inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1376:24: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QString::Nullโ€™
 1376 | inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }
      |                        ^~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1378:13: note: candidate: โ€˜bool operator==(const QString&, QString::Null)โ€™
 1378 | inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1378:39: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QString&โ€™
 1378 | inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }
      |                        ~~~~~~~~~~~~~~~^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1386:13: note: candidate: โ€˜bool operator==(QLatin1String, QLatin1String)โ€™
 1386 | inline bool operator==(QLatin1String s1, QLatin1String s2) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1386:38: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QLatin1Stringโ€™
 1386 | inline bool operator==(QLatin1String s1, QLatin1String s2) noexcept
      |                        ~~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1430:32: note: candidate: โ€˜bool operator==(const char*, const QString&)โ€™
 1430 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)
      |                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1430:55: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const char*โ€™
 1430 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)
      |                                           ~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1443:32: note: candidate: โ€˜bool operator==(const char*, QLatin1String)โ€™
 1443 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)
      |                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1443:55: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const char*โ€™
 1443 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)
      |                                           ~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1821:20: note: candidate: โ€˜bool operator==(const QStringRef&, const QStringRef&)โ€™
 1821 | Q_CORE_EXPORT bool operator==(const QStringRef &s1, const QStringRef &s2) noexcept;
      |                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1821:49: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QStringRef&โ€™
 1821 | Q_CORE_EXPORT bool operator==(const QStringRef &s1, const QStringRef &s2) noexcept;
      |                               ~~~~~~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1833:20: note: candidate: โ€˜bool operator==(const QString&, const QStringRef&)โ€™
 1833 | Q_CORE_EXPORT bool operator==(const QString &lhs, const QStringRef &rhs) noexcept;
      |                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1833:46: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QString&โ€™
 1833 | Q_CORE_EXPORT bool operator==(const QString &lhs, const QStringRef &rhs) noexcept;
      |                               ~~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1840:13: note: candidate: โ€˜bool operator==(const QStringRef&, const QString&)โ€™
 1840 | inline bool operator==(const QStringRef &lhs, const QString &rhs) noexcept { return rhs == lhs; }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1840:42: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QStringRef&โ€™
 1840 | inline bool operator==(const QStringRef &lhs, const QString &rhs) noexcept { return rhs == lhs; }
      |                        ~~~~~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1869:20: note: candidate: โ€˜bool operator==(QLatin1String, const QStringRef&)โ€™
 1869 | Q_CORE_EXPORT bool operator==(QLatin1String lhs, const QStringRef &rhs) noexcept;
      |                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1869:45: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QLatin1Stringโ€™
 1869 | Q_CORE_EXPORT bool operator==(QLatin1String lhs, const QStringRef &rhs) noexcept;
      |                               ~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1876:13: note: candidate: โ€˜bool operator==(const QStringRef&, QLatin1String)โ€™
 1876 | inline bool operator==(const QStringRef &lhs, QLatin1String rhs) noexcept { return rhs == lhs; }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1876:42: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QStringRef&โ€™
 1876 | inline bool operator==(const QStringRef &lhs, QLatin1String rhs) noexcept { return rhs == lhs; }
      |                        ~~~~~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1884:13: note: candidate: โ€˜bool operator==(QChar, const QString&)โ€™
 1884 | inline bool operator==(QChar lhs, const QString &rhs) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1884:30: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QCharโ€™
 1884 | inline bool operator==(QChar lhs, const QString &rhs) noexcept
      |                        ~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1895:13: note: candidate: โ€˜bool operator==(const QString&, QChar)โ€™
 1895 | inline bool operator==(const QString &lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1895:39: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QString&โ€™
 1895 | inline bool operator==(const QString &lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |                        ~~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1903:13: note: candidate: โ€˜bool operator==(QChar, const QStringRef&)โ€™
 1903 | inline bool operator==(QChar lhs, const QStringRef &rhs) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1903:30: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QCharโ€™
 1903 | inline bool operator==(QChar lhs, const QStringRef &rhs) noexcept
      |                        ~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1914:13: note: candidate: โ€˜bool operator==(const QStringRef&, QChar)โ€™
 1914 | inline bool operator==(const QStringRef &lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1914:42: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QStringRef&โ€™
 1914 | inline bool operator==(const QStringRef &lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |                        ~~~~~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1922:13: note: candidate: โ€˜bool operator==(QChar, QLatin1String)โ€™
 1922 | inline bool operator==(QChar lhs, QLatin1String rhs) noexcept
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1922:30: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QCharโ€™
 1922 | inline bool operator==(QChar lhs, QLatin1String rhs) noexcept
      |                        ~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1933:13: note: candidate: โ€˜bool operator==(QLatin1String, QChar)โ€™
 1933 | inline bool operator==(QLatin1String lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1933:38: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QLatin1Stringโ€™
 1933 | inline bool operator==(QLatin1String lhs, QChar rhs) noexcept { return   rhs == lhs; }
      |                        ~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1941:13: note: candidate: โ€˜bool operator==(QStringView, QStringView)โ€™
 1941 | inline bool operator==(QStringView lhs, QStringView rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1941:36: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QStringViewโ€™
 1941 | inline bool operator==(QStringView lhs, QStringView rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |                        ~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1949:13: note: candidate: โ€˜bool operator==(QStringView, QChar)โ€™
 1949 | inline bool operator==(QStringView lhs, QChar rhs) noexcept { return lhs == QStringView(&rhs, 1); }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1949:36: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QStringViewโ€™
 1949 | inline bool operator==(QStringView lhs, QChar rhs) noexcept { return lhs == QStringView(&rhs, 1); }
      |                        ~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1956:13: note: candidate: โ€˜bool operator==(QChar, QStringView)โ€™
 1956 | inline bool operator==(QChar lhs, QStringView rhs) noexcept { return QStringView(&lhs, 1) == rhs; }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1956:30: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QCharโ€™
 1956 | inline bool operator==(QChar lhs, QStringView rhs) noexcept { return QStringView(&lhs, 1) == rhs; }
      |                        ~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1964:13: note: candidate: โ€˜bool operator==(QStringView, QLatin1String)โ€™
 1964 | inline bool operator==(QStringView lhs, QLatin1String rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1964:36: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QStringViewโ€™
 1964 | inline bool operator==(QStringView lhs, QLatin1String rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |                        ~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1971:13: note: candidate: โ€˜bool operator==(QLatin1String, QStringView)โ€™
 1971 | inline bool operator==(QLatin1String lhs, QStringView rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1971:38: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QLatin1Stringโ€™
 1971 | inline bool operator==(QLatin1String lhs, QStringView rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::compareStrings(lhs, rhs) == 0; }
      |                        ~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1980:32: note: candidate: โ€˜bool operator==(const QStringRef&, const QByteArray&)โ€™
 1980 | inline QT_ASCII_CAST_WARN bool operator==(const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) == 0; }
      |                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1980:61: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QStringRef&โ€™
 1980 | inline QT_ASCII_CAST_WARN bool operator==(const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) == 0; }
      |                                           ~~~~~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1987:32: note: candidate: โ€˜bool operator==(const QByteArray&, const QStringRef&)โ€™
 1987 | inline QT_ASCII_CAST_WARN bool operator==(const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) == 0; }
      |                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1987:61: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QByteArray&โ€™
 1987 | inline QT_ASCII_CAST_WARN bool operator==(const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) == 0; }
      |                                           ~~~~~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:2008:32: note: candidate: โ€˜bool operator==(const char*, const QStringRef&)โ€™
 2008 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2)
      |                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:2008:55: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const char*โ€™
 2008 | inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2)
      |                                           ~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:48,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qabstractitemmodel.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:10:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:139:16: note: candidate: โ€˜constexpr bool operator==(const QHashDummyValue&, const QHashDummyValue&)โ€™
  139 | constexpr bool operator==(const QHashDummyValue &, const QHashDummyValue &) noexcept
      |                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:139:27: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QHashDummyValue&โ€™
  139 | constexpr bool operator==(const QHashDummyValue &, const QHashDummyValue &) noexcept
      |                           ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:611:13: note: candidate: โ€˜bool operator==(const QVariant&, const QVariantComparisonHelper&)โ€™
  611 | inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:611:40: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QVariant&โ€™
  611 | inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
      |                        ~~~~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qcborcommon.h:94:13: note: candidate: โ€˜bool operator==(QCborTag, QCborKnownTags)โ€™
   94 | inline bool operator==(QCborTag t, QCborKnownTags kt)   { return quint64(t) == quint64(kt); }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qcborcommon.h:94:33: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QCborTagโ€™
   94 | inline bool operator==(QCborTag t, QCborKnownTags kt)   { return quint64(t) == quint64(kt); }
      |                        ~~~~~~~~~^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qcborcommon.h:95:13: note: candidate: โ€˜bool operator==(QCborKnownTags, QCborTag)โ€™
   95 | inline bool operator==(QCborKnownTags kt, QCborTag t)   { return quint64(t) == quint64(kt); }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qcborcommon.h:95:39: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QCborKnownTagsโ€™
   95 | inline bool operator==(QCborKnownTags kt, QCborTag t)   { return quint64(t) == quint64(kt); }
      |                        ~~~~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qcborstreamreader.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qcborstream.h:47,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:41:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:254:13: note: candidate: โ€˜bool operator==(qfloat16, qfloat16)โ€™
  254 | inline bool operator==(qfloat16 a, qfloat16 b) noexcept { return static_cast<float>(a) == static_cast<float>(b); }
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:254:33: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜qfloat16โ€™
  254 | inline bool operator==(qfloat16 a, qfloat16 b) noexcept { return static_cast<float>(a) == static_cast<float>(b); }
      |                        ~~~~~~~~~^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:267:1: note: candidate: โ€˜bool operator==(qfloat16, long double)โ€™
  267 | QF16_MAKE_BOOL_OP(long double)
      | ^~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:267:1: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜qfloat16โ€™
  267 | QF16_MAKE_BOOL_OP(long double)
      | ^~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:267:1: note: candidate: โ€˜bool operator==(long double, qfloat16)โ€™
  267 | QF16_MAKE_BOOL_OP(long double)
      | ^~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:267:1: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜long doubleโ€™
  267 | QF16_MAKE_BOOL_OP(long double)
      | ^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:268:1: note: candidate: โ€˜bool operator==(qfloat16, double)โ€™
  268 | QF16_MAKE_BOOL_OP(double)
      | ^~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:268:1: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜qfloat16โ€™
  268 | QF16_MAKE_BOOL_OP(double)
      | ^~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:268:1: note: candidate: โ€˜bool operator==(double, qfloat16)โ€™
  268 | QF16_MAKE_BOOL_OP(double)
      | ^~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:268:1: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜doubleโ€™
  268 | QF16_MAKE_BOOL_OP(double)
      | ^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:269:1: note: candidate: โ€˜bool operator==(qfloat16, float)โ€™
  269 | QF16_MAKE_BOOL_OP(float)
      | ^~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:269:1: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜qfloat16โ€™
  269 | QF16_MAKE_BOOL_OP(float)
      | ^~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:269:1: note: candidate: โ€˜bool operator==(float, qfloat16)โ€™
  269 | QF16_MAKE_BOOL_OP(float)
      | ^~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:269:1: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜floatโ€™
  269 | QF16_MAKE_BOOL_OP(float)
      | ^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:280:1: note: candidate: โ€˜bool operator==(qfloat16, int)โ€™
  280 | QF16_MAKE_BOOL_OP_INT(==)
      | ^~~~~~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:280:1: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜qfloat16โ€™
  280 | QF16_MAKE_BOOL_OP_INT(==)
      | ^~~~~~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:280:1: note: candidate: โ€˜bool operator==(int, qfloat16)โ€™
  280 | QF16_MAKE_BOOL_OP_INT(==)
      | ^~~~~~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qfloat16.h:280:1: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜intโ€™
  280 | QF16_MAKE_BOOL_OP_INT(==)
      | ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qlibraryinfo.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:131:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qversionnumber.h:306:31: note: candidate: โ€˜bool operator==(const QVersionNumber&, const QVersionNumber&)โ€™
  306 | Q_REQUIRED_RESULT inline bool operator==(const QVersionNumber &lhs, const QVersionNumber &rhs) noexcept
      |                               ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qversionnumber.h:306:64: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QVersionNumber&โ€™
  306 | Q_REQUIRED_RESULT inline bool operator==(const QVersionNumber &lhs, const QVersionNumber &rhs) noexcept
      |                                          ~~~~~~~~~~~~~~~~~~~~~~^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qline.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:132:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:165:30: note: candidate: โ€˜constexpr bool operator==(const QPoint&, const QPoint&)โ€™
  165 | Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2)
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:165:55: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QPoint&โ€™
  165 | Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2)
      |                                         ~~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:357:30: note: candidate: โ€˜constexpr bool operator==(const QPointF&, const QPointF&)โ€™
  357 | Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2)
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:357:56: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QPointF&โ€™
  357 | Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2)
      |                                         ~~~~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:139:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:135:30: note: candidate: โ€˜constexpr bool operator==(const QMargins&, const QMargins&)โ€™
  135 | Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) noexcept
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:135:57: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QMargins&โ€™
  135 | Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) noexcept
      |                                         ~~~~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:372:30: note: candidate: โ€˜constexpr bool operator==(const QMarginsF&, const QMarginsF&)โ€™
  372 | Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) noexcept
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:372:58: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QMarginsF&โ€™
  372 | Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) noexcept
      |                                         ~~~~~~~~~~~~~~~~~^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:142:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmetaobject.h:200:13: note: candidate: โ€˜bool operator==(const QMetaMethod&, const QMetaMethod&)โ€™
  200 | inline bool operator==(const QMetaMethod &m1, const QMetaMethod &m2)
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmetaobject.h:200:43: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QMetaMethod&โ€™
  200 | inline bool operator==(const QMetaMethod &m1, const QMetaMethod &m2)
      |                        ~~~~~~~~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:44,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:179:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:175:30: note: candidate: โ€˜constexpr bool operator==(const QSize&, const QSize&)โ€™
  175 | Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) noexcept
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:175:54: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QSize&โ€™
  175 | Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) noexcept
      |                                         ~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:350:30: note: candidate: โ€˜constexpr bool operator==(const QSizeF&, const QSizeF&)โ€™
  350 | Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) noexcept
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:350:55: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QSizeF&โ€™
  350 | Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) noexcept
      |                                         ~~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:454:30: note: candidate: โ€˜constexpr bool operator==(const QRect&, const QRect&)โ€™
  454 | Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) noexcept
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:454:54: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QRect&โ€™
  454 | Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) noexcept
      |                                         ~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:860:30: note: candidate: โ€˜constexpr bool operator==(const QRectF&, const QRectF&)โ€™
  860 | Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) noexcept
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:860:55: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QRectF&โ€™
  860 | Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) noexcept
      |                                         ~~~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:224:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstorageinfo.h:101:13: note: candidate: โ€˜bool operator==(const QStorageInfo&, const QStorageInfo&)โ€™
  101 | inline bool operator==(const QStorageInfo &first, const QStorageInfo &second)
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstorageinfo.h:101:44: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QStorageInfo&โ€™
  101 | inline bool operator==(const QStorageInfo &first, const QStorageInfo &second)
      |                        ~~~~~~~~~~~~~~~~~~~~^~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtTest/qtest_gui.h:64,
                 from /usr/include/x86_64-linux-gnu/qt5/QtTest/qtest.h:482:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector4d.h:236:30: note: candidate: โ€˜constexpr bool operator==(const QVector4D&, const QVector4D&)โ€™
  236 | Q_DECL_CONSTEXPR inline bool operator==(const QVector4D &v1, const QVector4D &v2)
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector4d.h:236:58: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QVector4D&โ€™
  236 | Q_DECL_CONSTEXPR inline bool operator==(const QVector4D &v1, const QVector4D &v2)
      |                                         ~~~~~~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtTest/qtest_gui.h:63:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector3d.h:236:30: note: candidate: โ€˜constexpr bool operator==(const QVector3D&, const QVector3D&)โ€™
  236 | Q_DECL_CONSTEXPR inline bool operator==(const QVector3D &v1, const QVector3D &v2)
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector3d.h:236:58: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QVector3D&โ€™
  236 | Q_DECL_CONSTEXPR inline bool operator==(const QVector3D &v1, const QVector3D &v2)
      |                                         ~~~~~~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtTest/qtestkeyboard.h:56,
                 from /usr/include/x86_64-linux-gnu/qt5/QtTest/qtestevent.h:50,
                 from /usr/include/x86_64-linux-gnu/qt5/QtTest/qtest_gui.h:53:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:876:19: note: candidate: โ€˜bool operator==(QPointingDeviceUniqueId, QPointingDeviceUniqueId)โ€™
  876 | Q_GUI_EXPORT bool operator==(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs) noexcept;
      |                   ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:876:54: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QPointingDeviceUniqueIdโ€™
  876 | Q_GUI_EXPORT bool operator==(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs) noexcept;
      |                              ~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:842:13: note: candidate: โ€˜bool operator==(QKeySequence::StandardKey, QKeyEvent*)โ€™
  842 | inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:842:50: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QKeySequence::StandardKeyโ€™
  842 | inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
      |                        ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:841:13: note: candidate: โ€˜bool operator==(QKeyEvent*, QKeySequence::StandardKey)โ€™
  841 | inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:841:35: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QKeyEvent*โ€™
  841 | inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
      |                        ~~~~~~~~~~~^
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:56:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:211:30: note: candidate: โ€˜constexpr bool operator==(const QVector2D&, const QVector2D&)โ€™
  211 | Q_DECL_CONSTEXPR inline bool operator==(const QVector2D &v1, const QVector2D &v2)
      |                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:211:58: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QVector2D&โ€™
  211 | Q_DECL_CONSTEXPR inline bool operator==(const QVector2D &v1, const QVector2D &v2)
      |                                         ~~~~~~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qwindow.h:58,
                 from /usr/include/x86_64-linux-gnu/qt5/QtTest/qtestkeyboard.h:55:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qcursor.h:129:19: note: candidate: โ€˜bool operator==(const QCursor&, const QCursor&)โ€™
  129 | Q_GUI_EXPORT bool operator==(const QCursor &lhs, const QCursor &rhs) noexcept;
      |                   ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qcursor.h:124:56: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QCursor&โ€™
  124 |     friend Q_GUI_EXPORT bool operator==(const QCursor &lhs, const QCursor &rhs) noexcept;
      |                                         ~~~~~~~~~~~~~~~^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qsurface.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qwindow.h:51:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qsurfaceformat.h:172:19: note: candidate: โ€˜bool operator==(const QSurfaceFormat&, const QSurfaceFormat&)โ€™
  172 | Q_GUI_EXPORT bool operator==(const QSurfaceFormat&, const QSurfaceFormat&);
      |                   ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qsurfaceformat.h:165:41: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜const QSurfaceFormat&โ€™
  165 |     friend Q_GUI_EXPORT bool operator==(const QSurfaceFormat&, const QSurfaceFormat&);
      |                                         ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtNetwork/QHostAddress:1,
                 from /usr/include/x86_64-linux-gnu/qt5/QtTest/qtest_network.h:54,
                 from /usr/include/x86_64-linux-gnu/qt5/QtTest/qtest.h:457:
/usr/include/x86_64-linux-gnu/qt5/QtNetwork/qhostaddress.h:165:13: note: candidate: โ€˜bool operator==(QHostAddress::SpecialAddress, const QHostAddress&)โ€™
  165 | inline bool operator ==(QHostAddress::SpecialAddress address1, const QHostAddress &address2)
      |             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtNetwork/qhostaddress.h:165:54: note:   no known conversion for argument 1 from โ€˜const MImServerCommonOptionsโ€™ to โ€˜QHostAddress::SpecialAddressโ€™
  165 | inline bool operator ==(QHostAddress::SpecialAddress address1, const QHostAddress &address2)
      |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
make[3]: *** [CMakeFiles/ut_mimserveroptions.dir/build.make:93: CMakeFiles/ut_mimserveroptions.dir/tests/ut_mimserveroptions/ut_mimserveroptions.cpp.o] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:697: CMakeFiles/ut_mimserveroptions.dir/all] Error 2
make[2]: Leaving directory '/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu'
make[1]: *** [Makefile:149: all] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu'

permission to bind input_method denied

When I want to start the maliit-server I always get a permission denied message. This error occurs as non-root-user and as root-user as well.

maliit-server
WARNING: PulseAudioService: pa_context_connect() failed
WARNING: PulseAudioService: pa_context_connect() failed
zwp_input_method_v1@17: error 0: [ 139.491622] audit: type=1701 audit(1632379225.736:3): auid=4294967295 uid=1000 gid=1001 ses=4294967295 pid=813 comm="maliit-server" exe="/usr/bin/maliit-server" sig=6 res=1
permission to bind input_method denied
FATAL: The Wayland connection experienced a fatal error: Protocol error
Aborted

Any suggestions?

Qt.ImhDigitsOnly is not handled correctly

In MInputContext::contentType(), the following lines of code treat Qt.ImhDigitsOnly and Qt::ImhFormattedNumbersOnly the same:

    if (hints == Qt::ImhFormattedNumbersOnly || hints == Qt::ImhDigitsOnly) {
        type = Maliit::NumberContentType;
    } else ...

This can't be correct.

The docs have the following:

ImhDigitsOnly: Only digits are allowed.
ImhFormattedNumbersOnly: Only number input is allowed. This includes decimal point and minus sign.

To correctly handle both flags, maliit needs a new contentType. Something like Maliit::DigitContentType maybe.

What's the holdup for 1.0?

Maliit Framework is at version 0.99 since seven (!) years.
Why not release 1.0 already. Are you expecting any big changes before a Qt6 port what would require a major version jump anyway?

Build is broken

When cloning the repository and running qmake I get only this output:

Tip: Run qmake HELP=1 for a list of all supported build options

Segmentation fault maliit-server

I've build the framework and the keyboard succesfully on Ubuntu and Archlinux both, but when i try to run the maliit-server it always hangs. Do you have an idea?
maliit-keyboard doesn't crash, but the keyboard doesn't never appear.
Thanks

[sysele@sysele-pc keyboard]$ ./maliit-keyboard
qt5ct: using qt5ct plugin
wordengine.cpp plugin "/usr/local/share/maliit/plugins/org/maliit/lib/en/libenplugin.so" loaded
inputmethod_p.h registerActiveLanguage(): activeLanguage is: "en"
in inputMethod.cpp setActiveLanguage() activeLanguage is: "en"
spellechecker.cpp in setLanguage() lang= "en" dictPath= "/usr/share/myspell"
Did not find a dictionary for "en"  - checking for  "en"
No dictionary found for "en" turning off spellchecking
no dictionary to turn on spellchecking
inputMethod::reset()
in clear preedit.. clearing word engine
file:///usr/local/share/maliit/plugins/org/maliit/lib/en/Keyboard_en.qml:66:13: Type ShiftKey unavailable
file:///usr/local/share/maliit/plugins/org/maliit/keys/ShiftKey.qml:23:1: Type ActionKey unavailable
file:///usr/local/share/maliit/plugins/org/maliit/keys/ActionKey.qml:20:1: module "QtGraphicalEffects" is not installed
keyboard is reporting : < 0 -8 0 8 > to the app manager.
QSoundEffect(pulseaudio): Error decoding source /usr/share/maliit/plugins/org/maliit/styles/ubuntu/sounds/key_tick2_quiet.wav
keyboard is reporting : < 0 892 0 8 > to the app manager.
keyboard is reporting : < 0 451 0 449 > to the app manager.
keyboard is reporting : < 0 10 0 890 > to the app manager.
keyboard is reporting : < 0 451 0 449 > to the app manager.
keyboard is reporting : < 0 586 0 314 > to the app manager.
keyboard is reporting : < 0 721 0 179 > to the app manager.
keyboard is reporting : < 0 586 0 314 > to the app manager.
keyboard is reporting : < 0 586 1440 314 > to the app manager.
^C
[sysele@sysele-pc keyboard]$ cd ..
[sysele@sysele-pc maliit]$ cd framework/
[sysele@sysele-pc framework]$ ./maliit-server
CRITICAL: "wordengine.cpp - loading plugin failed: /usr/local/share/maliit/plugins/org/maliit/lib/en/libenplugin.so"
WARNING: virtual void MaliitKeyboard::Logic::WordEngine::setWordPredictionEnabled(bool) No backend available, cannot enable word engine!
Errore di segmentazione (core dump creato)

ft_mimpluginmanager test failure

Hi,

During a build of maliit-framework 2.3.0 on GNU Guix, I encountered the following error:

11/12 Test #11: ft_mimpluginmanager ..............Subprocess aborted***Exception:   1.09 sec
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/guix-build-maliit-framework-2.3.0.drv-0/runtime-nixbld'
********* Start testing of Ft_MIMPluginManager *********
Config: Using QtTest library 5.15.10, Qt 5.15.10 (arm64-little_endian-lp64 shared (dynamic) release build; by GCC 11.3.0), unknown unknown
PASS   : Ft_MIMPluginManager::initTestCase()
QWARN  : Ft_MIMPluginManager::testLoadPlugins() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) "libdummyimplugin2.so" is on the blacklist, skipped.
QWARN  : Ft_MIMPluginManager::testLoadPlugins() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) DummyPlugin is not a Maliit::Server::InputMethodPlugin.
QDEBUG : Ft_MIMPluginManager::testLoadPlugins() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testLoadPlugins() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testLoadPlugins() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testLoadPlugins() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testLoadPlugins() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testLoadPlugins() virtual void DummyInputMethod::setActiveSubView(const QString&, Maliit::HandlerState)
QDEBUG : Ft_MIMPluginManager::testLoadPlugins() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testLoadPlugins() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testLoadPlugins() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)
PASS   : Ft_MIMPluginManager::testLoadPlugins()
QWARN  : Ft_MIMPluginManager::testSwitchPluginState() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) "libdummyimplugin2.so" is on the blacklist, skipped.
QWARN  : Ft_MIMPluginManager::testSwitchPluginState() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) DummyPlugin is not a Maliit::Server::InputMethodPlugin.
QDEBUG : Ft_MIMPluginManager::testSwitchPluginState() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginState() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginState() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginState() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginState() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testSwitchPluginState() virtual void DummyInputMethod::setActiveSubView(const QString&, Maliit::HandlerState)
QDEBUG : Ft_MIMPluginManager::testSwitchPluginState() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginState() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginState() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testSwitchPluginState() virtual void DummyInputMethod3::setState(const QSet<Maliit::HandlerState>&) QSet(2)
PASS   : Ft_MIMPluginManager::testSwitchPluginState()
QWARN  : Ft_MIMPluginManager::testMultiplePlugins() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) "libdummyimplugin2.so" is on the blacklist, skipped.
QWARN  : Ft_MIMPluginManager::testMultiplePlugins() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) DummyPlugin is not a Maliit::Server::InputMethodPlugin.
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual void DummyInputMethod::setActiveSubView(const QString&, Maliit::HandlerState)
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(1)
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(1)
QDEBUG : Ft_MIMPluginManager::testMultiplePlugins() virtual void DummyInputMethod3::setState(const QSet<Maliit::HandlerState>&) QSet(2)
PASS   : Ft_MIMPluginManager::testMultiplePlugins()
QWARN  : Ft_MIMPluginManager::testSwitchPluginBySignal() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) "libdummyimplugin2.so" is on the blacklist, skipped.
QWARN  : Ft_MIMPluginManager::testSwitchPluginBySignal() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) DummyPlugin is not a Maliit::Server::InputMethodPlugin.
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual void DummyInputMethod::setActiveSubView(const QString&, Maliit::HandlerState)
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() void DummyInputMethod::switchMe()
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual void DummyInputMethod3::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual QString DummyInputMethod3::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchPluginBySignal() virtual QString DummyInputMethod3::activeSubView(Maliit::HandlerState) const
QWARN  : Ft_MIMPluginManager::testSwitchPluginBySignal() org.maliit.framework: void MIMPluginManagerPrivate::_q_onScreenSubViewChanged() , switching to plugin: "libdummyimplugin3.so"  failed
PASS   : Ft_MIMPluginManager::testSwitchPluginBySignal()
QWARN  : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) "libdummyimplugin2.so" is on the blacklist, skipped.
QWARN  : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) DummyPlugin is not a Maliit::Server::InputMethodPlugin.
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual void DummyInputMethod::setActiveSubView(const QString&, Maliit::HandlerState)
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() void DummyInputMethod::switchMe(const QString&)
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual void DummyInputMethod3::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual QString DummyInputMethod3::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() virtual QString DummyInputMethod3::activeSubView(Maliit::HandlerState) const
QWARN  : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin() org.maliit.framework: void MIMPluginManagerPrivate::_q_onScreenSubViewChanged() , switching to plugin: "libdummyimplugin3.so"  failed
PASS   : Ft_MIMPluginManager::testSwitchToSpecifiedPlugin()
QWARN  : Ft_MIMPluginManager::testPluginDescriptions() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) "libdummyimplugin2.so" is on the blacklist, skipped.
QWARN  : Ft_MIMPluginManager::testPluginDescriptions() org.maliit.framework: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) DummyPlugin is not a Maliit::Server::InputMethodPlugin.
QDEBUG : Ft_MIMPluginManager::testPluginDescriptions() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testPluginDescriptions() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testPluginDescriptions() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testPluginDescriptions() virtual QList<MAbstractInputMethod::MInputMethodSubView> DummyInputMethod3::subViews(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testPluginDescriptions() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)
QDEBUG : Ft_MIMPluginManager::testPluginDescriptions() virtual void DummyInputMethod::setActiveSubView(const QString&, Maliit::HandlerState)
QDEBUG : Ft_MIMPluginManager::testPluginDescriptions() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testPluginDescriptions() virtual QString DummyInputMethod::activeSubView(Maliit::HandlerState) const
QDEBUG : Ft_MIMPluginManager::testPluginDescriptions() virtual void DummyInputMethod::setState(const QSet<Maliit::HandlerState>&) QSet(0)

=== Received signal at function time: 142ms, total time: 1034ms, dumping stack ===
=== End of stack trace ===
QFATAL : Ft_MIMPluginManager::testPluginDescriptions() Received signal 11
         Function time: 141ms Total time: 1034ms
FAIL!  : Ft_MIMPluginManager::testPluginDescriptions() Received a fatal error.
   Loc: [Unknown file(0)]
Totals: 6 passed, 1 failed, 0 skipped, 0 blacklisted, 1039ms
********* Finished testing of Ft_MIMPluginManager *********

      Start 12: ut_maliit_glib_settings
12/12 Test #12: ut_maliit_glib_settings ..........   Passed    0.03 sec

92% tests passed, 1 tests failed out of 12

Total Test time (real) =   4.93 sec

The following tests FAILED:
	 11 - ft_mimpluginmanager (Subprocess aborted)
Errors while running CTest
make: *** [Makefile:74: test] Error 8

Test suite failed, dumping logs.
error: in phase 'check': uncaught exception:
%exception #<&invoke-error program: "make" arguments: ("test" "-j" "3") exit-status: 2 term-signal: #f stop-signal: #f> 
phase `check' failed after 5.1 seconds
command "make" "test" "-j" "3" failed with status 2

The inputs used are:

Attached is the complete build log.
maliit-framework-2.3.0-aarch64-linux.log

Build instructions are inaccurate

Build uses cmake instead of qmake on master, although the README and Install docs still refer to qmake usage.

I always thought that maliit depended on qt, has this been changed recently?

Crashes frequently in Fedora 34 and 35

On Fedora 34 and 35, I commonly see crashes like this, seemingly randomly:

#0  0x00007fa7598c8f14 in QtWayland::zwp_input_method_context_v1::handle_surrounding_text(void*, zwp_input_method_context_v1*, char const*, unsigned int, unsigned int)
    (data=0x55b00aa2e820, object=0x55b00a9ab8b0, text=0x55b00ad04d6c "https://www.ecosia.org/search?q=large+surface+combatant&addon=firefox&addonversion=4.0.4", cursor=0, anchor=0)
    at /usr/src/debug/maliit-framework-2.0.0-4.fc35.x86_64/redhat-linux-build/qwayland-input-method-unstable-v1.cpp:207
maliit/keyboard#1  0x00007fa7575c7c04 in ffi_call_unix64 () at ../src/x86/unix64.S:76
maliit/keyboard#2  0x00007fa7575c7108 in ffi_call (cif=cif@entry=0x7ffc4b6d2760, fn=<optimized out>, rvalue=<optimized out>, rvalue@entry=0x0, avalue=avalue@entry=0x7ffc4b6d2830) at ../src/x86/ffi64.c:525
maliit/keyboard#3  0x00007fa7578a2d10 in wl_closure_invoke (closure=closure@entry=0x55b00ad04c90, target=<optimized out>, target@entry=0x55b00a9ab8b0, opcode=opcode@entry=0, data=<optimized out>, flags=<optimized out>)
    at ../src/connection.c:1018
maliit/keyboard#4  0x00007fa7578a341b in dispatch_event (display=display@entry=0x55b00a7514a0, queue=0x55b00a751570, queue=<optimized out>) at ../src/wayland-client.c:1452
maliit/keyboard#5  0x00007fa7578a360c in dispatch_queue (queue=0x55b00a751570, display=0x55b00a7514a0) at ../src/wayland-client.c:1598
maliit/keyboard#6  wl_display_dispatch_queue_pending (display=0x55b00a7514a0, queue=0x55b00a751570) at ../src/wayland-client.c:1840
maliit/keyboard#7  0x00007fa746c8a6a3 in QtWaylandClient::QWaylandDisplay::flushRequests() (this=0x55b00a751310) at /usr/src/debug/qt5-qtwayland-5.15.2-15.fc35.x86_64/src/client/qwaylanddisplay.cpp:222
maliit/keyboard#8  0x00007fa75815e430 in doActivate<false>(QObject*, int, void**) (sender=0x55b00a7a1590, signal_index=3, argv=0x7ffc4b6d2b00) at kernel/qobject.cpp:3898
maliit/keyboard#9  0x00007fa758159367 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x55b00a7a1590, m=m@entry=0x7fa758403460 <QSocketNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffc4b6d2b00)
    at kernel/qobject.cpp:3946
maliit/keyboard#10 0x00007fa758160b8a in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (this=this@entry=0x55b00a7a1590, _t1=..., _t2=<optimized out>, _t3=...)
    at .moc/moc_qsocketnotifier.cpp:178
maliit/keyboard#11 0x00007fa7581613a3 in QSocketNotifier::event(QEvent*) (this=0x55b00a7a1590, e=0x7ffc4b6d2bd0) at kernel/qsocketnotifier.cpp:302
maliit/keyboard#12 0x00007fa75812a7d8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55b00a7a1590, event=0x7ffc4b6d2bd0) at kernel/qcoreapplication.cpp:1064
maliit/keyboard#13 0x00007fa75817c63f in socketNotifierSourceDispatch(GSource*, GSourceFunc, gpointer) (source=0x55b00a7a38a0) at kernel/qeventdispatcher_glib.cpp:107
maliit/keyboard#14 0x00007fa758bb0130 in g_main_dispatch (context=0x55b00a7b3630) at ../glib/gmain.c:3381
maliit/keyboard#15 g_main_context_dispatch (context=0x55b00a7b3630) at ../glib/gmain.c:4099
maliit/keyboard#16 0x00007fa758c05208 in g_main_context_iterate.constprop.0 (context=context@entry=0x55b00a7b3630, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4175
maliit/keyboard#17 0x00007fa758bad933 in g_main_context_iteration (context=0x55b00a7b3630, may_block=1) at ../glib/gmain.c:4240
maliit/keyboard#18 0x00007fa75817bbb8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55b00a7a7800, flags=...) at kernel/qeventdispatcher_glib.cpp:423
maliit/keyboard#19 0x00007fa7581291e2 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffc4b6d2e40, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
maliit/keyboard#20 0x00007fa758131724 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
maliit/keyboard#21 0x000055b008a1669c in main(int, char**) (argc=<optimized out>, argv=0x7ffc4b6d3088) at /usr/src/debug/maliit-keyboard-2.0.0-3.fc35.x86_64/src/keyboard/keyboard.cpp:40

(And yes, I'm aware of the irony of using a treehugger search engine to look up information about naval warships)

Stack smashing detetected

I'm trying to compile the 2.00 release.

after clone :

$ cd framework
$ mkdir build && cd build
$ cmake ..
$ make
$ ./maliit-server
 *** stack smashing detected ***: terminated
[1]    121411 abort (core dumped)  ./maliit-server

I'm on Manjaro (X11) amd64.

I can compile and execute maliit-server on my raspberry pi 4 though. But the keyboard won't show up on input text (I exported QT_IM_MODULE to maliit).

Tag a new release

Lately I've been packaging Maliit for postmarketOS so it can be used together with Plasma Mobile. Normally I just take the latest release, however it seems that in this case this means using a version from the 13th of November 2015, even though development has been active ever since with the latest commits being done only a day ago.

This makes me wonder, would it be possible to tag a new release anytime soon? For one the old release still uses qmake while the master branch seems to have used CMake for quite a while already.

pkg-config files are broken when CMAKE_INSTALL_{DATA,INCLUDE,LIB}DIR is absolute

As per title: common/maliit-framework.pc.in, maliit-glib/maliit-glib.pc.in, src/maliit-plugins.pc.in, and src/maliit-server.pc.in have

prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=@CMAKE_INSTALL_PREFIX@
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
datarootdir=${prefix}/@CMAKE_INSTALL_DATADIR@ # only in src/maliit-server.pc.in and src/maliit-plugins.pc.in

and so canโ€™t handle absolute paths in CMAKE_INSTALL_{DATA,INCLUDE,LIB}DIR. This leads to broken .pc files on NixOS in particular.

See โ€œConcatenating paths when building pkg-config filesโ€ for a thorough discussion of the problem and a suggested fix, or KDEโ€™s extra-cmake-modules for a simpler approach.

Keyboard Icons Missing

Hi, I just installed the maliit keyboard/framework in Ubuntu 22.04 wayland running weston, however, some of the keyboard icons are missing. Is this a bug / is there a way I can solve this?
image

Maliit doesn't build against Qt 5.5

The Qt 5.5 alpha introduces a new message type QtInfoMsg which isn't handled by maliit, resulting in a build failure:

main.cpp:67:12: error: enumeration value 'QtInfoMsg' not handled in switch [-Werror=switch]
switch (type) {
^

Incompatible with windows and msvc

There is a couple of things that are not compatible with msvc or microsoft windows in general.

I have successfully modified it to compile on windows. Since you are now active again I would like to submit it. However it is a bit messy at the moment, so before I try to make it merge ready, I would like to know if you are still interested in having windows compatibility?

Also I am not very experienced in git yet. A single branch of commits with a commit per compatibility issue would be the way to go or?

Ut_MInputMethodQuickPlugin::testQmlSetup fails to test on Debian testing/unstable

When building maliit-framework against a recent (2022-03-07) Debian unstable, the Ut_MInputMethodQuickPlugin::testQmlSetup chokes on the helloworld.qml example:

      Start  8: ut_minputmethodquickplugin

8: Test command: /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/ut_minputmethodquickplugin
8: Environment variables: 
8:  TESTING_IN_SANDBOX=1
8:  TESTPLUGIN_PATH=/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/tests/plugins
8:  TESTDATA_PATH=/<<PKGBUILDDIR>>/tests
8:  QT_QPA_PLATFORM=minimal
8: Test timeout computed to be: 10000000
8: ********* Start testing of Ut_MInputMethodQuickPlugin *********
8: Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 11.2.0), debian unknown
8: PASS   : Ut_MInputMethodQuickPlugin::initTestCase()
8: QWARN  : Ut_MInputMethodQuickPlugin::testQmlSetup(Hello world) file:///<<PKGBUILDDIR>>/examples/plugins/qml/helloworld/helloworld.qml:48:5: Non-existent attached object 
8:          Component.onCompleted: { 
8:          ^
8: FAIL!  : Ut_MInputMethodQuickPlugin::testQmlSetup(Hello world) 'not testee->inputMethodArea().isEmpty()' returned FALSE. ()
8:    Loc: [./tests/ut_minputmethodquickplugin/ut_minputmethodquickplugin.cpp(88)]
8: PASS   : Ut_MInputMethodQuickPlugin::cleanupTestCase()
8: Totals: 2 passed, 1 failed, 0 skipped, 0 blacklisted, 7ms
8: ********* Finished testing of Ut_MInputMethodQuickPlugin *********
 8/12 Test  #8: ut_minputmethodquickplugin .......***Failed    0.02 sec
********* Start testing of Ut_MInputMethodQuickPlugin *********
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 11.2.0), debian unknown
PASS   : Ut_MInputMethodQuickPlugin::initTestCase()
QWARN  : Ut_MInputMethodQuickPlugin::testQmlSetup(Hello world) file:///<<PKGBUILDDIR>>/examples/plugins/qml/helloworld/helloworld.qml:48:5: Non-existent attached object 
         Component.onCompleted: { 
         ^
FAIL!  : Ut_MInputMethodQuickPlugin::testQmlSetup(Hello world) 'not testee->inputMethodArea().isEmpty()' returned FALSE. ()
   Loc: [./tests/ut_minputmethodquickplugin/ut_minputmethodquickplugin.cpp(88)]
PASS   : Ut_MInputMethodQuickPlugin::cleanupTestCase()
Totals: 2 passed, 1 failed, 0 skipped, 0 blacklisted, 7ms
********* Finished testing of Ut_MInputMethodQuickPlugin *********

For now, I have disabled the test. (As a side-note, I am currently preparing an initial upload to Debian of maliit-framework and later on maliit-keyboard).

Full build log has been attached.

maliit-framework_2.2.0-1_amd64-2022-03-07T07:50:13Z.build.log

maliit-server can't create dbus socket with dbus 1.15.2

Steps to reproduce on Ubuntu:

  1. Install dbus 1.15.2 or newer
  2. Install Qt 5
  3. Build and install mallit-server
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -Denable-docs=OFF -Denable-tests=OFF -Denable-examples=ON -Denable-wayland=OFF -Denable-hwkeyboard=OFF -Denable-dbus-activation=ON ..
make
sudo make install
  1. Build and install mallit-keyboard
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -Denable-presage=OFF -Denable-hunspell=OFF -Denable-tests=OFF ..
make
sudo make install
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
  1. Build and install inputcontext-gtk (apply attached patch 0001-Fix-CMakeLists.txt.zip first)
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_X11=ON -DENABLE_GTK2=OFF -DENABLE_GTK3=ON ..
make
sudo make install
sudo /usr/lib/x86_64-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0 --update-cache
  1. Reboot
  2. Open gedit
GTK_IM_MODULE=Maliit gedit

or with more logs

GTK_IM_MODULE=Maliit G_MESSAGES_DEBUG=Maliit MALIIT_DEBUG=1 gedit
  1. Keyboard does not appear

Solution
Because of changes introduced in dbus 1.15.2 https://github.com/freedesktop/dbus/blob/dbus-1.15.2/NEWS the line https://github.com/maliit/framework/blob/2.3.0/connection/serverdbusaddress.cpp#L64 in mallit-server

QLatin1String dbusAddress("unix:tmpdir=/tmp/maliit-server");

needs to be updated as

QLatin1String dbusAddress("unix:abstract=/tmp/maliit-server");

make not able to compile

I'm getting an error while trying to use make. There seems to be a problem in generating API documentation which makes the rest of the compilation fail

Here is the log I have:

>  make
[  0%] Automatic MOC for target maliit-common
[  0%] Built target maliit-common_autogen
[  2%] Built target maliit-common
[  3%] Automatic MOC for target maliit-connection
[  3%] Built target maliit-connection_autogen
[ 21%] Built target maliit-connection
[ 22%] Automatic MOC for target maliit-plugins
[ 22%] Built target maliit-plugins_autogen
[ 40%] Built target maliit-plugins
[ 40%] Automatic MOC for target dummyplugin
[ 40%] Built target dummyplugin_autogen
[ 42%] Built target dummyplugin
[ 42%] Automatic MOC for target dummyimplugin2
[ 42%] Built target dummyimplugin2_autogen
[ 44%] Built target dummyimplugin2
[ 45%] Automatic MOC for target test-stubs
[ 45%] Built target test-stubs_autogen
[ 46%] Built target test-stubs
[ 46%] Automatic MOC for target dummyimplugin
[ 46%] Built target dummyimplugin_autogen
[ 48%] Built target dummyimplugin
[ 49%] Automatic MOC for target dummyimplugin3
[ 49%] Built target dummyimplugin3_autogen
[ 51%] Built target dummyimplugin3
[ 51%] Automatic MOC for target test-utils
[ 51%] Built target test-utils_autogen
[ 53%] Built target test-utils
[ 53%] Automatic MOC for target ft_mimpluginmanager
[ 53%] Built target ft_mimpluginmanager_autogen
[ 55%] Built target ft_mimpluginmanager
[ 56%] Automatic MOC for target maliitplatforminputcontextplugin
[ 56%] Built target maliitplatforminputcontextplugin_autogen
[ 58%] Built target maliitplatforminputcontextplugin
[ 58%] Generating API documentation with Doxygen
warning: Tag 'COLS_IN_ALPHA_INDEX' at line 65 of file '/home/fcusson/Sources/maliit/framework/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag 'PERL_PATH' at line 128 of file '/home/fcusson/Sources/maliit/framework/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: dot: not found
sh: 1: sh: 1: dot: not found
dot: not found
sh: 1: dot: not found
[ 58%] Built target doc
[ 59%] Automatic MOC for target inputpanel-shell

AutoMoc subprocess error
------------------------
The moc process failed to compile
  "SRC:/src/qt/plugins/shellintegration/inputpanelshellplugin.cpp"
into
  "SRC:/inputpanel-shell_autogen/include/inputpanelshellplugin.moc"
included by
  "SRC:/src/qt/plugins/shellintegration/inputpanelshellplugin.cpp"

Command
-------
/usr/lib/qt5/bin/moc -DHAVE_WAYLAND "-DMALIIT_CONFIG_ROOT=\"/maliit/\"" "-DMALIIT_DEFAULT_HW_PLUGIN=\"libmaliit-keyboard-plugin.so\"" "-DMALIIT_DEFAULT_PLUGIN=\"libmaliit-keyboard-plugin.so\"" "-DMALIIT_DEFAULT_SUBVIEW=\"\"" -DMALIIT_ENABLE_MULTITOUCH=true "-DMALIIT_EXTENSIONS_DIR=\"/usr/share/maliit-framework/extensions\"" -DMALIIT_FRAMEWORK_USE_INTERNAL_API "-DMALIIT_PLUGINS_DATA_DIR=\"/usr/share/maliit/plugins\"" "-DMALIIT_PLUGINS_DIR=\"/usr/lib/x86_64-linux-gnu/maliit/plugins\"" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_WAYLANDCLIENT_LIB -Dinputpanel_shell_EXPORTS -I/home/fcusson/Sources/maliit/framework -I/home/fcusson/Sources/maliit/framework/src -I/home/fcusson/Sources/maliit/framework/common -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.15.2 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.15.2/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.15.2 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.15.2/QtCore -I/usr/include/x86_64-linux-gnu/qt5/QtWaylandClient/5.15.2 -I/usr/include/x86_64-linux-gnu/qt5/QtWaylandClient/5.15.2/QtWaylandClient -I/usr/include/x86_64-linux-gnu/qt5/QtXkbCommonSupport/5.15.2 -I/usr/include/x86_64-linux-gnu/qt5/QtXkbCommonSupport/5.15.2/QtXkbCommonSupport -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWaylandClient -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/usr/include -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu --include /home/fcusson/Sources/maliit/framework/inputpanel-shell_autogen/moc_predefs.h --output-dep-file -o /home/fcusson/Sources/maliit/framework/inputpanel-shell_autogen/include/inputpanelshellplugin.moc /home/fcusson/Sources/maliit/framework/src/qt/plugins/shellintegration/inputpanelshellplugin.cpp

Output
------
/home/fcusson/Sources/maliit/framework/src/qt/plugins/shellintegration/inputpanelshellplugin.cpp:23: Parse error at "IID"

make[2]: *** [CMakeFiles/inputpanel-shell_autogen.dir/build.make:77: CMakeFiles/inputpanel-shell_autogen] Error 1
make[1]: *** [CMakeFiles/Makefile2:1055: CMakeFiles/inputpanel-shell_autogen.dir/all] Error 2
make: *** [Makefile:160: all] Error 2

Issues with DBUS and Maliit-Keyboard

Hello, i am attempting to add the Maliit keyboard to a device, but im encountering some issues when trying to communicate via dbus. While I can find the address and connect to the server, when I attempt to connect to the keyboard, it tells me the connection is valid, but attempting to call any methods via dbus specific to the keyboard (such as setting language) produces this error:
"No such object path '/com/meego/inputmethod/inputcontext'

Thanks for any insight you can provide.

Problem compiling: Parse error at "IID"

Hello, I am getting this error while compiling:
[ 112s] AutoMoc subprocess error
[ 112s] ------------------------
[ 112s] The moc process failed to compile
[ 112s] "SRC:/src/qt/plugins/shellintegration/inputpanelshellplugin.cpp"
[ 112s] into
[ 112s] "SRC:/build/inputpanel-shell_autogen/include/inputpanelshellplugin.moc"
[ 112s] included by
[ 112s] "SRC:/src/qt/plugins/shellintegration/inputpanelshellplugin.cpp"
[ 112s] /home/abuild/rpmbuild/BUILD/framework-1601419413.ee7d872/src/qt/plugins/shellintegration/inputpanelshellplugin.cpp:23: Parse error at "IID"

I attached the full log for reference.
I can't tell if it's a bug or something I'm doing wrong on my end.
Packaging progress can be seen at https://build.opensuse.org/package/show/home:andresbs:maliit/maliit-framework

log.log

maliit-framework: no-manual-page usr/bin/maliit-server

Debian's lintian tool reports this:

W: maliit-framework: no-manual-page usr/bin/maliit-server
N: 
N:   Each binary in /usr/bin, /usr/sbin, /bin, /sbin or /usr/games should have a manual page
N:   
N:   Note that though the man program has the capability to check for several program names in the NAMES section, each of these programs should have its own manual page (a symbolic link to
N:   the appropriate manual page is sufficient) because other manual page viewers such as xman or tkman don't support this.
N:   
N:   If the name of the manual page differs from the binary by case, man may be able to find it anyway; however, it is still best practice to match the exact capitalization of the executable
N:   in the manual page.
N:   
N:   If the manual pages are provided by another package on which this package depends, Lintian may not be able to determine that manual pages are available. In this case, after confirming
N:   that all binaries do have manual pages after this package and its dependencies are installed, please add a Lintian override.
N: 
N:   Please refer to Debian Policy Manual section 12.1 for details.
N: 
N:   Visibility: warning
N:   Show-Always: no
N:   Check: documentation/manual
N:   Renamed from: binary-without-manpage
N: 
N:

Crash when I try to open settings of Maliit virtual keyboard on Wayland session of KDE Plasma

Hi

Originally reported on KDE bug tracker.
https://bugs.kde.org/show_bug.cgi?id=434977

To reproduce this crash, activate Mallit virtual keyboard on Wayland session of KDE Plasma and try to open its settings.

KDE developer Vlad Zahorodnii said in comment 4:

I don't see anything relevant in the wayland debug log. Anyway, based on

maliit/keyboard#1  0x00007f2c89c20fcc in KCrash::defaultCrashHandler (sig=11) at ./src/kcrash.cpp:576
maliit/keyboard#2  <signal handler called>
maliit/keyboard#3  0x00007f2c7dd16004 in QtWayland::zwp_input_panel_v1::get_input_panel_surface(wl_surface*) () from /usr/lib/x86_64-linux-gnu/qt5/plugins/wayland-shell-integration/libinputpanel-shell.so

it looks like client-side bug. Can you report this crash to maliit developers?

Complete backtrace:

Thread 6 (Thread 0x7f2c6ffff700 (LWP 19569)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5631b7718f28) at ../sysdeps/nptl/futex-internal.h:183
maliit/keyboard#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x5631b7718ed8, cond=0x5631b7718f00) at pthread_cond_wait.c:508
maliit/keyboard#2  __pthread_cond_wait (cond=0x5631b7718f00, mutex=0x5631b7718ed8) at pthread_cond_wait.c:638
maliit/keyboard#3  0x00007f2c7e276e6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#4  0x00007f2c7e276a6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#5  0x00007f2c89b9d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
maliit/keyboard#6  0x00007f2c8a55c293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 0x7f2c7cb54700 (LWP 19568)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5631b7718f28) at ../sysdeps/nptl/futex-internal.h:183
maliit/keyboard#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x5631b7718ed8, cond=0x5631b7718f00) at pthread_cond_wait.c:508
maliit/keyboard#2  __pthread_cond_wait (cond=0x5631b7718f00, mutex=0x5631b7718ed8) at pthread_cond_wait.c:638
maliit/keyboard#3  0x00007f2c7e276e6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#4  0x00007f2c7e276a6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#5  0x00007f2c89b9d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
maliit/keyboard#6  0x00007f2c8a55c293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7f2c7d355700 (LWP 19567)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5631b7718f28) at ../sysdeps/nptl/futex-internal.h:183
maliit/keyboard#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x5631b7718ed8, cond=0x5631b7718f00) at pthread_cond_wait.c:508
maliit/keyboard#2  __pthread_cond_wait (cond=0x5631b7718f00, mutex=0x5631b7718ed8) at pthread_cond_wait.c:638
maliit/keyboard#3  0x00007f2c7e276e6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#4  0x00007f2c7e276a6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#5  0x00007f2c89b9d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
maliit/keyboard#6  0x00007f2c8a55c293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7f2c7db56700 (LWP 19566)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5631b7718f28) at ../sysdeps/nptl/futex-internal.h:183
maliit/keyboard#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x5631b7718ed8, cond=0x5631b7718f00) at pthread_cond_wait.c:508
maliit/keyboard#2  __pthread_cond_wait (cond=0x5631b7718f00, mutex=0x5631b7718ed8) at pthread_cond_wait.c:638
maliit/keyboard#3  0x00007f2c7e276e6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#4  0x00007f2c7e276a6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#5  0x00007f2c89b9d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
maliit/keyboard#6  0x00007f2c8a55c293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f2c851cc700 (LWP 19564)):
#0  0x00007f2c8a54faff in __GI___poll (fds=0x7f2c80005240, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
maliit/keyboard#1  0x00007f2c891de36e in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f2c80005240, timeout=<optimized out>, context=0x7f2c80000c20) at ../../../glib/gmain.c:4346
maliit/keyboard#2  g_main_context_iterate (context=context@entry=0x7f2c80000c20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
maliit/keyboard#3  0x00007f2c891de4a3 in g_main_context_iteration (context=0x7f2c80000c20, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
maliit/keyboard#4  0x00007f2c8ab1affb in QEventDispatcherGlib::processEvents (this=0x7f2c80000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:425
maliit/keyboard#5  0x00007f2c8aabf1eb in QEventLoop::exec (this=this@entry=0x7f2c851cbcb0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
maliit/keyboard#6  0x00007f2c8a8d9a52 in QThread::exec (this=this@entry=0x7f2c89e59d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
maliit/keyboard#7  0x00007f2c89dd5f4b in QDBusConnectionManager::run (this=0x7f2c89e59d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:179
maliit/keyboard#8  0x00007f2c8a8dabec in QThreadPrivate::start (arg=0x7f2c89e59d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:329
maliit/keyboard#9  0x00007f2c89b9d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
maliit/keyboard#10 0x00007f2c8a55c293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f2c86b5a180 (LWP 19563)):
#0  __GI_raise (sig=sig@entry=11) at ../sysdeps/unix/sysv/linux/raise.c:50
maliit/keyboard#1  0x00007f2c89c20fcc in KCrash::defaultCrashHandler (sig=11) at ./src/kcrash.cpp:576
maliit/keyboard#2  <signal handler called>
maliit/keyboard#3  0x00007f2c7dd16004 in QtWayland::zwp_input_panel_v1::get_input_panel_surface(wl_surface*) () from /usr/lib/x86_64-linux-gnu/qt5/plugins/wayland-shell-integration/libinputpanel-shell.so
maliit/keyboard#4  0x00007f2c7dd14af3 in QtWaylandClient::QWaylandInputPanelShellIntegration::createShellSurface(QtWaylandClient::QWaylandWindow*) () from /usr/lib/x86_64-linux-gnu/qt5/plugins/wayland-shell-integration/libinputpanel-shell.so
maliit/keyboard#5  0x00007f2c86d48a15 in QtWaylandClient::QWaylandWindow::initWindow (this=0x5631b76352b0) at qwaylandwindow.cpp:145
maliit/keyboard#6  0x00007f2c86d48f9a in QtWaylandClient::QWaylandWindow::setVisible (visible=true, this=0x5631b76352b0) at qwaylandwindow.cpp:429
maliit/keyboard#7  QtWaylandClient::QWaylandWindow::setVisible (this=0x5631b76352b0, visible=<optimized out>) at qwaylandwindow.cpp:419
maliit/keyboard#8  0x00007f2c8af659fb in QWindowPrivate::setVisible (this=0x5631b7799e20, visible=visible@entry=true) at kernel/qwindow.cpp:408
maliit/keyboard#9  0x00007f2c8b6ac921 in QWidgetWindow::setNativeWindowVisibility (this=this@entry=0x5631b7797370, visible=visible@entry=true) at kernel/qwidgetwindow.cpp:215
maliit/keyboard#10 0x00007f2c8b685e0e in QWidgetPrivate::show_sys (this=this@entry=0x5631b76408f0) at kernel/qwidget.cpp:7892
maliit/keyboard#11 0x00007f2c8b68f5bf in QWidgetPrivate::show_helper (this=this@entry=0x5631b76408f0) at kernel/qwidget.cpp:7815
maliit/keyboard#12 0x00007f2c8b6926a3 in QWidgetPrivate::setVisible (this=0x5631b76408f0, visible=<optimized out>) at kernel/qwidget.cpp:8111
maliit/keyboard#13 0x00007f2c8b692966 in QWidget::setVisible (this=this@entry=0x5631b7642a90, visible=visible@entry=true) at kernel/qwidget.cpp:8043
maliit/keyboard#14 0x00007f2c8b85bcc8 in QDialog::setVisible (this=0x5631b7642a90, visible=<optimized out>) at dialogs/qdialog.cpp:787
maliit/keyboard#15 0x00007f2c8b85b326 in QDialog::exec (this=0x5631b7642a90) at dialogs/qdialog.cpp:593
maliit/keyboard#16 0x00007f2c89fc2511 in KMessageBox::createKMessageBox (dialog=0x5631b7642a90, buttons=0x5631b7640660, icon=..., text=..., strlist=..., ask=..., checkboxReturn=0x0, options=..., details=..., notifyType=QMessageBox::Critical) at /usr/include/c++/9/bits/atomic_base.h:413
maliit/keyboard#17 0x00007f2c89fc2ae1 in KMessageBox::createKMessageBox (dialog=dialog@entry=0x5631b7642a90, buttons=buttons@entry=0x5631b7640660, icon=icon@entry=QMessageBox::Critical, text=..., strlist=..., ask=..., checkboxReturn=0x0, options=..., details=...) at ./src/kmessagebox.cpp:182
maliit/keyboard#18 0x00007f2c89fc5727 in KMessageBox::errorListInternal (dialog=0x5631b7642a90, text=..., strlist=..., caption=..., options=options@entry=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qarraydata.h:257
maliit/keyboard#19 0x00007f2c89fc6dfd in KMessageBox::messageBoxInternal (dialog=0x5631b7642a90, type=<optimized out>, text=..., caption=..., buttonYes=..., buttonNo=..., buttonCancel=..., dontShow=..., options=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:160
maliit/keyboard#20 0x00007f2c89fc6f06 in KMessageBox::messageBox (parent=0xc1eef48bfd248400, type=<optimized out>, text=..., caption=..., buttonYes=..., buttonNo=..., buttonCancel=..., dontShow=..., options=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qflags.h:120
maliit/keyboard#21 0x00007f2c8a3d134f in KDialogJobUiDelegatePrivate::next (this=0x5631b76795e0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qarraydata.h:257
maliit/keyboard#22 0x00007f2c8aaee279 in QObject::event (this=0x5631b76795e0, e=0x5631b75e0f90) at kernel/qobject.cpp:1314
maliit/keyboard#23 0x00007f2c8b64fdc3 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5631b76795e0, e=0x5631b75e0f90) at kernel/qapplication.cpp:3632
maliit/keyboard#24 0x00007f2c8b658bb8 in QApplication::notify(QObject*, QEvent*) () at kernel/qapplication.cpp:3156
maliit/keyboard#25 0x00007f2c8aac06da in QCoreApplication::notifyInternal2 (receiver=0x5631b76795e0, event=0x5631b75e0f90) at ../../include/QtCore/5.15.2/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:325
maliit/keyboard#26 0x00007f2c8aac2fe1 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5631b7579a80) at kernel/qcoreapplication.cpp:1817
maliit/keyboard#27 0x00007f2c8ab1b987 in postEventSourceDispatch (s=0x5631b75e5b50) at kernel/qeventdispatcher_glib.cpp:277
maliit/keyboard#28 0x00007f2c891de17d in g_main_dispatch (context=0x5631b75dec00) at ../../../glib/gmain.c:3309
maliit/keyboard#29 g_main_context_dispatch (context=context@entry=0x5631b75dec00) at ../../../glib/gmain.c:3974
maliit/keyboard#30 0x00007f2c891de400 in g_main_context_iterate (context=context@entry=0x5631b75dec00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4047
maliit/keyboard#31 0x00007f2c891de4a3 in g_main_context_iteration (context=0x5631b75dec00, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
maliit/keyboard#32 0x00007f2c8ab1afe2 in QEventDispatcherGlib::processEvents (this=0x5631b75da550, flags=...) at kernel/qeventdispatcher_glib.cpp:423
maliit/keyboard#33 0x00007f2c8aabf1eb in QEventLoop::exec (this=this@entry=0x7fff55012140, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
maliit/keyboard#34 0x00007f2c8aac7394 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
maliit/keyboard#35 0x00005631b7492e4b in ClientApp::kde_open (this=0x7fff55012350, url=..., mimeType=..., allowExec=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qcoreapplication.h:116
maliit/keyboard#36 0x00005631b74933fa in ClientApp::doIt (this=0x7fff55012350, parser=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:117
maliit/keyboard#37 0x00005631b74920bd in main (argc=<optimized out>, argv=<optimized out>) at ./kioclient/kioclient.cpp:195

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.