files-view: make search robust
This is the last patch of a series of patches to fix all the related issues with search synchronization, robustness on search, etc. This patch orders fix when the view is requested to load a search directory. This is tricky because the views expect real locations, and when a caller sets the view to start searching the view expect to already have a real location loaded, so it can set the invented search directory with the model as a backing uri. In the case that window slot request a search directory, we are screwed, because either we load first the real backing uri, which will screw the window slot and all of the connected users of the view when the is-location signal is done, or we first set the query and then load the search directory, which will screw it anyway because the real location set up at that point in the view is not the one associated with the search directory. So we effectively need to do both at the same time. To do that, implement a set_search_query_internal which will allow us to pass a backing uri, so when the slot sets a location that is a search directory, instead of loading the directory itself, we only set the query indicating the real location behind, so it can set up everything in the search directory before loading it. This patch was done with a few things in mind, and it actually fixes few other issues. For example, now then we reuse the directory from the slot, we actually create a new search directory, so we actually don't reuse it. The point for this is because if we reuse the directory, any stop to the search directory will stop the future search that we just set. This happens when the slot stops the old view to load (which had the same search directory before this patch) after setting the new view to load. A better fix would be to get rid of the nautilus-search directory invention or to make it only internal, and make the window-slot be aware when a location was also searching (with a struct instead of using nautilus-bookmarks). https://bugzilla.gnome.org/show_bug.cgi?id=759717
parent
2d5ea4d4