1. 05 May, 2019 1 commit
  2. 04 May, 2019 2 commits
    • Dylan McCall's avatar
      panel: Drag topmost maximized window · 03117d65
      Dylan McCall authored
      This makes it possible to drag a window which appears connected with the
      panel, even if it is not in focus. As a result, it should be easier to
      manipulate side-by-side windows.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=679290
      03117d65
    • Florian Müllner's avatar
      texture-cache: Keep aspect ratio for content images · 5520bb38
      Florian Müllner authored
      Images are loaded either with a supplied fixed size, or using the "native"
      dimensions of the file. When creating a content image from the loaded data,
      we currently simply apply this directly to the preferred size.
      
      This works usually fine: GdkPixbuf will always keep the aspect ratio, so
      if only one dimension is provided, the other will be adjusted accordingly:
      
      Loading a 200x200 image with a requested size of (100, -1) will result in
      a 100x100 content image.
      
      There is a catch though: GdkPixbuf will only scale *down* to the requested
      size, no up. That is, loading a 100x100 image with a requested size of
      (200, -1) will result in a 100x100 pixbuf. But as we assume that the pixbuf
      size matches the requested size, the image content ends up with 200x100.
      
      Fix this by explicitly handling the case where only one size was supplied,
      and make the other dimension take the aspect ratio into account
      
      GNOME/gnome-shell!525
      5520bb38
  3. 03 May, 2019 3 commits
  4. 02 May, 2019 1 commit
  5. 01 May, 2019 1 commit
  6. 30 Apr, 2019 5 commits
    • Florian Müllner's avatar
      dashSpacer: Don't trigger allocations from size negotiations · d5ebd8c8
      Florian Müllner authored
      If an actor's allocation is outdated, clutter_actor_get_allocation_box()
      will queue a relayout. That's why it's advised to not use the function
      unless the allocation is known to be valid (namely during paint), but
      in particular not from within get_preferred_width/height vfuncs.
      
      Using the :allocation property (which may be outdated) would be better,
      but in this case we can simply delegate the request to the correct actor.
      
      GNOME/gnome-shell#1065
      d5ebd8c8
    • Carlos Garnacho's avatar
      keyboard: Destroy old layout actors when regenerating keyboard groups · ed999ce9
      Carlos Garnacho authored
      We were cleaning up self._groups, but the actors for all previous
      groups/layers/modes would remain attached to the aspect container,
      simply hidden.
      
      Under some circumstances this can really make the amount of actors
      in the shell stage to quickly ramp up, it's not just a "leak" but
      also has potential side effects on performance.
      
      We should destroy all child actors of this._aspectContainer, except
      the static ones (emoji and keypad).
      
      While at it, fix this._groups re-initialization, as it's actually an
      object, not an array.
      
      GNOME/gnome-shell!523
      Closes?: GNOME/mutter#556
      ed999ce9
    • Florian Müllner's avatar
      worldClocks: Ignore locations with unknown timezone · 50b77390
      Florian Müllner authored
      We currently assume that every location has an associated timezone.
      While this is sound in the real world, in practise it depends on
      whether or not libgweather can find a corresponding timezone DB
      entry.
      
      This used to be a fringe case, but has become more likely when commit
      GNOME/libgweather@d7682676 moved
      weather stations from cities to countries - the station itself is un-
      likely to have a timezone entry, and the country may be part of more
      than a single timezone.
      
      It would be good for libgweather to return a timezone for those
      locations again, but we should defend against the case anyway.
      We cannot tell what time it is at a particular location without
      knowing the timezone, so simply filter them out.
      
      GNOME/gnome-shell#1062
      50b77390
    • Carlos Garnacho's avatar
      st: Reload icon on style changes only if necessary · 94995e9c
      Carlos Garnacho authored
      The parameters that may affect the icon on ::style-changed are more size
      related than visual (we listen to icon theme changes for the latter). It
      makes sense to just update the icon if the size came out different.
      
      GNOME/gnome-shell!524
      94995e9c
    • Carlos Garnacho's avatar
      st: Use g_signal_handler_disconnect() to disconnect from StTheme · fb04dafb
      Carlos Garnacho authored
      With a high enough amount of actors, there may be enough theme nodes and
      signal connections on StTheme::custom-stylesheets-changed that
      g_signal_handlers_disconnect_by*() on dispose becomes expensive, this may
      become a surprisingly hot spot in StWidget::style-changed.
      
      Keep the handler ID around and use g_signal_handler_disconnect() to avoid
      linear lookups for the matching func/data.
      
      GNOME/gnome-shell!524
      fb04dafb
  7. 29 Apr, 2019 1 commit
    • Florian Müllner's avatar
      panel: Don't chain up to parent's allocate · d57234be
      Florian Müllner authored
      The top bar handles allocating all its children itself, so there's
      little value in chaining up to st_widget_allocate() and get the
      default layout manager allocating all children again (and possibly
      differently).
      
      If this happens, we end up with an infinite allocation cycle with
      corresponding performance penalty. Fix this by just doing and what
      Shell.GenericContainer did before commit 286ffbe2 replaced it,
      and not chain up to StWidget.
      
      Thanks to Robert Mader for debugging the issue.
      
      GNOME/gnome-shell#1054
      d57234be
  8. 27 Apr, 2019 4 commits
  9. 26 Apr, 2019 8 commits
  10. 25 Apr, 2019 1 commit
  11. 24 Apr, 2019 1 commit
  12. 23 Apr, 2019 2 commits
  13. 22 Apr, 2019 1 commit
  14. 19 Apr, 2019 1 commit
  15. 18 Apr, 2019 2 commits
  16. 17 Apr, 2019 6 commits