Giter Club home page Giter Club logo

libfm-qt's Introduction

libfm-qt

Overview

libfm-qt is the Qt port of libfm, a library that provides components for building desktop file managers, belonging to LXDE.

libfm-qt is licensed under the terms of the LGPLv2.1 or any later version. See file LICENSE for its full text.

fm-qt-config.cmake.in is licensed under the terms of the BSD-3-Clause

Installation

Compiling source code

Runtime dependencies are Qt X11 Extras (although libfm-qt works under Wayland too) and menu-cache (not all libfm features are provided by libfm-qt yet).
Additional build dependencies are CMake, lxqt-build-tools,lxqt-menu-data and, optionally, Git for pulling latest VCS checkouts.

Code configuration is handled by CMake. CMake variable CMAKE_INSTALL_PREFIX has to be set to /usr on most operating systems. Depending on the way library paths are dealt with on 64bit systems, variables like CMAKE_INSTALL_LIBDIR may have to be set as well.

To build run make, to install make install, which accepts variable DESTDIR as usual.

Binary packages

Official binary packages are provided by all major Linux and BSD distributions. Just use your package manager to search for string libfm-qt

Development

Issues should go to the tracker of PCManFM-Qt at https://github.com/lxqt/pcmanfm-qt/issues.

Translation

Translations can be done in LXQt-Weblate

Translation status

libfm-qt's People

Contributors

agaida avatar attuska avatar damianatorrpm avatar dglent avatar eltonfabricio10 avatar fat-zer avatar helixbot avatar ilya87 avatar jleclanche avatar luis-pereira avatar lxqtbot avatar mbouzada avatar micrococo avatar npmiller avatar oliverburkardt avatar p-bo avatar palinek avatar pcman avatar philippwiesemann avatar pjotr123 avatar rbuj avatar scootergrisen avatar smarquespt avatar stefonarch avatar tsujan avatar ufleisch avatar vc-01 avatar welaq avatar yarons avatar zoli111 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libfm-qt's Issues

[Qt 5.11] PCManFM-Qt Segfaults in 'libfm-qt'

This may well be more in PCManFM-Qt, rather than libfm-qt, but since the segfault happens in libfm-qt, I decided to file this here.

Expected Behavior

No segmentation faults occur.

Current Behavior

When copying something such as text or a file in an application, such as Konsole or the PCManFM-Qt file manager, the pcmanfm-qt process crashes with a segmentation fault in 'folderview.h' (another crash occurs when said application is terminated):

#0  Fm::FolderView::folder (this=0x55df7fa75800)
    at libfm-qt-9999/src/folderview.h:87
#1  Fm::FolderView::onClipboardDataChange (this=0x55df7fa75800)
    at libfm-qt-9999/src/folderview.cpp:1350
#2  0x00007f7d941705c2 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>,
  void, void (Fm::FolderView::*)()>::call(void (Fm::FolderView::*)(), Fm::FolderView*, void**)
  (arg=<optimized out>, o=<optimized out>, f=<optimized out>)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:134
#3  QtPrivate::FunctionPointer<void (Fm::FolderView::*)()>::call<QtPrivate::List<>,
  void>(void (Fm::FolderView::*)(), Fm::FolderView*, void**) (arg=<optimized out>,
  o=<optimized out>, f=<optimized out>)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:167
#4  QtPrivate::QSlotObject<void (Fm::FolderView::*)(), QtPrivate::List<>, void>::impl(int,
  QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=<optimized out>,
  this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:396
#5  0x00007f7d92b6d57a in QtPrivate::QSlotObjectBase::call (a=0x7ffc1e4a08d0, r=0x55df7fa75800,
  this=0x55df7fa983a0)
    at qtcore-5.11.9999/src/corelib/kernel/qobjectdefs_impl.h:376
#6  QMetaObject::activate (sender=sender@entry=0x55df7fb300c0, signalOffset=<optimized out>, 
    local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x0)
    at qtcore-5.11.9999/src/corelib/kernel/qobject.cpp:3754
#7  0x00007f7d92b6da26 in QMetaObject::activate (sender=0x55df7fb300c0,
  m=m@entry=0x7f7d9364f4e0 <QClipboard::staticMetaObject>,
  local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x0)
    at qtcore-5.11.9999/src/corelib/kernel/qobject.cpp:3633
#8  0x00007f7d93380ee6 in QClipboard::dataChanged (this=<optimized out>)
    at .moc/moc_qclipboard.cpp:181
#9  0x00007f7d930aab3d in QClipboard::emitChanged (this=0x55df7fb300c0,
  mode=mode@entry=QClipboard::Clipboard)
    at qtgui-5.11.9999/src/gui/kernel/qclipboard.cpp:595
#10 0x00007f7d93090981 in QPlatformClipboard::emitChanged (this=this@entry=0x7f7d80007010, 
mode=mode@entry=QClipboard::Clipboard)
    at qtgui-5.11.9999/src/gui/kernel/qplatformclipboard.cpp:125
Possible Solution

This starts happening with the following commits:

aa7d86e
lxqt/pcmanfm-qt@9458ba4

Steps to Reproduce (for bugs)
  1. Run LXQt at current git master (or at least with the aforementioned changes), with Qt 5.11 (tested as far back as beta3, which did not seem to make a difference yet, but on another machine, probably not surprisingly, did not see this with Qt 5.9.5).
  2. Launch a terminal emulator, such as Konsole.
  3. Copy text from said terminal emulator.

Alternatively:

  1. Same as before.
  2. Launch the PCManFM-Qt file manager.
  3. Copy a file by some means, such as using the right-click context-menu.
Context

Since I haven't used PCManFM-Qt for file managing in recent times due to issue 164 [1], I only noticed this due to the background image of mine disappearing, and returning while the 'pcmanfm-qt' process segfaults and restarts.

  1. #164
System Information

save dialog should change filename extension when different File Type is selected

Save dialogs have a File Type drop down and programs like Falkon have several default features. Upon being opened initially, one of them is selected and the appropriate extension given to the default filename. However, when changing the File Type, the extension in the filename does not change accordingly.

Expected Behavior

When selecting a different File Type, the filename updates with the appropriate extension.

Current Behavior

When selecting a different File Type, the filename does not update.

Possible Solution

I'm not suggesting that somehow we overwrite or modify the defaults or the options available in the File Types, but that where an application provides more than one option, selecting a different File Type will result in a change to the file name extension.

Steps to Reproduce (for bugs)
  1. Right click on page in Falkon
  2. Click Save As
  3. Note File Type is MIME Type Archive (*.mhtml) and extension of file name is .mhtml
  4. Change File Type to HTML page, single (*.html)
Context

See #421 for other improvements to the save dialog that led to this idea.

System Information
  • Distribution & Version: Lubuntu 19.10
  • Kernel: 5.0.0-13-generic
  • Qt Version: 5.12.2
  • libqtxdg Version: 3.3.1-0ubuntu2
  • lxqt-build-tools Version: 0.6.0-2ubuntu1
  • Package version: 0.14.1-0ubuntu2

Fm::FilePath::fromUri crashes

running all kind of Uri is successfull, inlcluding google drive sub-directories but crashes
on google-drive://[email protected]/ (the root of the drive) see example below
***affects src/tests/folderview

Steps to Reproduce (for bugs)
  1. Have a google drive account and mount it (gvfsd-google)
   //same result //auto test2 = Fm::FilePath::fromLocalPath("/run/user/1000/gvfs/google-drive:host=gmail.com,user=YourAccount/"); 
    auto test = Fm::FilePath::fromUri("google-drive://[email protected]/");
    auto folder = Fm::Folder::fromPath(test);

    for(auto& item: folder->files()) {
        qDebug() << item->displayName();
    }
  1. Crash in Fm::FileInfo::setFromGFileInfo fileinfo.cpp line 31

Reproducible: always

  • Distribution & Version: Fedora 27
  • Kernel: 4.11
  • Qt Version: 5.9.2
  • lxqt-build-tools Version: n/a
  • libqtxdg Version: n/a

Support for template subdirectories

Some file managers have support for subfolders inside template directories, which allow better organization of template files. I think the same should be implemented here.

Tip of master is FTBFS with Qt 5.9

Lubuntu has a CI which builds packages for Bionic, Cosmic, and Disco. Bionic currently has Qt 5.9, and its build is FTBFS. LXQt supports Qt 5.7 and on, so unless we want to bump that requirement, this is an issue. Cosmic is 5.11 and Disco is 5.12, and those build fine.

Full log:

[ 54%] Building CXX object src/CMakeFiles/fm-qt.dir/proxyfoldermodel.cpp.o
cd "/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/obj-x86_64-linux-gnu/src" && /usr/bin/c++  -DGETTEXT_PACKAGE=\"\" -DLIBFM_QT_DATA_DIR=\"/usr/share/libfm-qt\" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_NO_FOREACH -DQT_NO_KEYWORDS -DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -Dfm_qt_EXPORTS -I"/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/obj-x86_64-linux-gnu/src" -I"/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src" -I"/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/obj-x86_64-linux-gnu/src/fm-qt_autogen/include" -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.9.5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.9.5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.9.5 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.9.5/QtCore -I"/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/core/legacy" -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/menu-cache -I/usr/include/libexif -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -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/QtX11Extras  -g -O2 -fdebug-prefix-map=/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-exceptions -Wall -Wextra -Wchar-subscripts -Wno-long-long -Wpointer-arith -Wundef -Wformat-security -Wnon-virtual-dtor -Woverloaded-virtual -Wpedantic -O2 -g -DNDEBUG -fPIC -fvisibility=hidden -fvisibility-inlines-hidden   -fPIC -std=gnu++14 -o CMakeFiles/fm-qt.dir/proxyfoldermodel.cpp.o -c "/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/proxyfoldermodel.cpp"
/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.cpp: In member function ‘QString Fm::FolderModel::makeTooltip(Fm::FolderModelItem*) const’:
/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.cpp:223:85: error: no match for ‘operator+’ (operand types are ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ and ‘std::unique_ptr<char [], Fm::CStrDeleter>::pointer {aka char*}’)
         tip += QStringLiteral("<p><i>") + tr("Location:") + QStringLiteral("</i> ") + parent_str.get() + QStringLiteral("</p>");
                                                                                     ^
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1765:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:687,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:44,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qabstractitemmodel.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QAbstractListModel:1,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.h:25,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.cpp:21:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstringbuilder.h:374:1: note: candidate: template<class A, class B> QStringBuilder<typename QConcatenable<T>::type, typename QConcatenable<B>::type> operator+(const A&, const B&)
 operator+(const A &a, const B &b)
 ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstringbuilder.h:374:1: note:   template argument deduction/substitution failed:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstringbuilder.h: In substitution of ‘template<class A, class B> QStringBuilder<typename QConcatenable<T>::type, typename QConcatenable<B>::type> operator+(const A&, const B&) [with A = QStringBuilder<QStringBuilder<QString, QString>, QString>; B = char*]’:
/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.cpp:223:102:   required from here
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstringbuilder.h:374:1: error: no type named ‘type’ in ‘struct QConcatenable<char*>’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:1094:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qabstractitemmodel.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QAbstractListModel:1,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.h:25,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.cpp:21:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstringlist.h:231:20: note: candidate: QStringList operator+(const QList<QString>&, const QStringList&)
 inline QStringList operator+(const QList<QString> &one, const QStringList &other)
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstringlist.h:231:20: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QList<QString>&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:44:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.h:27,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.cpp:21:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:175:37: note: candidate: constexpr const QSize operator+(const QSize&, const QSize&)
 Q_DECL_CONSTEXPR inline const QSize operator+(const QSize & s1, const QSize & s2) Q_DECL_NOTHROW
                                     ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:175:37: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QSize&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:345:38: note: candidate: constexpr const QSizeF operator+(const QSizeF&, const QSizeF&)
 Q_DECL_CONSTEXPR inline const QSizeF operator+(const QSizeF & s1, const QSizeF & s2) Q_DECL_NOTHROW
                                      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:345:38: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QSizeF&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:43:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:44,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.h:27,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.cpp:21:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:153:34: note: candidate: constexpr QMargins operator+(const QMargins&, const QMargins&)
 Q_DECL_CONSTEXPR inline QMargins operator+(const QMargins &m1, const QMargins &m2) Q_DECL_NOTHROW
                                  ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:153:34: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QMargins&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:165:34: note: candidate: constexpr QMargins operator+(const QMargins&, int)
 Q_DECL_CONSTEXPR inline QMargins operator+(const QMargins &lhs, int rhs) Q_DECL_NOTHROW
                                  ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:165:34: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QMargins&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:171:34: note: candidate: constexpr QMargins operator+(int, const QMargins&)
 Q_DECL_CONSTEXPR inline QMargins operator+(int lhs, const QMargins &rhs) Q_DECL_NOTHROW
                                  ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:171:34: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘int’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:267:34: note: candidate: constexpr QMargins operator+(const QMargins&)
 Q_DECL_CONSTEXPR inline QMargins operator+(const QMargins &margins) Q_DECL_NOTHROW
                                  ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:267:34: note:   candidate expects 1 argument, 2 provided
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:385:35: note: candidate: constexpr QMarginsF operator+(const QMarginsF&, const QMarginsF&)
 Q_DECL_CONSTEXPR inline QMarginsF operator+(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW
                                   ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:385:35: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QMarginsF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:397:35: note: candidate: constexpr QMarginsF operator+(const QMarginsF&, qreal)
 Q_DECL_CONSTEXPR inline QMarginsF operator+(const QMarginsF &lhs, qreal rhs) Q_DECL_NOTHROW
                                   ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:397:35: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QMarginsF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:403:35: note: candidate: constexpr QMarginsF operator+(qreal, const QMarginsF&)
 Q_DECL_CONSTEXPR inline QMarginsF operator+(qreal lhs, const QMarginsF &rhs) Q_DECL_NOTHROW
                                   ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:403:35: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘qreal {aka double}’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:471:35: note: candidate: constexpr QMarginsF operator+(const QMarginsF&)
 Q_DECL_CONSTEXPR inline QMarginsF operator+(const QMarginsF &margins) Q_DECL_NOTHROW
                                   ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:471:35: note:   candidate expects 1 argument, 2 provided
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:45:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:44,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.h:27,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.cpp:21:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:169:38: note: candidate: constexpr const QPoint operator+(const QPoint&, const QPoint&)
 Q_DECL_CONSTEXPR inline const QPoint operator+(const QPoint &p1, const QPoint &p2)
                                      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:169:38: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QPoint&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:193:38: note: candidate: constexpr const QPoint operator+(const QPoint&)
 Q_DECL_CONSTEXPR inline const QPoint operator+(const QPoint &p)
                                      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:193:38: note:   candidate expects 1 argument, 2 provided
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:358:39: note: candidate: constexpr const QPointF operator+(const QPointF&, const QPointF&)
 Q_DECL_CONSTEXPR inline const QPointF operator+(const QPointF &p1, const QPointF &p2)
                                       ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:358:39: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QPointF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:378:39: note: candidate: constexpr const QPointF operator+(const QPointF&)
 Q_DECL_CONSTEXPR inline const QPointF operator+(const QPointF &p)
                                       ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:378:39: note:   candidate expects 1 argument, 2 provided
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:45:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:44,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.h:27,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.cpp:21:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:464:31: note: candidate: constexpr QRect operator+(const QRect&, const QMargins&)
 Q_DECL_CONSTEXPR inline QRect operator+(const QRect &rectangle, const QMargins &margins) Q_DECL_NOTHROW
                               ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:464:31: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QRect&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:470:31: note: candidate: constexpr QRect operator+(const QMargins&, const QRect&)
 Q_DECL_CONSTEXPR inline QRect operator+(const QMargins &margins, const QRect &rectangle) Q_DECL_NOTHROW
                               ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:470:31: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QMargins&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:876:32: note: candidate: constexpr QRectF operator+(const QRectF&, const QMarginsF&)
 Q_DECL_CONSTEXPR inline QRectF operator+(const QRectF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:876:32: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QRectF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:882:32: note: candidate: constexpr QRectF operator+(const QMarginsF&, const QRectF&)
 Q_DECL_CONSTEXPR inline QRectF operator+(const QMarginsF &lhs, const QRectF &rhs) Q_DECL_NOTHROW
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:882:32: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QMarginsF&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qimage.h:48:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:49,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.h:27,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.cpp:21:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qtransform.h:404:19: note: candidate: QTransform operator+(const QTransform&, qreal)
 inline QTransform operator +(const QTransform &a, qreal n)
                   ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qtransform.h:404:19: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QTransform&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:56:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QList:1,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.h:29,
                 from /<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/src/foldermodel.cpp:21:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:221:41: note: candidate: constexpr const QVector2D operator+(const QVector2D&, const QVector2D&)
 Q_DECL_CONSTEXPR inline const QVector2D operator+(const QVector2D &v1, const QVector2D &v2)
                                         ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:221:41: note:   no known conversion for argument 1 from ‘QStringBuilder<QStringBuilder<QString, QString>, QString>’ to ‘const QVector2D&’
src/CMakeFiles/fm-qt.dir/build.make:1157: recipe for target 'src/CMakeFiles/fm-qt.dir/foldermodel.cpp.o' failed
make[3]: *** [src/CMakeFiles/fm-qt.dir/foldermodel.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/obj-x86_64-linux-gnu'
CMakeFiles/Makefile2:180: recipe for target 'src/CMakeFiles/fm-qt.dir/all' failed
make[2]: *** [src/CMakeFiles/fm-qt.dir/all] Error 2
make[2]: Leaving directory '/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/obj-x86_64-linux-gnu'
Makefile:132: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/<<BUILDDIR>>/libfm-qt-0.14.1+git201904131258~bionic/obj-x86_64-linux-gnu'
dh_auto_build: cd obj-x86_64-linux-gnu && make -j4 "INSTALL=install --strip-program=true" returned exit code 2

CMake Error at src/CMakeLists.txt:179 (file): File name too long

Tried to build on ubuntu 17.04.

kuh3h3@reandro:~/libfm-qt$ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE=Release .
-- The C compiler identification is Clang 6.0.0
-- The CXX compiler identification is Clang 6.0.0
-- Check for working C compiler: /usr/local/bin/clang
-- Check for working C compiler: /usr/local/bin/clang -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/local/bin/clang++
-- Check for working CXX compiler: /usr/local/bin/clang++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Fm: /usr/lib/x86_64-linux-gnu/libfm.so;/usr/lib/x86_64-linux-gnu/libgthread-2.0.so;/usr/lib/x86_64-linux-gnu/libgio-2.0.so;/usr/lib/x86_64-linux-gnu/libgobject-2.0.so;/usr/lib/x86_64-linux-gnu/libglib-2.0.so (found suitable version "1.2.5", minimum required is "1.2.0")
-- Found MenuCache: /usr/lib/x86_64-linux-gnu/libmenu-cache.so;/usr/lib/x86_64-linux-gnu/libglib-2.0.so (found suitable version "1.0.2", minimum required is "0.4.0")
-- Found Exif: /usr/lib/x86_64-linux-gnu/libexif.so (found version "0.6.21")
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Found XCB: /usr/lib/x86_64-linux-gnu/libxcb.so
-- Building libfm-qt with Qt 5.7.1
-- Performing Test COMPILER_SUPPORTS_CXX11
-- Performing Test COMPILER_SUPPORTS_CXX11 - Success
-- Performing Test COMPILER_SUPPORTS_CXX0X
-- Performing Test COMPILER_SUPPORTS_CXX0X - Success
-- Found Git: /usr/bin/git (found version "2.15.1.389.g52015aaf9")
-- Pulling the translations...
https://github.com/lxde/lxqt-l10n URL에서

  • branch master -> FETCH_HEAD
    이미 업데이트 상태입니다.
    -- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
    -- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
    -- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
    -- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
    -- Performing Test COMPILER_HAS_DEPRECATED_ATTR
    -- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
    CMake Error at src/CMakeLists.txt:179 (file):
    file COPY cannot make directory
    "/home/kuh3h3/libfm-qt/src/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/CMakeFiles/include/libfm-qt/translations/.git/logs/refs/remotes/origin":
    File name too long

-- Configuring incomplete, errors occurred!
See also "/home/kuh3h3/libfm-qt/CMakeFiles/CMakeOutput.log".

libfm-qt, GLib and xterm

libfm-qt is based on GLib and GLib uses a hard-coded list of terminal emulators to open apps inside terminal with desktop files that have Terminal=true. On that list, gnome-terminal is on the top and xterm is the fallback.

xterm is installed by default in some distros (Manjaro included), so that their users don't have any problem with such desktop files inside pcmanfm-qt. xterm can also be recommended by LXQt.

However, the ideal solution would be adding a workaround to libfm-qt or pcmanfm-qt, so that the same terminal emulator that's opened with F4 is also used in such cases.

missing licence header of test cases

The tests in sub-directory test/ are missing licence headers.
It would be best practice to explicitly add them.

EDIT:
something is missing - bug report number 404

Compiling error

I've managed to run both 'configure' and 'cmake' with no errors, but when I try to compile via 'make' I receive the following error:

[ 49%] Building CXX object src/CMakeFiles/fm-qt.dir/libfmqt.cpp.o
libfm-qt/src/libfmqt.cpp: In constructor ‘Fm::LibFmQtData::LibFmQtData()’:
libfm-qt/src/libfmqt.cpp:62:112: error: ‘g_vfs_register_uri_scheme’ was not declared in this scope

[compiling] 0.14.0 libfm-qt.pc is not generated correctly in Fedora

Context

I am packaging lxqt 0.14.0 into Fedora.
After libfm-qt 0.14.0 packaged, the libfm-qt.pc contains invalid line

System Information
Expected Behavior

The /usr/lib64/pkgconfig/libfm-qt.pc should be something like

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: libfm-qt
Description: A Qt/glib/gio-based lib used to develop file managers providing some file management utilities.
URL: https://github.com/lxqt/libfm-qt
Requires: Qt5Widgets Qt5X11Extras
Version: 0.14.0
Libs: -L${libdir} -lfm-qt
Cflags: -I${includedir}

Current Behavior

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: libfm-qt
Description: A Qt/glib/gio-based lib used to develop file managers providing some file management utilities.
URL: https://github.com/lxqt/libfm-qt
Requires: Qt5Widgets >= Qt5X11Extras >=
Version: 0.14.0
Libs: -L${libdir} -lfm-qt
Cflags: -I${includedir}

See the Requires: line!
With this, the rpm will require pkgconfig(>=) which will definitely fail in install.

Possible Solution

I don't know about cmake or .pc file. But I suggest to remove the >= should work.

Steps to Reproduce (for bugs)
  1. Find a Fedora Rawhide virtual machine
  2. Enable my playground with dnf copr enable zsun/lxqt
  3. Rebuild the srpm https://copr-be.cloud.fedoraproject.org/results/zsun/test/fedora-rawhide-x86_64/00850682-libfm-qt/libfm-qt-0.14.0-1.fc30.src.rpm
  4. Try to install the generated rpm, or extract the libfm-qt.pc file from it and check like above
Additional info

If you prefer to read the whole rpm build log, here it is
https://copr-be.cloud.fedoraproject.org/results/zsun/test/fedora-rawhide-x86_64/00850682-libfm-qt/build.log.gz

Usage of mempcpy in core/thumbnalijob.cpp

The file core/thumbnailjob.cpp features the use of mempcpy(3) function on line 99. This particular function is a non-standard extension by GNU, which may cause concerns regarding compatibility and is already the reason why libfm-qt refuses to compile on FreeBSD when built from this very repository by clang (however, there is a FreeBSD package and port available).

Possible Solution
  1. Replace mempcpy with an applicable function from the Standard C Library. I don’t quite know what exactly makes mempcpy special, but right now I see memmove as the closest alternative.
  2. Provide information on how to enable GNU extensions on Clang. If this solution fails, this might mean that I have to use glibc and gcc...
System Information
  • Distribution & Version: FreeBSD 1.12-RELEASE (i386)
  • Compiler: clang (LLVM 6.0)

PR 343 introduce FTBFS

Expected Behavior

Should not fail to build

Current Behavior

Fails to build - @PCMan mentioned a switch for Qt 5.12

/build/libfm-qt-0.14.0~326-g94db29d/src/filedialog.cpp: In member function ‘void Fm::FileDialog::FileDialogFilter::update()’:
/build/libfm-qt-0.14.0~326-g94db29d/src/filedialog.cpp:973:75: error: ‘wildcardToRegularExpression’ is not a member of ‘QRegularExpression’
                                                     + QRegularExpression::wildcardToRegularExpression(glob)
                                                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
make[3]: *** [src/CMakeFiles/fm-qt.dir/build.make:1184: src/CMakeFiles/fm-qt.dir/filedialog.cpp.o] Error 1
Possible Solution

just fix it :)

  • Qt Version: 5.11.3+dfsg-2

Setting trust

Expected Behavior

Should be independent of the pcmanfm-qt settings - Rationale: if we override it, we should be able to set the trust to a desktopfile - the untrusted emblem looks fugly :)

Current Behavior

can set the trust only if global is off

Possible Solution

change the implementation logic

current release

Licensing question

Seems like two files are GPL-2.0+ licensed:

  • src/core/vfs/vfs-menu.c
  • src/core/vfs/vfs-search.c

while the rest is LGPL-2.1-or-later. Is this intentional?

Support for creation time

On ext4, creation time can be fetched by stat in up-to-date distros and has been supported by KDE recently but not by GLib.

We could wait a little (one year) for it to be supported by GLib. Then, if there's no progress in GLib, we might be able to adapt the KDE way for libfm-qt.

[Qt 5.11] Various Applications Segfault in 'libfm-qt'

Expected Behavior

No segmentation faults occur.

Current Behavior

PCManFM-Qt, and various other applications that use a file-chooser dialog, crash with a segmentation fault in:

Fm::ProxyFolderModel::filterAcceptsRow (this=0x56410eebbf60, source_row=0,
  source_parent=...)
    at src/proxyfoldermodel.cpp:127

Full backtrace with threads: https://gist.github.com/Chiitoo/287dd843279702150f08e958b1a15b56

Possible Solution

The issue seems to be caused by the following upstream commit (tested by reverting said commit):

http://code.qt.io/cgit/qt/qtbase.git/patch/?id=1c0fcbc887459d8963088309e83303eb1a7d2db0

Steps to Reproduce (for bugs)
  1. Run the relevant software against Qt 5.11.
  2. Change directory either via the file/directory view, or the path edit/bar.
System Information

save dialogs don't automatically add extensions

Save dialogs in don't provide an option to automatically add extensions, so even where some application understands one particular extension, saving a file in it doesn't result in an extension being added.

Expected Behavior

Save dialogs should at least have a checkbox providing an option to automatically add an extension.

Current Behavior

Save dialogs have no options regarding extensions and files get saved without them unless manually added.

Possible Solution

To be fair, I'm not sure. I know it's not reasonable to imagine that LXQt is going to provide every single app-specific option known to man (e.g. LibreOffice's encrypt with a password), but I would imagine that having the option to automatically add a file extension seems pretty universally applicable.

Steps to Reproduce (for bugs)

I originally noticed this in k3b, so:

  1. Open k3b
  2. Click "Create a New Data Project"
  3. Click "Save"
  4. Note that the file name does not have the ".k3b" extension
  5. Click ok to use the default file name
  6. Open the file manager to the save location and note the file does not have the extension
Context

@agaida suggested I file this here.

System Information
  • Distribution & Version: Lubuntu 19.10
  • Kernel: 5.0.0-13-generic
  • Qt Version: 5.12.2
  • libqtxdg Version: 3.3.1-0ubuntu2
  • lxqt-build-tools Version: 0.6.0-2ubuntu1
  • Package version: 0.14.1-0ubuntu2

Downstream bug

(no joke) nautilus crash

Something is not correct with the copy/cut->paste in libfm-qt

  1. Open pcmanfm-qt
  2. Open nautilus
  3. Cut/Copy a file in pcmanfm-qt
  4. Click into nautilus to paste the file //all good
  5. compile libfm-qt-master/src/test/test-folderview.cpp
  6. copy/cut a file there
  7. Click into nautilus to paste the file //nautilus crashes with
ERROR:../src/nautilus-file.c:584:nautilus_file_new_from_filename: assertion failed: (filename[0] != '\0')
Aborted (core dumped)

This seems to be an issue with the clipboard implementation of libfm-qt as the following example program crashes for me too. I suspect depending on the place of the crash that somehow the clipboard data does not look exactly like it should or _convertPath not converting like expected.

....
    Q_INVOKABLE void pasteFiles(QString pathToSomeFile) //like "/home/you/testfolder/test.txt
   {
  auto uri  = Fm::FilePath::fromPathStr(pathToSomeFile.toLocal8Bit().constData());
  auto home = Fm::FilePath::homeDir();
   Fm::pasteFilesFromClipboard(home);
      }
....

where the crash is interestingly in path.h::386 which serves the same purpose as the thing nautilus crashes with

  static Path newForGfile(GFile* gf) {
    return Path::wrapPtr(fm_path_new_for_gfile(gf));
  }
Thread 1 (Thread 0x7ffff7fb3f40 (LWP 25276)):
#0  0x00007ffff7baf7c3 in fm_path_ref () at /lib64/libfm.so.4
#1  0x00007ffff7bb049a in fm_path_new_for_uri () at /lib64/libfm.so.4
#2  0x00007ffff7bb02d2 in fm_path_new_for_str () at /lib64/libfm.so.4
#3  0x00007ffff7bb0590 in fm_path_new_for_gfile () at /lib64/libfm.so.4
#4  0x000000000046f460 in Fm::Path::newForGfile(_GFile*) (gf=0x835580) at ../untitled1/path.h:387
#5  0x000000000046f734 in Fm::_convertPath(Fm::FilePath const&) (path=...) at ../untitled1/core/compat_p.h:19
        __PRETTY_FUNCTION__ = "Fm::Path Fm::_convertPath(const Fm::FilePath&)"
#6  0x000000000046f7de in Fm::_convertPathList(std::vector<Fm::FilePath, std::allocator<Fm::FilePath> > const&) (srcFiles=...) at ../untitled1/core/compat_p.h:25
        file = @0xbd59f0: {gfile_ = {gobj_ = 0x835580}, static homeDir_ = {gfile_ = {gobj_ = 0x954300}, static homeDir_ = <same as static member of an already seen type>}}
        __for_range = @0x7fffffffb0b0: {<std::_Vector_base<Fm::FilePath, std::allocator<Fm::FilePath> >> = {_M_impl = {<std::allocator<Fm::FilePath>> = {<__gnu_cxx::new_allocator<Fm::FilePath>> = {<No data fields>}, <No data fields>}, _M_start = 0xbd59f0, _M_finish = 0xbd59f8, _M_end_of_storage = 0xbd59f8}}, <No data fields>}
        __for_begin = {_M_current = 0xbd59f0}
        __for_end = {_M_current = 0xbd59f8}
        ret = {dataPtr_ = 0x7fffd001b700}
#7  0x00000000004bae2c in Fm::FileOperation::FileOperation(Fm::FileOperation::Type, std::vector<Fm::FilePath, std::allocator<Fm::FilePath> >, QObject*) (this=0x3213ac0, type=Fm::FileOperation::Move, srcFiles=..., parent=0x0) at ../untitled1/fileoperation.cpp:37
#8  0x00000000004bc11d in Fm::FileOperation::moveFiles(std::vector<Fm::FilePath, std::allocator<Fm::FilePath> >, Fm::FilePath) (srcFiles=..., dest=...) at ../untitled1/fileoperation.cpp:254
        op = 0x7fffffffb298
#9  0x00000000004d3e8e in Fm::pasteFilesFromClipboard(Fm::FilePath const&, QWidget*) (destPath=..., parent=0x0) at ../untitled1/utilities.cpp:111
        __PRETTY_FUNCTION__ = "void Fm::pasteFilesFromClipboard(const Fm::FilePath&, QWidget*)"
        clipboard = 0x8b8870
        data = 0x32123f0
        paths = {<std::_Vector_base<Fm::FilePath, std::allocator<Fm::FilePath> >> = {_M_impl = {<std::allocator<Fm::FilePath>> = {<__gnu_cxx::new_allocator<Fm::FilePath>> = {<No data fields>}, <No data fields>}, _M_start = 0x2f039e0, _M_finish = 0x2f039e8, _M_end_of_storage = 0x2f039e8}}, <No data fields>}
        isCut = true
#10 0x00000000004e7a7c in Fm::ProxyFolderModel::pasteFiles(QString) (this=0x898490, filePath=...) at ../untitled1/proxyfoldermodel.h:92
        folderPath = {gfile_ = {gobj_ = 0x95b220}, static homeDir_ = {gfile_ = {gobj_ = 0x954300}, static homeDir_ = <same as static member of an already seen type>}}
        home = {gfile_ = {gobj_ = 0x954300}, static homeDir_ = {gfile_ = {gobj_ = 0x954300}, static homeDir_ = <same as static member of an already seen type>}}
        clipboard = 0x8b8870
        data = 0x32123f0
        __PRETTY_FUNCTION__ = "void Fm::ProxyFolderModel::pasteFiles(QString)"
#11 0x00000000004e7293 in Fm::ProxyFolderModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x898490, _c=QMetaObject::InvokeMetaMethod, _id=4, _a=0x7fffffffb490) at moc_proxyfoldermodel.cpp:116
        _t = 0x898490

Set view mode of LXQt file dialog in code without remembering it

Apps that depend on libfm-qt can call LXQt file dialog directly. They can use Fm::FileDialog::setViewMode() to set the view mode but it'll be saved on closing and remembered with other apps.

Possible Solution

It shouldn't be difficult to implement: remember the view mode if the user has set it; don't remember it if it's set in the code

Context

For example, wallpaper is set by a Qt file dialog but it'll be better if LXQt file dialog is used directly in the thumbnail view mode, without remembering that view for future file dialogs (of other Qt apps).

System Information

Latest git LXQt.

ABI and SONAME need a bump

Current Behavior

We introduced a backward incompatible change with exif and jpg handling

@@ -289,6 +289,7 @@ libfm-qt.so.6 libfm-qt6 #MINVER#
  (c++)"Fm::FileDialog::setViewMode(Fm::FolderView::ViewMode)@Base" 0.12.0
  (c++)"Fm::FileDialog::splitterPos() const@Base" 0.12.0
  (c++)"Fm::FileDialog::staticMetaObject@Base" 0.12.0
+ (c++)"Fm::FileDialog::suffix(bool) const@Base" 0.14.2~
  (c++)"Fm::FileDialog::updateAcceptButtonState()@Base" 0.12.0
  (c++)"Fm::FileDialog::updateSaveButtonText(bool)@Base" 0.12.0
  (c++)"Fm::FileDialog::updateSelectionMode()@Base" 0.12.0
@@ -678,6 +679,7 @@ libfm-qt.so.6 libfm-qt6 #MINVER#
  (c++)"Fm::FolderModelItem::FolderModelItem(Fm::FolderModelItem const&)@Base" 0.10.0
  (c++)"Fm::FolderModelItem::FolderModelItem(std::shared_ptr<Fm::FileInfo const> const&)@Base" 0.12.0
  (c++)"Fm::FolderModelItem::bindCutFiles(std::shared_ptr<std::set<unsigned int, std::less<unsigned int>, std::allocator<unsigned int> > const> const&)@Base" 0.12.0
+ (c++)"Fm::FolderModelItem::displayDtime() const@Base" 0.14.2~
  (c++)"Fm::FolderModelItem::displayMtime() const@Base" 0.12.0
  (c++)"Fm::FolderModelItem::displaySize() const@Base" 0.12.0
  (c++)"Fm::FolderModelItem::findThumbnail(int, bool)@Base" 0.12.0
@@ -1034,7 +1036,7 @@ libfm-qt.so.6 libfm-qt6 #MINVER#
  (c++)"Fm::ThumbnailJob::qt_metacast(char const*)@Base" 0.12.0
  (c++|arch= !armel !armhf !i386 !mips !mipsel !hppa !hurd-i386 !kfreebsd-i386 !m68k !powerpc !powerpcspe !sh4 !x32 )"Fm::ThumbnailJob::readImageFromStream(_GInputStream*, unsigned long)@Base" 0.12.0
  (c++|arch= !amd64 !arm64 !mips64el !ppc64el !s390x !alpha !ia64 !kfreebsd-amd64 !ppc64 !riscv64 !sparc64 )"Fm::ThumbnailJob::readImageFromStream(_GInputStream*, unsigned int)@Base" 0.12.0
- (c++)"Fm::ThumbnailJob::readJpegExif(_GInputStream*, QImage&, int&)@Base" 0.12.0
+ (c++)"Fm::ThumbnailJob::readJpegExif(_GInputStream*, QImage&, QMatrix&)@Base" 0.14.2~
  (c++)"Fm::ThumbnailJob::setLocalFilesOnly(bool)@Base" 0.14.0~
  (c++)"Fm::ThumbnailJob::setMaxThumbnailFileSize(int)@Base" 0.14.0~
  (c++)"Fm::ThumbnailJob::staticMetaObject@Base" 0.12.0
Possible Solution

bump both

Context

pcmanfm-qt will try to use the removed symbol and fail

System Information

latest git

(Harmless?) error message with file dialog

Steps to Reproduce (for bugs)
  1. Open a Qt app that uses native file dialogs from a terminal emulator.
  2. Open a file dialog from that app.
  3. Enter a valid path into its path bar (after making it editable).
  4. Press ENTER.

Then, this message will appear in the terminal: QCoreApplication::postEvent: Unexpected null receiver. The file dialog will work fine though.

Possible Solution

Should see which event is sent to a null receiver, of course.

Context

I don't know if this existed before or happens with Qt 5.11.

System Information

Qt 5.11.1 + Latest git LXQt

Preferences for File Dialog

Currently there is no way to configure file dialog's icon size in Icon/Thumbnail/Compact filesystem view like it is possible in pcamnfmqt. Could we make it configurable?
I believe the best way would be to share the setting with pcmanfm-qt. If so, what exact way do you prefer? Use settings directly from pcmanfm's config or move them to a different location somewhere bellow ~/.config/lxqt/?

Treeview in FolderView

I see that there are 4 different views in fm-qt/pcman:
Icon
Compact
Detailed
Thumbnail

But I don't find the treeview and it seems it is not implemented.
Was this skipped on purpose as there were particular difficulties with the FolderModel implementation
or was the feature deemed not important and thus just skipped?

Random crash in file dialog

I found this backtrace in /var/lib/systemd/coredump after the recent changes in lxqt-qtplugin + libfm-qt (although I don't see any relation yet):

#0  0x00007f93010b8388 in QtSharedPointer::ExternalRefCountData::getAndRef(QObject const*) ()
    at /usr/lib/libQt5Core.so.5
#1  0x00007f93012302f3 in  () at /usr/lib/libQt5Core.so.5
#2  0x00007f9301230474 in QTimer::singleShotImpl(int, Qt::TimerType, QObject const*, QtPrivate::QSlotObjectBase*) ()
    at /usr/lib/libQt5Core.so.5
#3  0x00007f92e29e391f in Fm::FileDialog::selectFilePathWithDelay(Fm::FilePath const&) () at /usr/lib/libfm-qt.so
#4  0x00007f9301223c50 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/libQt5Core.so.5
#5  0x00007f92e2988275 in Fm::Folder::onDirListFinished() () at /usr/lib/libfm-qt.so
#6  0x00007f93012243d2 in QObject::event(QEvent*) () at /usr/lib/libQt5Core.so.5
#7  0x00007f9302513a74 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#8  0x00007f930251b341 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#9  0x00007f93011f9cb9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#10 0x00007f93011fcd4c in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) ()
    at /usr/lib/libQt5Core.so.5
#11 0x00007f930124da54 in  () at /usr/lib/libQt5Core.so.5
#12 0x00007f92fd999368 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#13 0x00007f92fd9995b1 in  () at /usr/lib/libglib-2.0.so.0
#14 0x00007f92fd99963e in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#15 0x00007f930124d039 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
    at /usr/lib/libQt5Core.so.5
#16 0x00007f92f9768722 in  () at /usr/lib/libQt5XcbQpa.so.5
#17 0x00007f93011f894c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#18 0x00007f9301200c46 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5
#19 0x00005587fe285356 in  ()
#20 0x00007f930064e06b in __libc_start_main () at /usr/lib/libc.so.6
#21 0x00005587fe2871aa in  ()

pcmanfm-qt does not start as root on live isos

It does not start - without a meaningful message

Expected Behavior

it should start as root

Current Behavior

It does not start at all as root

Possible Solution

No idea yet.

Steps to Reproduce (for bugs)

  • Get a live ISO (siduction, manjaro, debian buster)
  • Start and open a terminal
lx(sudo) pcmanfm-qt
  • lxsudo ends and no window appears

Context

I want ot use pcmanfm-qt as root even on live isos - not possible

System Information

latest release

Additional information

Original bug lxqt/pcmanfm-qt#958 was filed in pcmanfm-qt.

Path-bar: Make toggled button visible on resizing

While implementing the split view, I encountered a behavior of libfm-qt's path-bar that was a little annoying when the splitter handle was moved: when the path-bar is resized, the toggled path button may become invisible and need manual scrolling to be shown.

Because the toggled path button shows the current path, which is an important info, it's better to make it visible automatically on resizing.

Please reduce the amount of exported symbols

Expected Behavior

only really needed symbols should be exported

Current Behavior

bloody mess describe it best - and this will cause havoc with every compiler/qt/whatever change

System Information
  • Distribution & Version: current release

Recursive copy to smb shares is faulty

Expected Behavior

I should able to copy whole trees to a smb share

Current Behavior

A bug message comes up:

in this case the dir fixes will be created before the bug is thrown.

Possible Solution

fix it?

Steps to Reproduce (for bugs)
  1. mount a smb share via pcmanfm
  2. try to copy a dir from a local machine to the share
Context

normal and everyday copy actions should just work.

System Information

debian sid / latest git

Easier file filtering for LXQt file dialog

File selection with the file name line-edit is good but not enough for easily finding a file among many because it's case-sensitive and doesn't support complete filtering.

Since LXQt file dialog is a mini file manager, it'll be good if filtering with a small transient filterbar is added to it.

There are extra problems to solve because the circumstances are different from those of pcmanfm-qt.

A Question

Can I add Arqiver to the end of archivers.list? It works like a charm with:

[arqiver]
create=arqiver --sa %U
extract=arqiver --sx %U
extract_to=arqiver --ax %U
mime_types=application/x-xz-compressed-tar;application/x-lzma-compressed-tar;application/x-bzip-compressed-tar;application/x-bzip;application/x-tar;application/x-compressed-tar;application/zip;application/gzip;image/svg+xml-compressed;application/x-gzpdf;application/bzip;application/x-7z-compressed;application/vnd.debian.binary-package;application/x-archive;application/x-cpio;application/x-rpm;application/x-source-rpm;application/x-cd-image;application/x-raw-disk-image;application/x-xar;application/x-java-archive;
supports_uris=true

GLib error message when unmounting a folder opened twice

Fortunately, this issue doesn't have practical consequences (for ordinary users, at least):

  1. Run pcmanfm-qt from terminal.
  2. Insert a USB stick.
  3. Mount it and open it in two tabs.
  4. Press the eject button.

Then, nothing bad will happen but a message like this is shown in the terminal:

(process:xxx): GLib-GIO-CRITICAL **: xx:xx:xx.xxx: g_file_has_prefix: assertion 'G_IS_FILE (prefix)' failed

A critical message isn't a good sign. Its cause should be found and removed

Corner selection should be disbaled with single selection

There's only one instance of single selection for now and it's in the thumbnail view of lximage-qt, where corner selection (as well as rubber-band selection) causes a mess.

It's logical necessary to disable corner selection (and rubber-band selection) with single selection mode.

Wrong namespace on document element in libfm-qt-mimetypes.xml

Expected Behavior

Nothing special happens during package upgrading/installation

Current Behavior

Arch Linux's pacman use hooks to handle common works across multiple packages. When it's processing libfm-qt-mimetypes.xml, an error occurs:

$ sudo pacman -Syu                      
(...irrelevant stuff...)
:: Running post-transaction hooks...
(1/4) Updating icon theme caches...
(2/4) Arming ConditionNeedsUpdate...
(3/4) Updating the desktop file MIME type cache...
(4/4) Updating the MIME type database...
Wrong namespace on document element in '/usr/share/mime/packages/libfm-qt-mimetypes.xml' (should be http://www.freedesktop.org/standards/shared-mime-info)
Possible Solution

Switch back to http:// in data/libfm-qt-mimetypes.xml

The shared-mime-info spec [1] states that the namespace must be http://www.freedesktop.org/standards/shared-mime-info

[1] https://specifications.freedesktop.org/shared-mime-info-spec/0.18/ar01s02.html#idm139750563085760

Steps to Reproduce (for bugs)
  1. sudo /usr/bin/update-mime-database /usr/share/mime (This is the actual command [1] used in the last pacman hook)

[1] https://git.archlinux.org/svntogit/packages.git/tree/trunk/update-mime-database.hook?h=packages/shared-mime-info

Context

I'm doing a usual package upgrade

System Information
  • Distribution & Version: Arch Linux x86_64 latest
  • Kernel: 4.15.8-1
  • Qt Version: 5.10.1-7
  • lxqt-build-tools Version: git
  • libqtxdg Version: git
  • Package version: git

Ref: #173
/cc @agaida

Wrong filtering of desktop files in file dialog

Expected Behavior

.desktop should be treated like other extensions by LXQt file dialog.

Current Behavior

When "File type:" is .desktop, no desktop file is shown by the file dialog.

Steps to Reproduce (for bugs)

FeatherPad filters by extension with "Save As":

  1. Open a desktop file with FP.
  2. Use "Save As".

Then, the containing folder will be opened in LXQt file dialog but no desktop file will be shown, unless the filter is changes to "All Files (*)".

That's while if FP is set to use Qt's non-native file dialog, all desktop files will be shown and the opened one will be selected and scrolled to correctly.

System Information

Latest git

lambda in selectFilePathWithDelay maybe called even after object destructed

This bug is reported here,

when Qt application call
QFileDialog::setOptions, it may trigger following code path:

LXQtFileDialogHelper::~LXQtFileDialogHelper() (this=0x6040002b1d10)
at /srv/nfs4/working/lxqt-qtplugin/src/lxqt-qtplugin-0.12.0/src/lxqtfiledialoghelper.cpp:39
#1 0x00007ffff54a7dc6 in QDialogPrivate::deletePlatformHelper() () at /usr/lib/libQt5Widgets.so.5
#2 0x00007ffff54b9b19 in () at /usr/lib/libQt5Widgets.so.5
#3 0x00007ffff54b9d69 in QFileDialog::setOptions(QFlagsQFileDialog::Option) () at /usr/lib/libQt5Widgets.so.5

this will delete its _dlg member (which is a FileDialog instance)

after this call, if client call filedialog->exec before control flow returned to main loop,
lambda connected inside selectFilePathWithDelay will still be called , and it leads crash.

manually add processEvents can workaround this, so it seems that when dialog exec is called before previous main loop returned, QTimer connection didn't got auto disconnected when receiver destructed.

FileDialog construct backtrace:
0x00007fffdcef400c in LXQtFileDialogHelper::LXQtFileDialogHelper() (this=0x6040002b1d10)
at /srv/nfs4/working/lxqt-qtplugin/src/lxqt-qtplugin-0.12.0/src/lxqtfiledialoghelper.cpp:22
#1 0x00007fffdcef5365 in non-virtual thunk to LXQtPlatformTheme::createPlatformDialogHelper(QPlatformTheme::DialogType) const ()
at /usr/include/qt/QtCore/qcoreapplication.h:116
#2 0x00007ffff54a7b20 in QDialogPrivate::platformHelper() const () at /usr/lib/libQt5Widgets.so.5
#3 0x00007ffff54ba3fd in QFileDialogPrivate::init(QUrl const&, QString const&, QString const&) () at /usr/lib/libQt5Widgets.so.5
#4 0x00007ffff54ba822 in QFileDialog::QFileDialog(QWidget*, QString const&, QString const&, QString const&) () at /usr/lib/libQt5Widgets.so.5
#5 0x00007ffff5e7e46c in KoFileDialog::createFileDialog() () at /usr/lib/libkritawidgetutils.so.18
#6 0x00007ffff5e7efd7 in KoFileDialog::filename() () at /usr/lib/libkritawidgetutils.so.18
#7 0x00007ffff692592a in KisMainWindow::saveDocument(KisDocument*, bool, bool, int) () at /usr/lib/libkritaui.so.18

FileDialog destruct backtrace:

#0 0x00007fffdceecec0 in LXQtFileDialogHelper::~LXQtFileDialogHelper() (this=0x6040002b1d10)
at /srv/nfs4/working/lxqt-qtplugin/src/lxqt-qtplugin-0.12.0/src/lxqtfiledialoghelper.cpp:39
#1 0x00007ffff54a7dc6 in QDialogPrivate::deletePlatformHelper() () at /usr/lib/libQt5Widgets.so.5
#2 0x00007ffff54b9b19 in () at /usr/lib/libQt5Widgets.so.5
#3 0x00007ffff54b9d69 in QFileDialog::setOptions(QFlagsQFileDialog::Option) () at /usr/lib/libQt5Widgets.so.5
#4 0x00007ffff5e7e603 in KoFileDialog::createFileDialog() () at /usr/lib/libkritawidgetutils.so.18
#5 0x00007ffff5e7efd7 in KoFileDialog::filename() () at /usr/lib/libkritawidgetutils.so.18
#6 0x00007ffff692592a in KisMainWindow::saveDocument(KisDocument*, bool, bool, int) () at /usr/lib/libkritaui.so.18

FileDialog being accessed after destructed backtrace:
#0 0x7fffdc77aaa6 in operator() /home/comicfans/working/pacman/src/libfm-qt-0.12.0/src/filedialog.cpp:425
#1 0x7fffdc77aaa6 in call /usr/include/qt/QtCore/qobjectdefs_impl.h:130
#2 0x7fffdc77aaa6 in call /usr/include/qt/QtCore/qobjectdefs_impl.h:240
#3 0x7fffdc77aaa6 in QtPrivate::QFunctorSlotObject<Fm::FileDialog::selectFilePathWithDelay(Fm::FilePath const&)::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) [clone .lto_priv.363] /usr/include/qt/QtCore/qobjectdefs_impl.h:423
#4 0x7ffff4574a03 (/usr/lib/libQt5Core.so.5+0x2d9a03)
#5 0x7ffff456840a in QObject::event(QEvent*) (/usr/lib/libQt5Core.so.5+0x2cd40a)
#6 0x7ffff52b1e3b in QApplicationPrivate::notify_helper(QObject*, QEvent*) (/usr/lib/libQt5Widgets.so.5+0x151e3b)
#7 0x7ffff52b9815 in QApplication::notify(QObject*, QEvent*) (/usr/lib/libQt5Widgets.so.5+0x159815)
#8 0x7ffff68ead97 in KisApplication::notify(QObject*, QEvent*) (/usr/lib/libkritaui.so.18+0x57ed97)
#9 0x7ffff45371df in QCoreApplication::notifyInternal2(QObject*, QEvent*) (/usr/lib/libQt5Core.so.5+0x29c1df)
#10 0x7ffff4592ad7 in QTimerInfoList::activateTimers() (/usr/lib/libQt5Core.so.5+0x2f7ad7)
#11 0x7ffff45932d1 (/usr/lib/libQt5Core.so.5+0x2f82d1)
#12 0x7fffebb0c26f in g_main_context_dispatch (/usr/lib/libglib-2.0.so.0+0x6b26f)
#13 0x7fffebb0df68 (/usr/lib/libglib-2.0.so.0+0x6cf68)
#14 0x7fffebb0dfad in g_main_context_iteration (/usr/lib/libglib-2.0.so.0+0x6cfad)
#15 0x7ffff4593690 in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) (/usr/lib/libQt5Core.so.5+0x2f8690)
#16 0x7fffe0b46281 (/usr/lib/libQt5XcbQpa.so.5+0xc5281)
#17 0x7ffff453582a in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) (/usr/lib/libQt5Core.so.5+0x29a82a)
#18 0x7ffff54a8dca in QDialog::exec() (/usr/lib/libQt5Widgets.so.5+0x348dca)
#19 0x7ffff5e7efe8 in KoFileDialog::filename() (/usr/lib/libkritawidgetutils.so.18+0x61fe8)
#20 0x7ffff6925929 in KisMainWindow::saveDocument(KisDocument*, bool, bool, int) (/usr/lib/libkritaui.so.18+0x5b9929)
#21 0x7ffff6926d45 in KisMainWindow::slotFileSaveAs() (/usr/lib/libkritaui.so.18+0x5bad45)
#22 0x7ffff692b706 (/usr/lib/libkritaui.so.18+0x5bf706)

You can reproduce this bug by click
File-> SaveAs from Krita (a Qt painting app)

Problem with submodule

git submodule update --init --recursive
fatal: No url found for submodule path 'data/translations' in .gitmodules

copied filename from google drive is wrong

Expected Behavior

Copy google-drive://[email protected]/testfile.txt
to /home/you/testfile.txt
Have /home/you/testfile.txt

Current Behavior

Copy google-drive://[email protected]/testfile.txt
to /home/you/testfile.txt
Have /home/you/GARBAGENAMEXYA432yhtghfdfvdaew3SDFD

Possible Solution

Problem occurs using libfm-qt directly and with pcmanfm-qt
https://debarshiray.wordpress.com/2015/09/13/google-drive-and-gnome-what-is-a-volatile-path/
the #GarbageName is the "real one" meaning the one non-gvfs capable applications see while browsing
/run/user/1000/gvfs/yourdriveaccount/

QFileDialog::setMimeTypeFilters() doesn't work with LXQt file dialog

QFileDialog::setMimeTypeFilters() sets the mimetype filter of a file dialog in a Qt code.

Expected Behavior

The method should work with LXQt (native) file dialog.

Current Behavior

But it doesn't work. Not only the filter is shown with an extra parenthesis at the end but also the dialog filters out everything (except for folders).

Possible Solution

Should read the file dialog code again.

System Information

Latest git LXQt.

Remove menu-cache

Expected Behavior

No menu-cache dependency.

Current Behavior

libfm-qt/pcmanfm-qt still depends on menu-cache for some functionalities. menu-cache has shown problematic behavior before (long delays in reboot/shutdown) and depends on libfm-extra

Possible Solution

I have no idea yet.

Context

Please see lxqt/pcmanfm-qt#952 and #185.

IMHO, menu-cache shouldn't be made optional but removed.

System Information

Latest git LXQt

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.