Age | Commit message (Collapse) | Author |
|
Similar to the tdf#122293 scenario with Qt 5 on Wayland,
using native windows causes unresponsive UI even with
the xcb Qt QPA plugin when using Qt 6.
Therefore, don't call `QWidget::winId()` at all when
using Qt 6, but just refuse to resolve a native window
handle, the same way that is already done here for the
wayland Qt QPA plugin with qt5.
Add a comment based on the one originally added with
commit 0e3c3b842e14b9646d3697cf1266be21359e0f13
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Sat May 11 21:31:33 2019 +0200
tdf#122293 qt5: Use "alien widgets" by default on Wayland
that was later dropped during a refactoring.
This code path is triggered when trying to resolve the
parent window for a file picker (s. `QtFilePicker::initialize`).
In a quick test in a KDE Plasma 5 Wayland session on Debian testing,
the modality behavior was unchanged with or without this change in
place:
* With qt6 xcb, the main window nicely gets grayed out and is
unresponsive while the file dialog gets shown when using
e.g. "File" -> "Open" in Writer.
* With qt6 wayland, the main window is not grayed out and looks
more "active" still, but doesn't actually accept keyboard
or mouse input.
This is basically the same in other Qt/KDE applications, e.g.
a self-compiled Kate from git master, so not LO-specific.
If resolving the parent for the file picker turns out to be necessary,
maybe something similar to what commit
commit 3ff4800fe400de916c97f587322104af06cc0879
Author: Caolán McNamara <caolanm@redhat.com>
Date: Wed Apr 4 10:22:34 2018 +0100
weld SvInsertOleDlg
and
weld SfxInsertFloatingFrameDialog
and smuggle in the parent widget for the Gtk File dialog via
an XWindow interface
did for gtk3 might be worth looking into.
However, I can at least not reproduce issues like the one described
for gtk3 in
commit 203d96787969f707c78101be18d51b44ace98f93
Author: Caolán McNamara <caolanm@redhat.com>
Date: Mon Jun 21 13:01:52 2021 +0100
give folderpicker an optional parent
so, like a file picker, it can make its parent modal while its
operating. Otherwise its possible to interact with the parent dialog in
undesirable ways, e.g. file, export as, export as epub, the folder
picker of 'media directory'
with the qt6 VCL plugin even with this commit in place.
Another scenario relying on a native window handle is video
playback with GStreamer's x11 video sink.
That still works for qt5 with the xcb plugin as the handle is
still returned for that one.
For qt6 with the xcb plugin, that didn't work properly
without this commit either (at least not in my tests with
current qtbase dev as of commit
70a2e7f32b9f9ce19d1538f14fbde7b0d1e77ffd), s.
tdf#145735 comment 7.
It's now broken a different way than before
(extra windows show up instead of no video being shown).
This will be further tracked together with a solution for
Wayland in tdf#125219.
As a side note, forcing native windows for everything
using `QT_USE_NATIVE_WINDOWS=1` as described at [1]
causes more sever brokenness with the qt6 xcb plugin
(mostly black window in Writer instead of showing the
actual content).
[1] https://doc.qt.io/qt-6/qwidget.html#native-widgets-vs-alien-widgets
Change-Id: I9718c680bd8bc4ff0574f171403d965c1beac781
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167783
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Fixes this crash/assertion seen when starting Writer with
the qt6 VCL plugin with a fresh user profile with qtbase debug
build (as of commit 70a2e7f32b9f9ce19d1538f14fbde7b0d1e77ffd):
ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 0x0x7fff9c454020. Receiver 'QtMainWindowClassWindow' (of type 'QWidgetWindow') was created in thread 0x0x55555560dc50", file /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp, line 547
Thread 19 "soffice.bin" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffada006c0 (LWP 10947)]
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
44 ./nptl/pthread_kill.c: No such file or directory.
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1 0x00007ffff78a6b7f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2 0x00007ffff78584e2 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007ffff78414ed in __GI_abort () at ./stdlib/abort.c:79
#4 0x00007fffe34f95c9 in qAbort() () at /home/michi/development/git/qt5/qtbase/src/corelib/global/qassert.cpp:49
#5 0x00007fffe350d459 in qt_message_fatal<QString&>(QtMsgType, QMessageLogContext const&, QString&) (context=..., message=...) at /home/michi/development/git/qt5/qtbase/src/corelib/global/qlogging.cpp:2112
#6 0x00007fffe35063e6 in qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *)
(msgType=QtFatalMsg, context=..., msg=0x7fffe3b8afa8 "ASSERT failure in %s: \"%s\", file %s, line %d", ap=0x7fffad9fb108) at /home/michi/development/git/qt5/qtbase/src/corelib/global/qlogging.cpp:380
#7 0x00007fffe35084b1 in QMessageLogger::fatal(char const*, ...) const (this=0x7fffad9fb350, msg=0x7fffe3b8afa8 "ASSERT failure in %s: \"%s\", file %s, line %d")
at /home/michi/development/git/qt5/qtbase/src/corelib/global/qlogging.cpp:880
#8 0x00007fffe34f969c in qt_assert_x(char const*, char const*, char const*, int)
(where=0x7fffe3bae469 "QCoreApplication::sendEvent", what=0x7fff9cd289a0 "Cannot send events to objects owned by a different thread. Current thread 0x0x7fff9c454020. Receiver 'QtMainWindowClassWindow' (of type 'QWidgetWindow') was created in thread 0x0x55555560dc50", file=0x7fffe3bae098 "/home/michi/development/git/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp", line=547) at /home/michi/development/git/qt5/qtbase/src/corelib/global/qassert.cpp:114
#9 0x00007fffe35f54e6 in QCoreApplicationPrivate::checkReceiverThread(QObject*) (receiver=0x55555bb8b4a0) at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:547
#10 0x00007fffe15a786e in QApplication::notify(QObject*, QEvent*) (this=0x55555560d9d0, receiver=0x55555bb8b4a0, e=0x7fffad9fb7f0) at /home/michi/development/git/qt5/qtbase/src/widgets/kernel/qapplication.cpp:2580
#11 0x00007fffe35f68be in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55555bb8b4a0, event=0x7fffad9fb7f0) at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:1154
#12 0x00007fffe35f7677 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=0x55555bb8b4a0, event=0x7fffad9fb7f0) at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:1598
#13 0x00007fffe24f6299 in QWindowPrivate::create(bool) (this=0x5555569bd9a0, recursive=false) at /home/michi/development/git/qt5/qtbase/src/gui/kernel/qwindow.cpp:589
#14 0x00007fffe24f6759 in QWindow::create() (this=0x55555bb8b4a0) at /home/michi/development/git/qt5/qtbase/src/gui/kernel/qwindow.cpp:720
#15 0x00007fffe1643f45 in QWidgetPrivate::create() (this=0x55555b24c140) at /home/michi/development/git/qt5/qtbase/src/widgets/kernel/qwidget.cpp:1341
#16 0x00007fffe16433c3 in QWidget::create(unsigned long long, bool, bool) (this=0x5555572554a0, window=0, initializeWindow=true, destroyOldWindow=true) at /home/michi/development/git/qt5/qtbase/src/widgets/kernel/qwidget.cpp:1206
#17 0x00007fffe1649dd5 in QWidget::setWindowState(QFlags<Qt::WindowState>) (this=0x5555572554a0, newstate=...) at /home/michi/development/git/qt5/qtbase/src/widgets/kernel/qwidget.cpp:2946
#18 0x00007fffe4235db6 in QtFrame::SetWindowStateImpl(QFlags<Qt::WindowState>) (this=0x55555bba8cf0, eState=...) at vcl/qt6/../qt5/QtFrame.cxx:340
#19 0x00007fffe4237fc0 in QtFrame::SetWindowState(vcl::WindowData const*) (this=0x55555bba8cf0, pState=0x7fffad9fbdc0) at vcl/qt6/../qt5/QtFrame.cxx:677
#20 0x00007fffee0a4c63 in SystemWindow::SetWindowState(vcl::WindowData const&) (this=0x7fff9d689d50, rData=...) at /home/michi/development/git/libreoffice/vcl/source/window/syswin.cxx:708
#21 0x00007fffee0a5802 in SystemWindow::SetWindowState(std::basic_string_view<char16_t, std::char_traits<char16_t> >) (this=0x7fff9d689d50, rStr=u",,,;4;") at /home/michi/development/git/libreoffice/vcl/source/window/syswin.cxx:840
#22 0x00007ffff4ddc4c4 in framework::LoadEnv::impl_applyPersistentWindowState(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&) (this=0x7fffad9fcbb8, xWindow=uno::Reference to (VCLXTopWindow *) 0x7fff9c003810)
at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:1809
#23 0x00007ffff4dd6f5b in framework::LoadEnv::impl_loadContent() (this=0x7fffad9fcbb8) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:1081
#24 0x00007ffff4dd48e4 in framework::LoadEnv::start() (this=0x7fffad9fcbb8) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:412
#25 0x00007ffff4dd21b2 in framework::LoadEnv::startLoading(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, rtl::OUString const&, int, LoadEnvFeatures)
(this=0x7fffad9fcbb8, sURL="file:///home/michi/development/git/libreoffice/instdir/program/../program/opencl/cl-test.ods", lMediaDescriptor=uno::Sequence of length 1 = {...}, xBaseFrame=uno::Reference to (framework::Desktop *) 0x5555569d5c68, sTarget="_blank", nSearchFlags=0, eFeature=LoadEnvFeatures::NONE) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:308
#26 0x00007ffff4dd0998 in framework::LoadEnv::loadComponentFromURL(com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&)
(xLoader=uno::Reference to (framework::Desktop *) 0x5555569d5c78, xContext=uno::Reference to (cppu::(anonymous namespace)::ComponentContext *) 0x555555623d38, sURL="file:///home/michi/development/git/libreoffice/instdir/program/../program/opencl/cl-test.ods", sTarget="_blank", nSearchFlags=0, lArgs=uno::Sequence of length 1 = {...}) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:168
#27 0x00007ffff4e06a3f in framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&)
(this=0x5555569d5c00, sURL="file:///home/michi/development/git/libreoffice/instdir/program/../program/opencl/cl-test.ods", sTargetFrameName="_blank", nSearchFlags=0, lArguments=uno::Sequence of length 1 = {...})
at /home/michi/development/git/libreoffice/framework/source/services/desktop.cxx:592
#28 0x00007ffff4e06b34 in non-virtual thunk to framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) ()
at /home/michi/development/git/libreoffice/instdir/program/libfwklo.so
#29 0x00007ffff7ba9147 in desktop::testOpenCLCompute(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&, rtl::OUString const&)
(xDesktop=uno::Reference to (framework::Desktop *) 0x5555569d5c58, rURL="file:///home/michi/development/git/libreoffice/instdir/program/../program/opencl/cl-test.ods")
at /home/michi/development/git/libreoffice/desktop/source/app/opencl.cxx:132
#30 0x00007ffff7ba7f54 in desktop::Desktop::CheckOpenCLCompute(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&) (xDesktop=uno::Reference to (framework::Desktop *) 0x5555569d5c58)
at /home/michi/development/git/libreoffice/desktop/source/app/opencl.cxx:241
#31 0x00007ffff7b5719d in std::__invoke_impl<void, void (*)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> >(std::__invoke_other, void (*&&)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2>&&)
(__f=@0x555556fbe460: 0x7ffff7ba7760 <desktop::Desktop::CheckOpenCLCompute(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&)>, __args=...)
at /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61
#32 0x00007ffff7b5712d in std::__invoke<void (*)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> >(void (*&&)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2>&&)
(__fn=@0x555556fbe460: 0x7ffff7ba7760 <desktop::Desktop::CheckOpenCLCompute(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&)>, __args=...)
at /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96
#33 0x00007ffff7b57102 in std::thread::_Invoker<std::tuple<void (*)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> > >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) (this=0x555556fbe458) at /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292
#34 0x00007ffff7b570c5 in std::thread::_Invoker<std::tuple<void (*)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> > >::operator()()
(this=0x555556fbe458) at /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299
#35 0x00007ffff7b56e69 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> > > >::_M_run() (this=0x555556fbe450) at /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244
#36 0x00007ffff74dee24 in () at /lib/x86_64-linux-gnu/libstdc++.so.6
#37 0x00007ffff78a4dbb in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:444
#38 0x00007ffff79269f8 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Change-Id: I35024670cf4e4a6c00762be71fa051cc9417ef75
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167779
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Fixes this crash/assertion seen when starting Writer with
the qt6 VCL plugin with a fresh user profile with qtbase debug
build (as of commit 70a2e7f32b9f9ce19d1538f14fbde7b0d1e77ffd):
Thread 19 "soffice.bin" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffada006c0 (LWP 150142)]
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
44 ./nptl/pthread_kill.c: No such file or directory.
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1 0x00007ffff78a6b7f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2 0x00007ffff78584e2 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007ffff78414ed in __GI_abort () at ./stdlib/abort.c:79
#4 0x00007fffe34f95c9 in qAbort() () at /home/michi/development/git/qt5/qtbase/src/corelib/global/qassert.cpp:49
#5 0x00007fffe350d459 in qt_message_fatal<QString&>(QtMsgType, QMessageLogContext const&, QString&) (context=..., message=...) at /home/michi/development/git/qt5/qtbase/src/corelib/global/qlogging.cpp:2112
#6 0x00007fffe35063e6 in qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *)
(msgType=QtFatalMsg, context=..., msg=0x7fffe3b8afa8 "ASSERT failure in %s: \"%s\", file %s, line %d", ap=0x7fffad9faab8) at /home/michi/development/git/qt5/qtbase/src/corelib/global/qlogging.cpp:380
#7 0x00007fffe35084b1 in QMessageLogger::fatal(char const*, ...) const (this=0x7fffad9fad00, msg=0x7fffe3b8afa8 "ASSERT failure in %s: \"%s\", file %s, line %d")
at /home/michi/development/git/qt5/qtbase/src/corelib/global/qlogging.cpp:880
#8 0x00007fffe34f969c in qt_assert_x(char const*, char const*, char const*, int)
(where=0x7fffe3bae469 "QCoreApplication::sendEvent", what=0x7fff9d691f60 "Cannot send events to objects owned by a different thread. Current thread 0x0x7fff9c456670. Receiver 'QtMainWindowClassWindow' (of type 'QWidgetWindow') was created in thread 0x0x55555560dc60", file=0x7fffe3bae098 "/home/michi/development/git/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp", line=547) at /home/michi/development/git/qt5/qtbase/src/corelib/global/qassert.cpp:114
#9 0x00007fffe35f54e6 in QCoreApplicationPrivate::checkReceiverThread(QObject*) (receiver=0x55555bb8a180) at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:547
#10 0x00007fffe15a786e in QApplication::notify(QObject*, QEvent*) (this=0x55555560d9e0, receiver=0x55555bb8a180, e=0x7fffad9fb120) at /home/michi/development/git/qt5/qtbase/src/widgets/kernel/qapplication.cpp:2580
#11 0x00007fffe35f68be in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55555bb8a180, event=0x7fffad9fb120) at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:1154
#12 0x00007fffe35f7677 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=0x55555bb8a180, event=0x7fffad9fb120) at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:1598
#13 0x00007fffe24f74d0 in QWindow::setIcon(QIcon const&) (this=0x55555bb8a180, icon=...) at /home/michi/development/git/qt5/qtbase/src/gui/kernel/qwindow.cpp:1094
#14 0x00007fffe165564d in QWidgetPrivate::setWindowIcon_sys() (this=0x55555b24b370) at /home/michi/development/git/qt5/qtbase/src/widgets/kernel/qwidget.cpp:6208
#15 0x00007fffe1655598 in QWidget::setWindowIcon(QIcon const&) (this=0x55555735d7a0, icon=...) at /home/michi/development/git/qt5/qtbase/src/widgets/kernel/qwidget.cpp:6198
#16 0x00007fffe42362a9 in QtFrame::SetIcon(unsigned short) (this=0x55555bba7d30, nIcon=4) at vcl/qt6/../qt5/QtFrame.cxx:378
#17 0x00007fffee0a2aa6 in SystemWindow::SetIcon(unsigned short) (this=0x7fff9d68a7c0, nIcon=4) at /home/michi/development/git/libreoffice/vcl/source/window/syswin.cxx:332
#18 0x00007ffff4c843f1 in framework::TitleBarUpdate::impl_updateIcon(com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&)
(this=0x7fff9c452fe0, xFrame=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x7fff9d68c690) at /home/michi/development/git/libreoffice/framework/source/helper/titlebarupdate.cxx:278
#19 0x00007ffff4c831c2 in framework::TitleBarUpdate::impl_forceUpdate() (this=0x7fff9c452fe0) at /home/michi/development/git/libreoffice/framework/source/helper/titlebarupdate.cxx:214
#20 0x00007ffff4c8304b in framework::TitleBarUpdate::frameAction(com::sun::star::frame::FrameActionEvent const&) (this=0x7fff9c452fe0, aEvent=...) at /home/michi/development/git/libreoffice/framework/source/helper/titlebarupdate.cxx:95
#21 0x00007ffff4e25397 in (anonymous namespace)::XFrameImpl::implts_sendFrameActionEvent(com::sun::star::frame::FrameAction const&)
(this=0x7fff9d68c620, aAction=@0x7ffff4a01f68: com::sun::star::frame::FrameAction::FrameAction_COMPONENT_ATTACHED) at /home/michi/development/git/libreoffice/framework/source/services/frame.cxx:2960
#22 0x00007ffff4e1df33 in (anonymous namespace)::XFrameImpl::setComponent(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&, com::sun::star::uno::Reference<com::sun::star::frame::XController> const&)
(this=0x7fff9d68c620, xComponentWindow=uno::Reference to (VCLXContainer *) 0x7fff9dd02cd0, xController=uno::Reference to (ScTabViewObj *) 0x7fff9d8d82d8)
at /home/michi/development/git/libreoffice/framework/source/services/frame.cxx:1552
#23 0x00007ffff40291b3 in utl::ConnectFrameControllerModel(com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, com::sun::star::uno::Reference<com::sun::star::frame::XController2> const&, com::sun::star::uno::Reference<com::sun::star::frame::XModel> const&)
(xFrame=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x7fff9d68c690, xController=uno::Reference to (ScTabViewObj *) 0x7fff9d8d82d8, xModel=uno::Reference to (ScModelObj *) 0x7fff9c471680) at include/unotools/fcm.hxx:45
#24 0x00007ffff402551a in (anonymous namespace)::SfxFrameLoader_Impl::impl_createDocumentView(com::sun::star::uno::Reference<com::sun::star::frame::XModel2> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, comphelper::NamedValueCollection const&, rtl::OUString const&)
(i_rModel=uno::Reference to (ScModelObj *) 0x7fff9c471680, i_rFrame=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x7fff9d68c690, i_rViewFactoryArgs=..., i_rViewName="Default")
at /home/michi/development/git/libreoffice/sfx2/source/view/frmload.cxx:584
#25 0x00007ffff402272f in (anonymous namespace)::SfxFrameLoader_Impl::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&)
(this=0x7fff9c451600, rArgs=uno::Sequence of length 11 = {...}, _rTargetFrame=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x7fff9d68c690) at /home/michi/development/git/libreoffice/sfx2/source/view/frmload.cxx:759
#26 0x00007ffff4dd7b61 in framework::LoadEnv::impl_loadContent() (this=0x7fffad9fcbb8) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:1176
#27 0x00007ffff4dd48e4 in framework::LoadEnv::start() (this=0x7fffad9fcbb8) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:412
#28 0x00007ffff4dd21b2 in framework::LoadEnv::startLoading(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, rtl::OUString const&, int, LoadEnvFeatures)
(this=0x7fffad9fcbb8, sURL="file:///home/michi/development/git/libreoffice/instdir/program/../program/opencl/cl-test.ods", lMediaDescriptor=uno::Sequence of length 1 = {...}, xBaseFrame=uno::Reference to (framework::Desktop *) 0x5555569ad308, sTarget="_blank", nSearchFlags=0, eFeature=LoadEnvFeatures::NONE) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:308
#29 0x00007ffff4dd0998 in framework::LoadEnv::loadComponentFromURL(com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&)
(xLoader=uno::Reference to (framework::Desktop *) 0x5555569ad318, xContext=uno::Reference to (cppu::(anonymous namespace)::ComponentContext *) 0x555555623d48, sURL="file:///home/michi/development/git/libreoffice/instdir/program/../program/opencl/cl-test.ods", sTarget="_blank", nSearchFlags=0, lArgs=uno::Sequence of length 1 = {...}) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:168
#30 0x00007ffff4e06a3f in framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&)
(this=0x5555569ad2a0, sURL="file:///home/michi/development/git/libreoffice/instdir/program/../program/opencl/cl-test.ods", sTargetFrameName="_blank", nSearchFlags=0, lArguments=uno::Sequence of length 1 = {...})
at /home/michi/development/git/libreoffice/framework/source/services/desktop.cxx:592
#31 0x00007ffff4e06b34 in non-virtual thunk to framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) ()
at /home/michi/development/git/libreoffice/instdir/program/libfwklo.so
#32 0x00007ffff7ba9147 in desktop::testOpenCLCompute(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&, rtl::OUString const&)
(xDesktop=uno::Reference to (framework::Desktop *) 0x5555569ad2f8, rURL="file:///home/michi/development/git/libreoffice/instdir/program/../program/opencl/cl-test.ods")
at /home/michi/development/git/libreoffice/desktop/source/app/opencl.cxx:132
#33 0x00007ffff7ba7f54 in desktop::Desktop::CheckOpenCLCompute(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&) (xDesktop=uno::Reference to (framework::Desktop *) 0x5555569ad2f8)
--Type <RET> for more, q to quit, c to continue without paging--
at /home/michi/development/git/libreoffice/desktop/source/app/opencl.cxx:241
#34 0x00007ffff7b5719d in std::__invoke_impl<void, void (*)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> >(std::__invoke_other, void (*&&)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2>&&)
(__f=@0x5555573c20b0: 0x7ffff7ba7760 <desktop::Desktop::CheckOpenCLCompute(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&)>, __args=...)
at /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61
#35 0x00007ffff7b5712d in std::__invoke<void (*)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> >(void (*&&)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2>&&)
(__fn=@0x5555573c20b0: 0x7ffff7ba7760 <desktop::Desktop::CheckOpenCLCompute(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&)>, __args=...)
at /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96
#36 0x00007ffff7b57102 in std::thread::_Invoker<std::tuple<void (*)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> > >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) (this=0x5555573c20a8) at /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292
#37 0x00007ffff7b570c5 in std::thread::_Invoker<std::tuple<void (*)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> > >::operator()()
(this=0x5555573c20a8) at /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299
#38 0x00007ffff7b56e69 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> const&), com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> > > >::_M_run() (this=0x5555573c20a0) at /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244
#39 0x00007ffff74dee24 in () at /lib/x86_64-linux-gnu/libstdc++.so.6
#40 0x00007ffff78a4dbb in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:444
#41 0x00007ffff79269f8 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Change-Id: Ic611eb26b140c060cba4d81603e506806cf43bab
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167778
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Previously, Writer performed text layout for each span of text
separately. This caused incorrect kerning when the text style changed
mid-word, for example by highlighting or changing the color of a single
letter.
This change updates Writer so it will also consider neighboring text
while performing text layout.
Change-Id: I511096c009343f39cc1b9ba745909c5b8cbad86f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167016
Tested-by: Jenkins
Reviewed-by: Jonathan Clark <jonathan@libreoffice.org>
|
|
Change-Id: I710ff75d387b2d452cb80911c9f0092948453ef8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167751
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
|
|
FlashWindow() can be used to bring user attention to application
in background. Right now in LO it has implementation only for
Windows. Here some new cases were added when flashing is used:
* dialog window did open
* document loaded
* LO started
Some redesign of previous solution is also performed: no manual
search for top window, let's reuse existing code.
Changed behavior for bringing LO window to foreground: it is made always and not depending on current value of NewDocumentHandling:ForceFocusAndToFront. It has no sense to tweak this behavior: if user clicks on document in file explorer, LO should came to foreground, no exceptions.
Change-Id: I22b5b4e2b170cd25632083a55b3e9f0358bcae03
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166615
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
|
|
now that find-unused-includes was expanded with detecting these
Change-Id: I9f21ad1a85c1e3178cad98464b2ba407d909b62d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167638
Reviewed-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
Tested-by: Jenkins
|
|
Due to the switch from transparency to alpha in commit
81994cb2b8b32453a92bcb011830fcb884f22ff3, an empty alpha mask
is treated as a completely transparent bitmap. So revert all
of the previous commits for tdf#157576, tdf#157635, and tdf#157793
and create a completely opaque bitmap instead.
Note: this fix also fixes tdf#157576, tdf#157635, and tdf#157793.
Change-Id: Ic2ccad6ab94e4d43b1b66013f85955d474dc0151
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167563
Reviewed-by: Patrick Luby <guibomacdev@gmail.com>
Tested-by: Jenkins
|
|
and is since:
https://gitlab.gnome.org/GNOME/glib/-/commit/747e3af9987b37847d7d5acbf882d1ee4a6bd91b
Change-Id: Ibb648ccf69ff892fc1e2a3c3dc4da1fffd577c92
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167657
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
|
|
Change-Id: I3a65485cc890d6bb6bf1197a3f296634ebffa02c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167612
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
|
|
In the same way that
commit 22250df05830700b2555348b8ac46ee1007d0e5d
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Fri Dec 8 11:50:40 2023 +0100
tdf#158548 vcl: Require mouse over listbox to mouse-wheel through entries
restricted changing listbox values for the focused
listbox on mouse-wheel to the case when the listbox
is also hovered over by the mouse, do the same for
`SpinField` as well, to avoid accidently changing
the value as described e.g. for the tdf#160824
scenario.
This is also in line with Qt spin boxes that
only change their values on mouse-wheel when
the mouse pointer is above them.
For the gtk3 VCL plugin that uses native spin boxes,
this commit has no effect, and the value doesn't
change on mouse-wheel at all.
Change-Id: I22277294f76655cd13b1dc57416c82afe44460d1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167604
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Change-Id: Ib624737d838dfde29018e343f6b51501a5d7f7f9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167265
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
|
|
A clipboard changed event needs to be fired whenever the
native general pasteboard changes. Otherwise, if the clipboard
is empty when a document is opened, the Paste and Paste Special
menu items and toolbar buttons will be disabled and will never
be enabled even after something has been copied to the general
pasteboard.
Change-Id: I8a70a2ac4de55593a886233d144dc18c3c57178e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166073
Reviewed-by: Patrick Luby <guibomacdev@gmail.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167570
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
|
|
This removes one level of indirection.
`ComboBox::Impl` had originally been introduced in
commit ece8699f8f22f6bae137c601bc29b83b75dc3bf3
Author: Michael Stahl <mstahl@redhat.com>
Date: Fri Jul 10 12:05:48 2015 +0200
vcl: pImplify ComboBox
The boost::signal stuff is quite heavy (33 kloc), so try to hide it
from the header.
Change-Id: I87826ccfd2a151aff274ffa6b7159a988f751808
, but all of the boost usage in here has been replaced
since then.
Change-Id: Ia8fb5cb895800edae104857c7713fa65e509a3c2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167485
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Change-Id: I98f40cba9baf2a21d095af84a07cd794723cb75d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167552
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I31a16e4b709955cb01d6aebaf169d40f71f7ea09
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167551
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
|
|
Change-Id: I3f62ea563af8e2c9aa5ed558370b49f05804c632
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167550
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
and send uno command enable/disable status
Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: Id643a27308809b6960be72fb368b9f078ff9cf6c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167296
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167521
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
|
|
Change-Id: I85aa6c2f100823d1d39e24ab3ffcb0c44f66354e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167519
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
|
|
Change-Id: I8b3a9c10781450083ae2cdeb8614b42e33bf9520
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167531
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: I19017bc993f0adafdae32313e0e01e69e1bbe80b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167517
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I95441e62c33bdc5c22dad2fc25a072d9ce93e4d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167514
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
|
|
Change-Id: Ic703c92165ba7f0a43d25bb2899b6455e2e2f312
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167513
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
|
|
Adds detection:
- Windows X86_64,
- Windows X86_32
- WoW64 (Windows 32 on Windows 64).
Change-Id: Ic40ec8bdfb206a7ad3045edf7ecef3cb97cc08f7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167144
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
|
|
Change-Id: Icfced4a990e2d02995bff4078f14b8ee26e9cca3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167497
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
They simply bloat the json to no benefit if the properties are
empty, avoid serializing empty values.
Change-Id: I83c780d01820ec39acc85899d45ad9e929ad7e76
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167496
Reviewed-by: Marco Cecchetti <marco.cecchetti@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
(cherry picked from commit 24876e5611abbaec9b2fe5fcbcf4be71a10ee366)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167457
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
|
|
Otherwise we get huge dumps which can overwhelm our logging and hide
more useful information, and/or the journal can drop them on the ground.
Change-Id: Ie942c70a90a6df60ccd8986444362d622c213e15
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167456
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
|
|
Change-Id: I5b6ee5bda0c5ff69d297f7f8e87d4c3f3d21791c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167470
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
|
|
Searching for legacy label from/to can take quite some time in
complex hierarchies (wallclock timed to 100ms) and this quickly
can add up. In case of accessibility checker sidebar with many
entries it could add up to 10s or more (depending on the amount of
accessibility issues found in the document).
The legacy label from/to is not used when we load from .ui file so
it is not relevant for online currently. It is only relevant for ui
found in extensions or starbasic ui.
Also avoid making a copy of the vector of mnemonic label for no
particular reason.
Change-Id: I72002e6440a06f6e8548b7bddb46c3ab283ea283
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167347
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
(cherry picked from commit 1353ae001ed83c1f20b81df1708f694427c587a4)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167315
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: If0588a018564a708361b0246b294520ac5d2d1db
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167368
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
|
|
If `nStateSet` is 0, no states will be set int the
loop anyway, so the extra check is not needed.
Change-Id: Id26f2210c51cb6bf952720f9a84696a327992df6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167330
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
No longer manually add `ATK_STATE_FOCUSED` to the
ATK focus object.
The focused object should should have the
`css::accessbibility::AccessibleStateType::FOCUSED`
state set on UNO level, in which case this is already
mapped to the focused state in the lines above the
newly removed code, so explicitly addding it
again shouldn't be necessary.
If the state is missing, that most likely needs
to be fixed in the underlying `XAccessibleStateSet`
implementation.
Therefore, remove what looks like a workaround.
If any issues show up after this, let's rather take
a look at the underlying issues and try to fix things
there.
Change-Id: Ie7252c4b2dd2ec15c7a3bbc6a1a5e2830cdd39a7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167309
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
When scrolling in Writer with automatic spellchecking enabled,
the current event never changes because the fix for tdf#155266
causes Writer to get stuck in a loop. So, if the current event
has not changed since the last pass through this code, skip
the fix for tdf#155266.
Change-Id: I97265a7698756c5fb65b6686f6bb77c1caa08862
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167298
Reviewed-by: Patrick Luby <guibomacdev@gmail.com>
Tested-by: Jenkins
|
|
This reverts commit 6517ce70e50e61441484e7ee7a4be0e265020175.
Reason for revert:
<_rene__> noelgrandin: ping?
<_rene__> noelgrandin: /usr/bin/ld: /home/rene/LibreOffice/git/master/workdir/LinkTarget/StaticLibrary/libskia.a: error adding symbols: archive has no index; run ranlib to add one
<_rene__> noelgrandin: caused by your skia static library change. I think I pointed that out once already...
<_rene__> $ ld -v
<_rene__> GNU ld (GNU Binutils for Debian) 2.42
<noelgrandin> hmm, it's not an ld version issue, because I have ld 2.41
<_rene__> gcc version 13.2.0 (Debian 13.2.0-24)
<_rene__> and
<_rene__> Debian clang version 16.0.6 (27)
<_rene__> fwiw, too
<noelgrandin> is that a mergelibs build, or a regular build?
<_rene__> mergelibs
<_rene__> (the "normal" one, not =more)
<_rene__> noelgrandin: ... and LTO
<_rene__> noelgrandin: (saying because googling gives me https://github.com/mesonbuild/meson/issues/8371. and yes, .a is built with clang and the rest with gcc "of course")
<_rene__> noelgrandin: but the Linux release builds _do_ that:
<_rene__> $ grep -E "(lto|merge)" distro-configs/LibreOfficeLinux.conf
<_rene__> --enable-mergelibs
<_rene__> --enable-lto
<_rene__> $
<loircbot> LibreOffice (core) [libreoffice-7-6-7] lohmaier+LibreOffice · readlicense_oo/license/CREDITS.fodt · update credits
<noelgrandin> oh yeah, good spotting
<noelgrandin> yes, LTO is going to be a problem because skia is built with clang
Change-Id: I96c63109d2856c6e4cb22cf9ac945d4cfa9848c9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167227
Tested-by: René Engelhard <rene@debian.org>
Reviewed-by: René Engelhard <rene@debian.org>
Tested-by: Jenkins
|
|
Set the combobox a11y role for the box in the .ui file
used for the custom gtk3 combobox implementation.
With this in place, moving focus to the "Font Name" or
another editable combobox in the Writer toolbar now
makes Orca announce that one as "editable combobox"
rather than just "text".
See also
commit 1e851093f0148d2c55fc3fd377d274f6703c71c9
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu Apr 18 14:02:25 2024 +0200
tdf#159910 gtk3 a11y: Keep a11y props for combobox
for a very similar change that caused the proper
role to be announced for non-editable comboboxes.
Change-Id: I3062e5c062911040ef0ec5721d15fee78d85d0dd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167262
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
As mentioned in
commit c45c64aeb57dce91965d7be54601128946455c90
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon May 6 14:44:36 2024 +0200
tdf#160806 tdf#160837 gtk3 a11y: Drop handling of some VclEventIds
, the a11y bridge should not have to handle VCL events itself,
but all relevant events should be forwarded to the a11y
event listener as appropriate `AccessibleEventObject` and be handled
by the a11y event listener instead, see `AtkListener::notifyEvent`
for the gtk3 implementation.
Now that handling of all VCL events has been dropped in
previous commits, drop the `WindowEventHandler` completely.
This also means that the call to `InitAtkBridge` when initializing
the `GtkInstance` and the `DeInitAtkBridge` on destruction
is no longer necessary.
In a quick test with the Orca screen reader and the gtk3
VCL plugin, nothing suspicious showed up, things were
still working as expected and experienced prior to the
change series dropping the VCL event handling from the
gtk3 a11y bridge.
Change-Id: Ieed270b636f361c57cd4e78aceaecc7d174409d6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167256
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Drop the manual processing of `VclEventId::TabpageActivate`
in the gtk3 a11y bridge.
As mentioned in
commit c45c64aeb57dce91965d7be54601128946455c90
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon May 6 14:44:36 2024 +0200
tdf#160806 tdf#160837 gtk3 a11y: Drop handling of some VclEventIds
, the a11y bridge should not have to handle VCL events itself,
but all relevant events should be forwarded to the a11y
event listener as appropriate `AccessibleEventObject` and be handled
by the a11y event listener instead, see `AtkListener::notifyEvent`
for the gtk3 implementation.
By now, most if not all tab pages should be native GTK widgets
anyway.
For non-native ones, `VCLXAccessibleTabControl::ProcessWindowEvent`
contains handling for the `VclEventId::TabpageActivate` event that
should be taking care of forwarding that as the corresponding
a11y event to the a11y bridges. If anything is still missing after
this commit, that's probably a good starting point for further
analysis.
Change-Id: I5b3f64c973d4030d2b68be6dff1d771bc0cef405
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167255
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Drop the manual processing of `VclEventId::MenuHighlight`
in the gtk3 a11y bridge.
As mentioned in
commit c45c64aeb57dce91965d7be54601128946455c90
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon May 6 14:44:36 2024 +0200
tdf#160806 tdf#160837 gtk3 a11y: Drop handling of some VclEventIds
, the a11y bridge should not have to handle VCL events itself,
but all relevant events should be forwarded to the a11y
event listener as appropriate `AccessibleEventObject` and be handled
by the a11y event listener instead, see `AtkListener::notifyEvent`
for the gtk3 implementation.
In a quick test, menu items were still announced
just fine by the Orca screen reader when using the
gtk3 VCL plugin with this commit in place.
By now, most menus should be native GTK widgets anyway.
For non-native menus,
`OAccessibleMenuBaseComponent::ProcessMenuEvent` contains
handling for the `VclEventId::MenuHighlight` event that
should be taking care of forwarding that as the corresponding
a11y event to the a11y bridges. If anything is missing after
this commit, that's probably a good starting point for further
analysis.
Change-Id: Ia8686101dc559ed98b48285eac15c35fc10818af
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167254
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Drop the manual processing of `VclEventId::ToolboxHighlight`
in the gtk3 a11y bridge.
As mentioned in
commit c45c64aeb57dce91965d7be54601128946455c90
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon May 6 14:44:36 2024 +0200
tdf#160806 tdf#160837 gtk3 a11y: Drop handling of some VclEventIds
, the a11y bridge should not have to handle VCL events itself,
but all relevant events should be forwarded to the a11y
event listener as appropriate `AccessibleEventObject` and be handled
by the a11y event listener instead, see `AtkListener::notifyEvent`
for the gtk3 implementation.
In a quick test, toolbar items were still announced
just fine by the Orca screen reader when using the
gtk3 VCL plugin with this commit in place.
`VCLXAccessibleToolBox::ProcessWindowEvent` handles
`VclEventId::ToolboxHighlight` and
`VclEventId::ToolboxHighlightOff` whose manual processing
is now dropped from gtk3, so the former might be a good place
to further look into if anything is still missing after
this commit.
The now dropped handling was originally added in
commit e9816343cd71dfe556e6ace12d67c642a8dde635
Author: Jens-Heiner Rechtien <hr@openoffice.org>
Date: Thu May 11 12:32:22 2006 +0000
INTEGRATION: CWS atkbridge2 (1.2.4); FILE MERGED
2006/05/08 13:45:15 obr 1.2.4.1: #135353# fixed crashes when closing sub-toolbars and application exit
Change-Id: Ib6cfafbc3711fce6a48120439654dc6e6c15971a
Change-Id: I87061fdc595a0a29c2a3dce88ab13c9d7d7ba1b0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167253
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
(1) we only use it from inside vcl
(2) it exports a boatload of symbols
(3) its a performance hotspot
so lets link it inside and give the optimiser as
much room as possible.
Change-Id: If19d5556e3b45f40ef09d1e9225d12ef5f1ec32a
Change-Id: I3d5edca20f5a15e8981f17fe9fcb9a338006eaff
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167273
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Similar to how the previous
Change-Id: I00e62016ced2fbb8796960671f5e58a3ceac4b29
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon May 6 14:44:36 2024 +0200
tdf#160806 tdf#160837 gtk3 a11y: Drop handling of some VclEventIds
dropped handling for `VclEventId::WindowGetFocus`
and `VclEventId::ObjectDying` in the gtk3 a11y bridge,
do the same for `VclEventId::ToolboxButtonStateChanged`.
And drop `VclEventId::ObjectDying` completely, as the
gtk3 a11y bridge was the only place processing it.
That event and the handling had been introduced in
commit 3b40f502341272e989ae5266a1f8a03f2736449b
Author: Ivo Hinkelmann <ihi@openoffice.org>
Date: Tue Feb 5 11:30:51 2008 +0000
INTEGRATION: CWS fwk83_SRC680 (1.7.186); FILE MERGED
2008/01/30 12:40:39 obr 1.7.186.2: fix for fedora tinderbox (64bit)
2008/01/15 23:49:28 obr 1.7.186.1: #i70872# create wrapper for toolbox items that change state
commit a1cbbd113da4ce3d5342d9ae5ff1c8d2137aa59c
Author: Ivo Hinkelmann <ihi@openoffice.org>
Date: Tue Feb 5 11:30:25 2008 +0000
INTEGRATION: CWS fwk83_SRC680 (1.51.160); FILE MERGED
2008/01/14 14:35:26 cd 1.51.160.1: #i70872# Added VCLEVENT_TOOLBOX_BUTTONCHANGED to notify accessibility implementation that an action happens to a toolbox button
commit 3f1afd178875babe7ab79d22ab260221665bfb3f
Author: Ivo Hinkelmann <ihi@openoffice.org>
Date: Tue Feb 5 11:29:57 2008 +0000
INTEGRATION: CWS fwk83_SRC680 (1.2.262); FILE MERGED
2008/01/14 14:35:26 cd 1.2.262.1: #i70872# Added VCLEVENT_TOOLBOX_BUTTONCHANGED to notify accessibility implementation that an action happens to a toolbox button
to ensure that an a11y object is created for toolbar
buttons whose state changes, so that the corresponding
a11y events are forwarded to the platform layer, see
the referenced OOo bug #i70872# [1] for more details.
This seems to be no longer necessary.
By now, at least the scenario of toggling the
bold/italics/underline status of text is
announced just fine by Orca 46.1-1 on Debian
testing with this change in place.
(FWIW, tdf#123864 and the corresponding commits are more
recent tickets/commits related to the topic.)
Like for the above-mentioned change,
dropping that handling addresses another case where the
work window/root pane's a11y object when walking up
the a11y hierarchy would be problematic, as it doesn't
take into account the GtkWidget hierarchy.
Sample backtrace of how the "problematic" a11y object
was created (frame 1 below is the one where the a11y object
with role root pane is created.)
1 atk_object_wrapper_new atkwrapper.cxx 983 0x7f620365672b
2 atk_object_wrapper_ref atkwrapper.cxx 948 0x7f62036560a0
3 atk_object_wrapper_new atkwrapper.cxx 1000 0x7f6203656952
4 atk_object_wrapper_ref atkwrapper.cxx 948 0x7f62036560a0
5 atk_object_wrapper_new atkwrapper.cxx 1000 0x7f6203656952
6 atk_object_wrapper_ref atkwrapper.cxx 948 0x7f62036560a0
7 atk_object_wrapper_new atkwrapper.cxx 1000 0x7f6203656952
8 atk_object_wrapper_ref atkwrapper.cxx 948 0x7f62036560a0
9 create_wrapper_for_child atkutil.cxx 359 0x7f620364c740
10 handle_toolbox_buttonchange atkutil.cxx 376 0x7f620364c1ef
11 WindowEventHandler atkutil.cxx 438 0x7f620364bd7f
12 Link<VclSimpleEvent&, void>::Call link.hxx 111 0x7f620dfd4ef8
13 VclEventListeners::Call vclevent.cxx 46 0x7f620dfd3f1a
14 Application::ImplCallEventListeners svapp.cxx 725 0x7f620df96b0d
15 vcl::Window::CallEventListeners event.cxx 225 0x7f620d59f6ee
16 ToolBox::SetItemState toolbox2.cxx 1197 0x7f620d6afd81
17 ToolBox::CheckItem toolbox.hxx 515 0x7f6214502c53
18 (anonymous namespace)::PopupMenuToolbarController::statusChanged popuptoolbarcontroller.cxx 180 0x7f621454205d
19 (anonymous namespace)::GenericPopupToolbarController::statusChanged popuptoolbarcontroller.cxx 373 0x7f6214540855
20 SfxDispatchController_Impl::addStatusListener unoctitm.cxx 797 0x7f6213090e95
21 SfxOfficeDispatch::addStatusListener unoctitm.cxx 279 0x7f6213090ade
22 svt::ToolboxController::bindListener toolboxcontroller.cxx 558 0x7f620fe9fbce
23 svt::ToolboxController::update toolboxcontroller.cxx 235 0x7f620fe9f207
24 framework::ToolBarManager::UpdateControllers toolbarmanager.cxx 726 0x7f62145b0f25
25 framework::ToolBarManager::AsyncUpdateControllersHdl toolbarmanager.cxx 2291 0x7f62145bdbfc
26 framework::ToolBarManager::LinkStubAsyncUpdateControllersHdl toolbarmanager.cxx 2278 0x7f62145aff9d
27 Link<Timer *, void>::Call link.hxx 111 0x7f620dfbc618
28 Timer::Invoke timer.cxx 75 0x7f620dfbc46c
29 Scheduler::CallbackTaskScheduling scheduler.cxx 509 0x7f620df5fa08
30 SalTimer::CallCallback saltimer.hxx 54 0x7f620368b566
31 sal_gtk_timeout_dispatch gtkdata.cxx 733 0x7f620368a573
32 ?? 0x7f62097110d9
33 ?? 0x7f6209714317
34 g_main_context_iteration 0x7f6209714930
35 GtkSalData::Yield gtkdata.cxx 405 0x7f62036888ef
36 GtkInstance::DoYield gtkinst.cxx 435 0x7f620368dd73
37 ImplYield svapp.cxx 378 0x7f620df94dfc
38 Application::Yield svapp.cxx 466 0x7f620df9470b
39 Application::Execute svapp.cxx 353 0x7f620df944a2
40 desktop::Desktop::Main app.cxx 1615 0x7f62171254fc
41 ImplSVMain svmain.cxx 229 0x7f620dfb760e
42 SVMain svmain.cxx 261 0x7f620dfb9659
43 soffice_main sofficemain.cxx 93 0x7f62171a7eb3
44 sal_main main.c 51 0x56162eceea5d
45 main main.c 49 0x56162eceea37
[1] https://bz.apache.org/ooo/show_bug.cgi?id=70872
Change-Id: I7409806071a00f32b201b08a831dc6941f072047
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167209
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Drop custom handling for VCL events `VclEventId::WindowGetFocus`
and `VclEventId::ObjectDying` in the gtk3 a11y bridge.
In my understanding, the a11y bridge should not have to
handle any of these by itself, but all relevant a11y
events should be forwarded to the a11y listener
as an appropriate `AccessibleEventObject` and be handled
by the a11y event listener instead, see
`AtkListener::notifyEvent` for the gtk3 implementation.
In a quick test with Orca, I didn't notice anything not being
announced anymore with this change in place.
If something is still not announced due to this change, a
proper fix is likely to make sure that a proper a11y event
is emitted and handled in `AtkListener::notifyEvent` instead.
Note how `VCLXAccessibleComponent::ProcessWindowEvent` already
handles the `VclEventId::WindowGetFocus` and
`VclEventId::ObjectDying` window events. This (or
a corresponding override in a subclass) and
`VclEventId::ObjectDying` are potentially good places to
start analysis if this change here results in any regressions.
Dropping this custom handling also fixes one problematic
way that an accessible object would be created for the
work window/root panel (e.g. in Writer) from the corresponding
XAccessible independent of the corresponding GTK Widget hierarchy,
thus breaking the a11y hierarchy (ascending the tree doesn't
work, see tdf#160806).
This could be observed by starting LO Writer with the gtk3 VCL
plugin first, then start Accerciser.
Printing the a11y info for the parent of the object with role
root pane as shown in Accerciser:
In [1]: acc.parent
Out[1]: <Atspi.Accessible object at 0x7f1f0f5b7780 (AtspiAccessible at 0x41f9c60)>
In [2]: acc.parent.role
Out[2]: <enum ATSPI_ROLE_FRAME of type Atspi.Role>
In [3]: acc.parent.role
Out[3]: <enum ATSPI_ROLE_FRAME of type Atspi.Role>
Selecting the object shown as the parent in Accerciser's tree
of LO's a11y hierarchy shows that this is not the same object:
In [4]: acc
Out[4]: <Atspi.Accessible object at 0x7f1f05f92100 (AtspiAccessible at 0x2d45c80)>
In [5]: acc.role
Out[5]: <enum ATSPI_ROLE_PANEL of type Atspi.Role>
and consequently, the first child of that accessible doesn't
report the accessible itself as its parent:
In [6]: acc.get_child_at_index(0).parent == acc
Out[6]: False
The commit message of
commit 252b1591d5e4e3adbf7063b56c2b578fe046ad3d
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Tue Apr 30 15:30:52 2024 +0200
tdf#159369 tdf#160806 tdf#160837 gtk3 a11y: Don't skip parents one way
has some more background information.
Extra local change in place showing where the accessible object gets
created (used for analysis with rr):
diff --git a/vcl/unx/gtk3/a11y/atkwrapper.cxx b/vcl/unx/gtk3/a11y/atkwrapper.cxx
index db0aa1dbc907..c73d28987f26 100644
--- a/vcl/unx/gtk3/a11y/atkwrapper.cxx
+++ b/vcl/unx/gtk3/a11y/atkwrapper.cxx
@@ -977,6 +977,10 @@ atk_object_wrapper_new( const css::uno::Reference< css::accessibility::XAccessib
AtkObject* atk_obj = ATK_OBJECT(pWrap);
atk_obj->role = mapToAtkRole(xContext->getAccessibleRole(), xContext->getAccessibleStateSet());
+ // NOTE: the object of interest is root pane, breaks the a11y hierarchy
+ // as it reports wrong parent
+ if (atk_obj->role == ATK_ROLE_ROOT_PANE)
+ SAL_WARN("vcl.gtk", "Creating wrapper for root pane");
atk_obj->accessible_parent = parent;
ooo_wrapper_registry_add( rxAccessible, atk_obj );
Sample backtrace of how the problematic accessible object
got created without this commit in place:
1 atk_object_wrapper_new atkwrapper.cxx 983 0x7fb5dda5ae8b
2 atk_object_wrapper_ref atkwrapper.cxx 948 0x7fb5dda5a800
3 atk_wrapper_notify_focus_change atkutil.cxx 47 0x7fb5dda4cab0
4 handle_get_focus atkutil.cxx 451 0x7fb5dda4debd
5 WindowEventHandler atkutil.cxx 512 0x7fb5dda4d9e3
6 Link<VclSimpleEvent&, void>::Call link.hxx 111 0x7fb5e81d4ef8
7 VclEventListeners::Call vclevent.cxx 46 0x7fb5e81d3f1a
8 Application::ImplCallEventListeners svapp.cxx 725 0x7fb5e8196b0d
9 vcl::Window::CallEventListeners event.cxx 225 0x7fb5e779f6ee
10 vcl::Window::PreNotify event.cxx 70 0x7fb5e779f58c
11 SystemWindow::PreNotify syswin.cxx 245 0x7fb5e788e470
12 vcl::Window::CompatPreNotify window.cxx 3941 0x7fb5e790cddd
13 ImplCallPreNotify winproc.cxx 69 0x7fb5e791d061
14 vcl::Window::ImplGrabFocus mouse.cxx 383 0x7fb5e782ffc5
15 vcl::Window::GrabFocus window.cxx 2988 0x7fb5e78fa027
16 vcl::Window::ImplAsyncFocusHdl winproc.cxx 2061 0x7fb5e7923386
17 vcl::Window::LinkStubImplAsyncFocusHdl winproc.cxx 2035 0x7fb5e792318d
18 Link<void *, void>::Call link.hxx 111 0x7fb5e792c298
19 ImplHandleUserEvent winproc.cxx 2287 0x7fb5e7927f79
20 ImplWindowFrameProc winproc.cxx 2851 0x7fb5e7924930
21 SalFrame::CallCallback salframe.hxx 312 0x7fb5e85a0310
22 SalGenericDisplay::ProcessEvent gendisp.cxx 66 0x7fb5e85cae6f
23 SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const salusereventlist.cxx 119 0x7fb5e80b49bd
24 SalUserEventList::DispatchUserEvents salusereventlist.cxx 120 0x7fb5e80b4864
25 SalGenericDisplay::DispatchInternalEvent gendisp.cxx 51 0x7fb5e85cadc5
26 call_userEventFn gtkdata.cxx 824 0x7fb5dda8e216
27 ?? 0x7fb5e47110d9
28 ?? 0x7fb5e4714317
29 g_main_context_iteration 0x7fb5e4714930
30 GtkSalData::Yield gtkdata.cxx 405 0x7fb5dda8ccef
31 GtkInstance::DoYield gtkinst.cxx 435 0x7fb5dda92173
32 ImplYield svapp.cxx 378 0x7fb5e8194dfc
33 Application::Yield svapp.cxx 466 0x7fb5e819470b
34 Application::Execute svapp.cxx 353 0x7fb5e81944a2
35 desktop::Desktop::Main app.cxx 1615 0x7fb5f13254fc
36 ImplSVMain svmain.cxx 229 0x7fb5e81b760e
37 SVMain svmain.cxx 261 0x7fb5e81b9659
38 soffice_main sofficemain.cxx 93 0x7fb5f13a7eb3
39 sal_main main.c 51 0x55b83ad6da5d
40 main main.c 49 0x55b83ad6da37
Sample backtrace for how the root pane a11y object is created for the
good case, i.e. the case where the root pane's parent is set properly
as it uses the GTK widget hierarchy (backtrace obtained from an rr run
when first starting Accerciser, then LO, with master as of
7a895ec4205659038aa95941b65715fed1a3e7be + the same local change as mentioned
above):
1 atk_object_wrapper_new atkwrapper.cxx 983 0x7f3799a5b48b
2 wrapper_factory_create_accessible atkfactory.cxx 83 0x7f3799a2c9c1
3 ooo_fixed_get_accessible atkfactory.cxx 95 0x7f3799a2c6d2
4 ?? 0x7f37993ec4c8
5 ?? 0x7f3798c536d3
6 ?? 0x7f379f9110d9
7 ?? 0x7f379f914317
8 g_main_context_iteration 0x7f379f914930
9 GtkSalData::Yield gtkdata.cxx 405 0x7f3799a8d2df
10 GtkInstance::DoYield gtkinst.cxx 435 0x7f3799a92743
11 ImplYield svapp.cxx 378 0x7f37a4194dfc
12 Application::Yield svapp.cxx 466 0x7f37a419470b
13 Application::Execute svapp.cxx 353 0x7f37a41944a2
14 desktop::Desktop::Main app.cxx 1615 0x7f37ad3254fc
15 ImplSVMain svmain.cxx 229 0x7f37a41b760e
16 SVMain svmain.cxx 261 0x7f37a41b9659
17 soffice_main sofficemain.cxx 93 0x7f37ad3a7eb3
18 sal_main main.c 51 0x560d4a1f4a5d
19 main main.c 49 0x560d4a1f4a37
Similar changes for other events will follow.
(Keeping them separate for easier bibisecting/analysis if any
of those changes causes regressions.)
Change-Id: I00e62016ced2fbb8796960671f5e58a3ceac4b29
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167208
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
`atk_focus_tracker_notify` takes care of sending an
"AtkObject:focus-event" event for the given object.
However, both, `atk_focus_tracker_notify` and the "AtkObject:focus-event"
ATK event (which triggers a "focus" AT-SPI event) are
deprecated, quoting [1]:
> Focus tracking has been dropped as a feature to be implemented by ATK
> itself. As AtkObject::focus-event was deprecated in favor of a
> AtkObject::state-change signal, in order to notify a focus change on
> your implementation, you can use atk_object_notify_state_change()
> instead.
Move the existing call to `atk_object_notify_state_change` up and
use instead of the deprecated function.
For the example of the "Print" button in
Writer's standard toolbar, it can now be
seen that a "object:state-changed:focused"
instead of a "focus" event is received with
a corresponding listener when tabbing to
the button and then further:
Before:
88.7 focus:(0, 0, 0)
source: [push button | Print]
application: [application | soffice]
88.7 object:state-changed:focused(1, 0, 0)
source: [push button | Print]
application: [application | soffice]
89.4 object:state-changed:focused(0, 0, 0)
source: [push button | Print]
application: [application | soffice]
After:
80.0 object:state-changed:focused(1, 0, 0)
source: [push button | Print]
application: [application | soffice]
80.0 object:state-changed:focused(1, 0, 0)
source: [push button | Print]
application: [application | soffice]
80.8 object:state-changed:focused(0, 0, 0)
source: [push button | Print]
application: [application | soffice]
The first event is the one emitted fromt this place,
the others are from elsewhere.
This also already shows that duplicate events are
sent. Eliminating those which also cause
other problems is planned in upcoming steps.
[1] https://docs.gtk.org/atk/func.focus_tracker_notify.html
Change-Id: Ieb9d25445b620681b01b887c0c120c80a43379ef
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167207
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Don't use and idle to call the (deprecated) ATK focus tracker,
but do so right away.
Since this is no longer called in an idle, the SolarMutexGuard
should also no longer be needed, so drop it.
It's not clear why the focus event was handled in an
idle ever since
commit 3b5c378706e465f59d78f95fddc5eff9e1a8fe19
Author: Rüdiger Timm <rt@openoffice.org>
Date: Fri May 5 09:58:25 2006 +0000
INTEGRATION: CWS atkbridge (1.1.2); FILE ADDED
2006/04/27 14:47:54 obr 1.1.2.17: #134576# move focus clearing code to atkwindow.cxx
2006/04/27 08:18:11 obr 1.1.2.16: #134571# toolbox items are no VCL windows
2006/03/31 12:19:40 obr 1.1.2.15: #i63583# eliminated warnings
2006/03/03 11:07:09 obr 1.1.2.14: #i47890# fixed a crash when event source does not implement XAccessibleContext
2006/03/01 11:04:11 obr 1.1.2.13: #i47890# recursivly attach listeners to windows of type TREELISTBOX
2006/02/16 11:07:11 obr 1.1.2.12: #i47890# ORoadmapIDHyperLabel is derived from FixedText
2006/02/15 12:42:56 obr 1.1.2.11: #i47890# simulate focus events for page tabs
2006/02/07 09:26:21 obr 1.1.2.10: #i47890# reduce amount of focus notifications
2006/01/12 13:56:14 obr 1.1.2.9: #i47890# Solaris compile fixes
2006/01/05 14:06:32 obr 1.1.2.8: #i47890# override toolkit name and version and reworked bridge initialization
2005/11/16 15:57:57 obr 1.1.2.7: fixed for menu state ARMED only valid during notification
2005/10/24 07:36:05 obr 1.1.2.6: #i47890# reset focused object on WINDOW_DEACTIVATE
2005/10/20 11:57:32 obr 1.1.2.5: #i47890# initially set name and description + disabled some tracing
2005/10/20 07:09:12 obr 1.1.2.4: #i47890# made cxx files standalone, avoid queryInterface on each API call and demacrofied try/catch to include appropriate warnings
2005/09/28 07:24:13 obr 1.1.2.3: #i47890# changed ref-counting/life cycle once again, adjust tree and role of dialogs and filter sub-menu windows
2005/09/26 11:01:01 obr 1.1.2.2: #i47890# reworked lifecycle of atk wrapper objects
2005/06/14 13:57:24 obr 1.1.2.1: #i47890# global focus event listening stuff
With this in place, watching for "object:focus" events in
Accerciser still shows such an event when e.g. tabbing
through the standard toolbar in Writer. Example for when
the "Save" button receives focus:
37.9 focus:(0, 0, 0)
source: [push button | Save]
application: [application | soffice]
This is one step to port from the use of that deprecated
focus tracker and clean up a11y event handling in the gtk3 VCL plugin.
(Take one step at a time to keep the scope of the changes clearer
and simplify identifying causes of any potential regressions.)
(`git show --ignore-space-change` helps to see the
"actual change" more clearly).
Change-Id: Ia71b70bdf5d9db8fbb389f3c7366af48ee723af7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167206
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
otherwise we might hit the assert inside the UIObjectUnoObj
constructor
Change-Id: I546964c0ec21bf4f874825dfd7dc11fc99ace502
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167099
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
after
commit defc7a92064832423242635d48a7db4440a0b347
Author: Noel Grandin <noel.grandin@collabora.co.uk>
Date: Fri May 3 09:20:04 2024 +0200
replace createFromAscii with OUString literals in vcl::pdf::BuildinFont
my local version of Visual Studio seems to have better support
for constinit than the jenkins one.
Change-Id: If6aec53e8280c5afbd27bf53b7ac0cd1a5e742b0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167185
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Ia5bf95a5474363e745517edce96a123764dcab73
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167151
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
|
|
Change-Id: I38a5f6550e57875cea3d667a650e165b9d606fbe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167131
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
|
|
…by a simple/static $(gb_CustomTarget_workdir)/foo
The build system has a lot of overly complicated leftovers from when it
was introduced and had not only deal with split repositories but also
had to coexist with another buildsystem. Along with lots of copy'n'paste
along the years the makefiles became hard to grasp for newcomers with
all our calls and evals.
As a first step to streamline that, the macros from TargetLocations that
simply prefix a static path to the argument (and similar of the same
kind) are a natural pick before simplifying the rules themselves/getting
rid of a bunch of eval statements.
Change-Id: Ia06dbbcd5d1994755a2ff05b84f72ccbc4e3cab5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167005
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
|
|
Change-Id: I9b2b86c26e08221c57735c6eda88727aa8a46b5f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167021
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
|