1a27ff6130
The calculation of how many results can be shown in GridSearchResults is broken: The width of the parent container (resultsView.actor) we're using as the maximum width right now is the width of the scrollView of SearchResults (which always expands to the whole screen size). This width will only be correct if the scrollView (ie. the whole screen) is smaller than the max width of searchResultsContent, which only is the case for screens smaller than 1000px. To fix the calculation, use the width of our own actor and don't get it using clutter_actor_get_width(), but using the last allocation of the actor. This way we don't get the preferred width if the actor is not allocated at this point (it's hidden by _ensureProviderDisplay() when starting a new search). Then, when the allocation of the actor changes, rebuild the grid search results by calling updateSearch() with the old arguments to ensure the number of visible results is correct. The fact that we're only listening for allocation changes here is the reason why we never want to use the preferred width of the actor inside _getMaxDisplayedResults(): While the actor is hidden clutter_actor_get_width() would return the preferred width, which we'd then use the as the maximum width. But if the actor had a correct allocation before, no notify::allocation signal will be emitted when the actor is shown again because the allocation is still the same, and we'll end up using the preferred width as maximium width forever. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/110