! Please note that this is a snapshot of our old Bugzilla server, which is read only since May 29, 2020. Please go to gitlab.xfce.org for our new server !
Enhancement: Thunar GTK+ 3 port
Status:
RESOLVED: WORKSFORME
Priority:
Very Low
Severity:
enhancement

Comments

Description poma 2016-08-17 17:36:17 CEST
Detailed List View issue:

- certain folders OR files can be selected, whereupon other folders OR files can not be selected.
- to select other folders OR files, another instance of thunar must be used.
- etc.

$ ./thunar/.libs/thunar 

(thunar:14159): Gtk-CRITICAL **: IA__gtk_tree_selection_set_select_function: assertion 'func != NULL' failed

(thunar:14159): Gtk-CRITICAL **: IA__gtk_tree_selection_set_select_function: assertion 'func != NULL' failed

(thunar:14159): Gtk-CRITICAL **: IA__gtk_tree_selection_set_select_function: assertion 'func != NULL' failed

(thunar:14159): Gtk-CRITICAL **: IA__gtk_tree_selection_set_select_function: assertion 'func != NULL' failed

(thunar:14159): Gtk-CRITICAL **: IA__gtk_tree_selection_set_select_function: assertion 'func != NULL' failed

(thunar:14159): Gtk-CRITICAL **: IA__gtk_tree_selection_set_select_function: assertion 'func != NULL' failed

(thunar:14159): Gtk-CRITICAL **: IA__gtk_tree_selection_set_select_function: assertion 'func != NULL' failed

(thunar:14159): Gtk-CRITICAL **: IA__gtk_tree_selection_set_select_function: assertion 'func != NULL' failed

(thunar:14159): Gtk-CRITICAL **: IA__gtk_tree_selection_set_select_function: assertion 'func != NULL' failed



$ exo-open --version | head -1
exo-open 0.11.1git-20160817gitf98abb0

$ thunar --version | head -1
Thunar 1.6.10git-20160629gitfebb417 (Xfce 4.12)
Comment 1 Derk te Bokkel 2016-08-17 18:09:30 CEST
also refer to bug 12698 for more detailed triage
Comment 2 Derk te Bokkel 2016-08-17 19:45:29 CEST
note it is my experience that the last item is not released after left button double click/single click selection (as per preferences) .. 

so something is not being cleared once the selection is acted on .. 

switching to any other views resets the main window .. (preious selection is highlighted in the refreshed window but you can now unselect it) ..

also using only right click actions does not trigger the issue.. until a left double click/single click selection is done
Comment 3 Derk te Bokkel 2016-08-18 18:18:50 CEST
the behaviour of this bug changes with gtk version ..  all related to exo_tree_view.c changes and gtk+ changes

notes in bug #12698 are based on gtk+-3.20.6 where  selections did not lock until opened with left double  click

notes in this new bug relate to gtk+-3.20.8 .. seems inherited gtk_tree_view behaviour has changed a bit .. now at the first left click the selection locks and will not release .. any other action keeps opening the selected file and the original selection remains highlighted .. even double clicking other files opens the highlighted file only .. selection frozen .. switching to another view and back again  releases the selection .. so you can pick another one .. flip/flip .. seems to do the unlock .. so any clues?
Comment 4 poma 2016-08-18 18:40:50 CEST
(In reply to Derk te Bokkel from comment #3)
> the behaviour of this bug changes with gtk version ..  all related to
> exo_tree_view.c changes and gtk+ changes
> 
> notes in bug #12698 are based on gtk+-3.20.6 where  selections did not lock
> until opened with left double  click
> 
> notes in this new bug relate to gtk+-3.20.8 .. seems inherited gtk_tree_view
> behaviour has changed a bit .. 
[...]

"The micro version number is incremented when code changes are made without modifying API."
API stability
https://developer.gnome.org/programming-guidelines/stable/api-stability.html.en


Yeah I know this is just a theory.


$ rpm -q gtk3
gtk3-3.20.9-1.fc24.x86_64

https://git.gnome.org/browse/gtk+/commit/?h=3.20.9
Comment 5 Derk te Bokkel 2016-08-18 18:52:09 CEST
directories also frozen .. first click selection is frozen ...
any double click anywhere in the detailed list view window will open the directory

this behaviour is also different from that in bug #12698, there you could single click files or directories freely .. i.e. with gtk+-3.20.6 
 

.. I'm using Gentoo so gtk+-3.20.8 is the latest available .. so I can not test gtk+-3.20.9 at the moment .. I'll have to create an ebuild for it .. perhaps later ..
Comment 6 Derk te Bokkel 2016-08-19 03:19:57 CEST
compiled thunar and exo from git sources with debug flag set


starting in a terminal:
thunar
using detail list view .. shows following on selections or double clicks:


(thunar:19924): Gtk-CRITICAL **: IA__gtk_tree_selection_set_select_function: assertion 'func != NULL' failed

(thunar:19924): Gtk-CRITICAL **: IA__gtk_tree_selection_set_select_function: assertion 'func != NULL' failed

doing just exo with debug shows the same error .. just a different number .. sorry did not save it .. can rerun if needed ..
Comment 7 poma 2016-08-22 19:37:33 CEST
Is this issue occurs with the GTK+ 3 port?

$ git clone https://github.com/rgcjonas/thunar-gtk3.git
$ cd thunar-gtk3/
$ sed -i 's/gdk_set/\/\/gdk_set/' thunar/thunar-session-client.c
...
Comment 8 Derk te Bokkel 2016-08-22 20:18:07 CEST
no current git.xfce.org  thunar .. I'll try the port
Comment 9 Derk te Bokkel 2016-08-22 20:38:22 CEST
unfortunately the thunar-gtk3 build errors out

libtool: link: x86_64-pc-linux-gnu-gcc -pthread -I/usr/include/exo-2 -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/xfce4 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/gudev-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -pthread -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -pthread -I/usr/include/xfce4/libxfce4ui-2 -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/xfce4 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/xfce4/xfconf-0 -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -pthread -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -O2 -pipe -DXFCE_DISABLE_DEPRECATED -Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wold-style-definition -Wdeclaration-after-statement -Wmissing-declarations -Wmissing-noreturn -Wpointer-arith -Wcast-align -Wformat -Wformat-security -Wformat-y2k -Winit-self -Wmissing-include-dirs -Wundef -Wnested-externs -fstack-protector -Wredundant-decls -g -Wshadow -Wl,-O1 -Wl,-O1 -o .libs/thunar thunar-thunar-marshal.o thunar-thunar-thumbnail-frame.o thunar-thunar-dbus-service-infos.o thunar-thunar-thumbnailer-proxy.o thunar-thunar-thumbnail-cache-proxy.o thunar-main.o thunar-thunar-abstract-dialog.o thunar-thunar-abstract-icon-view.o thunar-thunar-application.o thunar-thunar-browser.o thunar-thunar-chooser-button.o thunar-thunar-chooser-dialog.o thunar-thunar-chooser-model.o thunar-thunar-clipboard-manager.o thunar-thunar-column-editor.o thunar-thunar-column-model.o thunar-thunar-compact-view.o thunar-thunar-component.o thunar-thunar-create-dialog.o thunar-thunar-dbus-service.o thunar-thunar-deep-count-job.o thunar-thunar-details-view.o thunar-thunar-dialogs.o thunar-thunar-device.o thunar-thunar-device-monitor.o thunar-thunar-dnd.o thunar-thunar-emblem-chooser.o thunar-thunar-enum-types.o thunar-thunar-exec.o thunar-thunar-file.o thunar-thunar-file-monitor.o thunar-thunar-folder.o thunar-thunar-gdk-extensions.o thunar-thunar-gio-extensions.o thunar-thunar-gobject-extensions.o thunar-thunar-gtk-extensions.o thunar-thunar-history-action.o thunar-thunar-history.o thunar-thunar-ice.o thunar-thunar-icon-factory.o thunar-thunar-icon-renderer.o thunar-thunar-icon-view.o thunar-thunar-image.o thunar-thunar-io-jobs.o thunar-thunar-io-jobs-util.o thunar-thunar-io-scan-directory.o thunar-thunar-job.o thunar-thunar-launcher.o thunar-thunar-list-model.o thunar-thunar-location-bar.o thunar-thunar-location-button.o thunar-thunar-location-buttons.o thunar-thunar-location-entry.o thunar-thunar-misc-jobs.o thunar-thunar-notify.o thunar-thunar-navigator.o thunar-thunar-pango-extensions.o thunar-thunar-path-entry.o thunar-thunar-permissions-chooser.o thunar-thunar-preferences-dialog.o thunar-thunar-preferences.o thunar-thunar-progress-dialog.o thunar-thunar-progress-view.o thunar-thunar-properties-dialog.o thunar-thunar-renamer-dialog.o thunar-thunar-renamer-model.o thunar-thunar-renamer-pair.o thunar-thunar-renamer-progress.o thunar-thunar-sendto-model.o thunar-thunar-session-client.o thunar-thunar-shortcuts-icon-renderer.o thunar-thunar-shortcuts-pane.o thunar-thunar-side-pane.o thunar-thunar-simple-job.o thunar-thunar-size-label.o thunar-thunar-standard-view.o thunar-thunar-statusbar.o thunar-thunar-stock.o thunar-thunar-templates-action.o thunar-thunar-thumbnail-cache.o thunar-thunar-thumbnailer.o thunar-thunar-transfer-job.o thunar-thunar-trash-action.o thunar-thunar-tree-model.o thunar-thunar-tree-pane.o thunar-thunar-tree-view.o thunar-thunar-user.o thunar-thunar-util.o thunar-thunar-view.o thunar-thunar-window.o -pthread  -Wl,--as-needed ../thunarx/.libs/libthunarx-2.so -lgmodule-2.0 -lexo-2 -lgthread-2.0 -lgudev-1.0 -lnotify -lSM -lICE -lX11 -lxfce4ui-2 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lxfce4util -lxfconf-0 -ldbus-glib-1 -ldbus-1 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -pthread
thunar-thunar-session-client.o: In function `thunar_session_client_connect':
/var/tmp/portage/xfce-base/thunar-9999/work/thunar-gtk3/thunar/thunar-session-client.c:173: undefined reference to `gdk_set_sm_client_id'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:883: thunar] Error 1
make[3]: Leaving directory '/var/tmp/portage/xfce-base/thunar-9999/work/thunar-gtk3/thunar'
make[2]: *** [Makefile:798: all] Error 2
make[2]: Leaving directory '/var/tmp/portage/xfce-base/thunar-9999/work/thunar-gtk3/thunar'
make[1]: *** [Makefile:753: all-recursive] Error 1
make[1]: Leaving directory '/var/tmp/portage/xfce-base/thunar-9999/work/thunar-gtk3'
make: *** [Makefile:566: all] Error 2
Comment 10 poma 2016-08-23 15:31:28 CEST
Here are Test Fedora builds:
http://goo.gl/Gm4ffO
thunar-gtk3/

exo*.fc24.x86_64.rpm
Thunar*.fc24.x86_64.rpm
Thunar-debuginfo*.fc24.x86_64.rpm

Update via rpm:
# rpm -Uvh *.fc24.x86_64.rpm


Here is Test compilation can be tested with:
http://goo.gl/Gm4ffO
iso/
Comment 11 Derk te Bokkel 2016-08-23 17:23:46 CEST
I'd rather test fixed source code .. have you got the fedora "fixed" source code reference somewhere ?? I can try to build from that ..  :)
Comment 12 poma 2016-08-24 00:58:29 CEST
(In reply to Derk te Bokkel from comment #11)
> I'd rather test fixed source code .. have you got the fedora "fixed" source
> code reference somewhere ?? I can try to build from that ..  :)

You can reach the source code via:
$ rpm2cpio Thunar*.src.rpm | cpio -i
which is essentially the same as
$ git clone https://github.com/rgcjonas/thunar-gtk3.git
only in the form of tarrballed snapshot
i.e. thunar-gtk3-master.tar.gz
The only relevant fix is the sed oneliner mentioned in
https://bugzilla.xfce.org/show_bug.cgi?id=12772#c7

Beside, the source code is never pre-patched, but it is eventually patched just before compiling, follow the Thunar.spec.
Comment 13 Derk te Bokkel 2016-08-24 04:09:06 CEST
oops .. I missed that sed command .. thank you for pointing that out .. it now compiles fine .. :) now to test ..

ok now it works  without .. apparent problems in the details view .. will test further later
Comment 14 Derk te Bokkel 2016-08-24 14:22:20 CEST
got this moving files between directories .. re: bug# 12260 .. still happens .. but thunar specific?

Started thunar from xfce4-terminal

(thunar:26727): GLib-GIO-CRITICAL **: g_dbus_proxy_call_finish_internal: assertion 'error == NULL || *error == NULL' failed
Segmentation fault (core dumped)

will copy bug# 12260
Comment 15 Derk te Bokkel 2016-08-24 16:25:18 CEST
bug # 12320 is drag and drop issue .. files move also .. does any body do bug crossover issues as this is similar to 12260 cut and paste crash, 12264 file rename issues crashes .. will try patch from there ..
Comment 16 poma 2016-08-24 23:28:59 CEST
Thunar GTK+ 3 port is built on top of the commit
https://github.com/rgcjonas/thunar-gtk3/commit/e883c1f

which correspond to the mainline commit
https://git.xfce.org/xfce/thunar/commit/?id=e883c1f
Date: Wed, 29 Jul 2015 00:30:15 +0200

the source code that is over a year old.

To not waste time on this, because the old code is not the same as the old wine,
let's extract the commits that make up the GTK+ 3 port,
and apply them to the git master

$ git clone https://github.com/rgcjonas/thunar-gtk3.git
$ cd thunar-gtk3/
$ git format-patch e883c1f14bb33d888ff7cbbccc89034b70e334b4
0001-Replace-gdk_spawn_on_screen-with-internal-thunar_gdk.patch
0002-Remove-usage-of-GdkDrawable.patch
0003-s-gtk_tree_path_new_root-gtk_tree_path_new_first.patch
0004-TMP-fix-thunar_gdk_spawn_on_screen.patch
0005-Remove-homogeneous-tabs-from-notebook.patch
0006-s-gtk_widget_get_action-gtk_activatable_get_related_.patch
0007-Make-use-of-GtkComboBoxText.patch
0008-s-GTK_WIDGET_REALIZED-gtk_widget_get_realized.patch
0009-Remove-usage-of-deprecated-GDK_DISPLAY-and-gdk_displ.patch
0010-Remove-usage-of-deprecated-gtk_dialog_set_has_separa.patch
0011-Make-it-build-with-GSEAL.patch
0012-Make-Thunar-core-compile-and-not-crash-with-Gtk3.patch
0013-Sort-of-fix-mouse-gestures.patch
0014-Replace-our-own-shortcuts-pane-with-GtkPlacesSidebar.patch
0015-Get-rid-of-GTK_STOCK_.patch
0016-uca-UI-modernization.patch
0017-thunar-location-buttons-Modernize.patch
0018-thunar-location-bar-Fixup-modernization.patch
0019-Rework-how-location-bar-selection-works.patch
0020-thunar-uca-Fixup-dist-after-modernization.patch
0021-loaction-bar-modernization-Fixup-check-dist-distchec.patch
0022-thunar-application-Use-GtkApplication.patch
0023-Replace-dbus-glib-with-GDBus.patch
$ cd ../
$ git clone git://git.xfce.org/xfce/thunar
$ cd thunar/
$ git am ../thunar-gtk3/*.patch
$ sed -i 's/gdk_set/\/\/gdk_set/' thunar/thunar-session-client.c
$ ./autogen.sh --enable-maintainer-mode && make -j3
$ LD_PRELOAD=./thunarx/.libs/libthunarx-2.so.0 ./thunar/.libs/thunar


If necessary, apply various patches lying around, test ...
Funnel-ferry butterbar, Funnel-ferry butterbar
Comment 17 Derk te Bokkel 2016-08-25 00:25:32 CEST
is this " new git clone available anywhere " ?

save others some effort to duplicate.. :)
Comment 18 poma 2016-08-25 19:44:31 CEST
Can be available locally, if you follow the above mentioned instructions, and then publicly available, if you upload it to the public mirror.
Comment 19 poma 2016-08-25 19:55:05 CEST
Ref.
- mainline mirror on GitHub
  https://github.com/xfce-mirror/thunar

May also be useful - GTK+ 3 based file managers
- Nautilus - the file manager for the GNOME desktop
  https://github.com/GNOME/nautilus
- Caja - the file manager for the MATE desktop, fork of Nautilus
  https://github.com/mate-desktop/caja
Comment 20 poma 2016-08-25 20:18:29 CEST
https://bugzilla.xfce.org/show_bug.cgi?id=2316#c13
"I've done the implementation and it's working so far… unfortunately Thunar enhance is frozen until gtk3 port is done. I'm trying to do it right now and hopefully port my patch in gtk3 right after it. Probably available in a couple of weeks (at least for review).
..."
Cyrille Pontvieux


https://bugzilla.xfce.org/show_bug.cgi?id=12123#c5
"...
This patch have not been accepted upstream because Thunar development is frozen until gtk3 port is done, which I'm currently doing (still facing two bugs, one crash and one bad ui rendering).
But if you don't want to wait, just grab the code from my repo."
Cyrille Pontvieux
Comment 21 poma 2016-08-25 20:31:16 CEST
Enchanté
Comment 22 Derk te Bokkel 2016-08-25 23:52:13 CEST
thunar as per comment 16 with or without .. patch-6530 - bug 12264 applied

 LD_PRELOAD=./thunarx/.libs/libthunarx-2.so.0 ./thunar/.libs/thunar

move file/directory to different directory

(thunar:15317): GLib-GIO-CRITICAL **: g_dbus_proxy_call_finish_internal: assertion 'error == NULL || *error == NULL' failed
Segmentation fault (core dumped)

:( other patches 6778 or 6779 do not apply properly .. need some work 

tried 6613 patch also applies fine but no change .. wondering if the g_dbus code is to blame now? as quite often is is after the file is finished moving that this occurs .. but I did experience one file with content loss on a straight rename .. fortunately it was "backed up" .. but crashes might be happening on the folder refresh ..
Comment 23 Derk te Bokkel 2016-08-26 19:36:44 CEST
note crashes now include icon views as well ..  so it outside the detailed list code now too!
Comment 24 poma 2016-08-26 21:45:06 CEST
As Cyrille stated,
until his GTK+ 3 port lands on
http://git.enialis.net/gitweb/?p=thunar.git
...

À bientôt ;)
Comment 25 Andre Miranda editbugs 2017-04-13 02:21:03 CEST
I get the same CRITICAL messages using the current master (10770a8):
git clone git://git.xfce.org/xfce/thunar && cd thunar
./autogen.sh
make
thunar/thunar

However if the pass --prefix=/usr to autogen.sh (or configure) the problem doesn't occur.
Comment 26 Andre Miranda editbugs 2017-05-23 02:03:28 CEST
Ahh, by the way, some folks and I have picked up where Jonas stopped and we are working the Thunar port to GTK-3 here:
https://github.com/andreldm/thunar

There were some guys starting separated efforts, so I decided to attempt this unification. Anyone can contribute reporting bugs and opening pull requests (much appreciated). I plan is to reach a minimal working Thunar, without obvious regressions (there are some) before pushing to git.xfce.org.
Comment 27 Andre Miranda editbugs 2017-09-12 04:54:53 CEST
The current git master is already ported to gtk3, if you find any bugs/regressions, please file bug reports for each of them.

Bug #12772

Reported by:
poma
Reported on: 2016-08-17
Last modified on: 2017-09-12

People

Assignee:
Xfce Bug Triage
CC List:
7 users

Version

Version:
unspecified

Attachments

Additional information