Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hOCR PDF export: prevent users from overwriting any input image PDF file #243

Closed
SantosSi opened this issue Nov 21, 2017 · 9 comments
Closed
Milestone

Comments

@SantosSi
Copy link
Contributor

No description provided.

@manisandro manisandro added this to the 3.3.0 milestone Nov 25, 2017
@SantosSi
Copy link
Contributor Author

With the latest QT5 master the following crash dump is put out:
gImageReader 3.2.3 (4a53493)

#0 0x00007fc85501192b in ppoll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fc8562a60d1 in qt_safe_poll(pollfd*, unsigned long, timespec const*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2 0x00007fc8561d8bb8 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3 0x00007fc8561ce8fb in QProcess::waitForFinished(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4 0x000055942f837a1b in MainWindow::signalHandler(int) ()
#5
#6 0x00007fc858d01977 in Poppler::Page::renderToImage(double, double, int, int, int, int, Poppler::Page::Rotation) const () from /usr/lib/x86_64-linux-gnu/libpoppler-qt5.so.1
#7 0x000055942f826b73 in PDFRenderer::render(int, double) const ()
#8 0x000055942f82944c in Displayer::renderImage() ()
#9 0x000055942f828cf7 in Displayer::setup(int const*, int const*, double const*) ()
#10 0x000055942f87d2eb in HOCRPdfExporter::run() ()
#11 0x000055942f88bbba in OutputEditorHOCR::savePDF() ()
#12 0x000055942f89cad4 in OutputEditorHOCR::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
#13 0x00007fc856280865 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007fc856fc5d82 in QAction::triggered(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007fc856fc846c in QAction::activate(QAction::ActionEvent) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007fc857189aeb in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007fc857189d44 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#18 0x00007fc85716907a in QToolButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007fc85700cdb8 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007fc857169114 in QToolButton::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007fc856fcc46c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007fc856fd428f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007fc856251d68 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x00007fc856fd3262 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&, bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007fc85702793b in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007fc857029faa in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007fc856fcc46c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007fc856fd3d34 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007fc856251d68 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#30 0x00007fc856810f43 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#31 0x00007fc856812a25 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#32 0x00007fc8567eacab in QWindowSystemInterface::sendWindowSystemEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#33 0x00007fc84a5d35a0 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#34 0x00007fc851abbf67 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#35 0x00007fc851abc1a0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#36 0x00007fc851abc22c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#37 0x00007fc8562aa3ff in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#38 0x00007fc85624fdba in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#39 0x00007fc856258d24 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#40 0x000055942f891951 in main ()

Thread 11 (Thread 0x7fc817955700 (LWP 12280)):
#0 0x00007fc85501183d in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fc83cc2c6b1 in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#2 0x00007fc83cc1e070 in pa_mainloop_poll () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#3 0x00007fc83cc1e700 in pa_mainloop_iterate () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#4 0x00007fc83cc1e790 in pa_mainloop_run () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#5 0x00007fc83cc2c5f9 in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#6 0x00007fc83bf56c58 in ?? () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-11.1.so
#7 0x00007fc8552d9517 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#8 0x00007fc85501b82f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 10 (Thread 0x7fc818156700 (LWP 12278)):
#0 0x00007fc8552dfb26 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1 0x00007fc8560756cb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2 0x000055942f82b30c in Displayer::scaleThread() ()
#3 0x000055942f830f37 in void std::__invoke_impl<void, void (Displayer::&)(), Displayer&>(std::__invoke_memfun_deref, void (Displayer::&)(), Displayer&) ()
#4 0x000055942f830cfd in std::__invoke_result<void (Displayer::&)(), Displayer&>::type std::__invoke<void (Displayer::&)(), Displayer&>(void (Displayer::&)(), Displayer&) ()
#5 0x000055942f830976 in void std::_Bind<void (Displayer::(Displayer))()>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) ()
#6 0x000055942f82fcd8 in void std::_Bind<void (Displayer::(Displayer))()>::operator()<, void>() ()
#7 0x000055942f82e56e in std::_Function_handler<void (), std::_Bind<void (Displayer::(Displayer))()> >::_M_invoke(std::_Any_data const&) ()
#8 0x000055942f82d334 in std::function<void ()>::operator()() const ()
#9 0x000055942f82cff0 in Displayer::ScaleThread::run() ()
#10 0x00007fc85607429d in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#11 0x00007fc8552d9517 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#12 0x00007fc85501b82f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 9 (Thread 0x7fc82a251700 (LWP 12275)):
#0 0x00007fc85501183d in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fc8142a3fba in ?? () from /usr/lib/x86_64-linux-gnu/libavahi-common.so.3
#2 0x00007fc8142a3b61 in avahi_simple_poll_run () from /usr/lib/x86_64-linux-gnu/libavahi-common.so.3
#3 0x00007fc8142a3d38 in avahi_simple_poll_iterate () from /usr/lib/x86_64-linux-gnu/libavahi-common.so.3
#4 0x00007fc8142a3f53 in avahi_simple_poll_loop () from /usr/lib/x86_64-linux-gnu/libavahi-common.so.3
#5 0x00007fc8142a4017 in ?? () from /usr/lib/x86_64-linux-gnu/libavahi-common.so.3
#6 0x00007fc8552d9517 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#7 0x00007fc85501b82f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 8 (Thread 0x7fc818957700 (LWP 12272)):
#0 0x00007fc8552dfb26 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1 0x00007fc822ce623b in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#2 0x00007fc822ce6157 in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#3 0x00007fc8552d9517 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#4 0x00007fc85501b82f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 7 (Thread 0x7fc821483700 (LWP 12271)):
#0 0x00007fc8552dfb26 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1 0x00007fc822ce623b in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#2 0x00007fc822ce6157 in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#3 0x00007fc8552d9517 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#4 0x00007fc85501b82f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 6 (Thread 0x7fc829a50700 (LWP 12270)):
#0 0x00007fc85501183d in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fc851abc119 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007fc851abc22c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007fc8562aa3ff in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4 0x00007fc85624fdba in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5 0x00007fc85606f3ca in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6 0x00007fc85607429d in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7 0x00007fc8552d9517 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#8 0x00007fc85501b82f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 5 (Thread 0x7fc831551700 (LWP 12268)):
#0 0x00007fc85501183d in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fc831561baf in ?? () from /lib/x86_64-linux-gnu/libusb-1.0.so.0
#2 0x00007fc8552d9517 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#3 0x00007fc85501b82f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 4 (Thread 0x7fc83217f700 (LWP 12267)):
#0 0x00007fc8552dfb26 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1 0x00007fc8560756cb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2 0x000055942f897222 in Utils::AsyncQueueScannerSane::Request::dequeue() ()
#3 0x000055942f891e5e in ScannerSane::run() ()
#4 0x000055942f89ce53 in ScannerSane::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
#5 0x00007fc856280865 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6 0x00007fc85606e127 in QThread::started(QThread::QPrivateSignal) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7 0x00007fc856074284 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8 0x00007fc8552d9517 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#9 0x00007fc85501b82f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 3 (Thread 0x7fc839410700 (LWP 12266)):
#0 0x00007fc85501183d in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fc851abc119 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007fc851abc22c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007fc8562aa3ff in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4 0x00007fc85624fdba in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5 0x00007fc85606f3ca in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6 0x00007fc857b7ce45 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#7 0x00007fc85607429d in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8 0x00007fc8552d9517 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#9 0x00007fc85501b82f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 2 (Thread 0x7fc847c47700 (LWP 12265)):
#0 0x00007fc85501183d in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fc84bf42150 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2 0x00007fc84bf43ee9 in xcb_wait_for_event () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3 0x00007fc84a570f09 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#4 0x00007fc85607429d in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5 0x00007fc8552d9517 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#6 0x00007fc85501b82f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 1 (Thread 0x7fc859acb540 (LWP 12264)):
#0 0x00007fc85501192b in ppoll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fc8562a60d1 in qt_safe_poll(pollfd*, unsigned long, timespec const*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2 0x00007fc8561d8bb8 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3 0x00007fc8561ce8fb in QProcess::waitForFinished(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4 0x000055942f837a1b in MainWindow::signalHandler(int) ()
#5
#6 0x00007fc858d01977 in Poppler::Page::renderToImage(double, double, int, int, int, int, Poppler::Page::Rotation) const () from /usr/lib/x86_64-linux-gnu/libpoppler-qt5.so.1
#7 0x000055942f826b73 in PDFRenderer::render(int, double) const ()
#8 0x000055942f82944c in Displayer::renderImage() ()
#9 0x000055942f828cf7 in Displayer::setup(int const*, int const*, double const*) ()
#10 0x000055942f87d2eb in HOCRPdfExporter::run() ()
#11 0x000055942f88bbba in OutputEditorHOCR::savePDF() ()
#12 0x000055942f89cad4 in OutputEditorHOCR::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
#13 0x00007fc856280865 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007fc856fc5d82 in QAction::triggered(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007fc856fc846c in QAction::activate(QAction::ActionEvent) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007fc857189aeb in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007fc857189d44 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#18 0x00007fc85716907a in QToolButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007fc85700cdb8 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007fc857169114 in QToolButton::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007fc856fcc46c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007fc856fd428f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007fc856251d68 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x00007fc856fd3262 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&, bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007fc85702793b in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007fc857029faa in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007fc856fcc46c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007fc856fd3d34 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007fc856251d68 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#30 0x00007fc856810f43 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#31 0x00007fc856812a25 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#32 0x00007fc8567eacab in QWindowSystemInterface::sendWindowSystemEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#33 0x00007fc84a5d35a0 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#34 0x00007fc851abbf67 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#35 0x00007fc851abc1a0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#36 0x00007fc851abc22c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#37 0x00007fc8562aa3ff in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#38 0x00007fc85624fdba in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#39 0x00007fc856258d24 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#40 0x000055942f891951 in main ()

@manisandro
Copy link
Owner

This isn't really related to this ticket, please file a new issue (or you can also send it per PM). Please also describe what you were doing and whether it is reproducible.

@SantosSi
Copy link
Contributor Author

The crash report was the result when I tried what I described in the title: I tried to overwrite the original PDF = the input image with the PDF output of the hOCR.

@manisandro
Copy link
Owner

Ahhh, ok all good then sorry. I though you were testing the feature (which I haven't even implemented yet).

@SantosSi
Copy link
Contributor Author

Test update before implementation: Overwrote the second input PDF file. The newest Qt5 master from today does not crash, but complains about a defect PDF file, obviously when the export tries to access that file for input.

@manisandro
Copy link
Owner

It is probably pretty random whether it crashes or not, depends in which instant the file is being accessed.

@manisandro
Copy link
Owner

Implemented for Qt.

@SantosSi
Copy link
Contributor Author

SantosSi commented Dec 3, 2017

Tested in Qt5 version: OK.

@manisandro
Copy link
Owner

Done also fro gtk.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants