Skip to content

filechooserwidget: Disconnect settings signal on dispose

Settings signal was not being disconnected on dispose causing application crash when user changed icon theme after dialog disposal.

First commit from this MR is an actual bug fix, while second is a code optimization aimed to reduce duplicated part of that disconnect settings code and not getting display for widget if there isn't any need to do so.

This is what happens (without this MR) when trying to change icon theme AFTER filechooser disposal:

Thread 1 received signal SIGSEGV, Segmentation fault.
0x00007fffe1103b4e in _gtk_file_system_model_clear_cache (model=0x555555a3af48, column=8) at ../gtk/gtkfilesystemmodel.c:2040
2040	  g_return_if_fail (GTK_IS_FILE_SYSTEM_MODEL (model));
(gdb) bt full
#0  0x00007fffe1103b4e in _gtk_file_system_model_clear_cache (model=0x555555a3af48, column=8) at ../gtk/gtkfilesystemmodel.c:2040
        __inst = 0x555555a3af48
Python Exception <class 'gdb.error'> No type named TypeNode.: 
        __t = 
        __r = <optimized out>
        _g_boolean_var_ = <optimized out>
        i = <optimized out>
        start = <optimized out>
        end = <optimized out>
        changed = <optimized out>
        __func__ = "_gtk_file_system_model_clear_cache"
#1  0x00007fffe0f0596e in clear_model_cache (column=8, impl=0x5555566f9d20) at ../gtk/gtkfilechooserwidget.c:1543
        name = <optimized out>
#2  change_icon_theme (impl=0x5555566f9d20) at ../gtk/gtkfilechooserwidget.c:3181
        name = <optimized out>
#3  settings_notify_cb (object=<optimized out>, pspec=<optimized out>, impl=0x5555566f9d20) at ../gtk/gtkfilechooserwidget.c:3196
        name = <optimized out>

Merge request reports