Commit Graph

52 Commits

Author SHA1 Message Date
Florian Müllner e372c5ace8 window-list: Avoid flashing when using auto-grouping
Currently when using auto-grouping, the list is ungrouped each
time a window is closed, and then possibly re-grouped on the next
allocation - as a result, there is a brief "ungroup flash" if the
list is supposed to remain grouped.
Avoid this by computing the width the ungrouped list would have
rather than by actually ungrouping it.

https://bugzilla.gnome.org/show_bug.cgi?id=738286
2014-10-11 00:06:59 +02:00
Florian Müllner 614d1c9697 window-list: Fix spacing in app buttons 2014-10-07 20:01:56 +02:00
Florian Müllner 70056ba56e window-list: Don't unnecessarily add/remove window buttons
Since commit 191c7ccc24, we check whether we already have a window
in the list before re-adding it on MetaWorkspace::window-added.
We can do something similar on MetaWorkspace::window-removed to
avoid some extra work when a window is moved between workspaces
rather than destroyed.
2014-10-07 18:57:45 +02:00
Florian Müllner 4af36f41fa window-list: Don't use Meta.get_window_actors() directly
The list returned may contain windows that are being destroyed.
The ShellGlobal method filters those out, so use that instead; we
should eventually stop looking at window actors when we want windows,
but for now this is the easy and safe thing to do.
2014-10-07 17:19:00 +02:00
Florian Müllner 60ea0fb172 Stop using deprecated GSettings:schema property 2014-10-07 14:38:12 +02:00
Florian Müllner 191c7ccc24 window-list: Do not add sticky windows more than once
When a window's on-all-workspaces property changes to true, the
workspaces the window was not located on will emit the ::window-added
signal for the window; however we don't want multiple buttons for
the same window, so filter out the extra calls.

https://bugzilla.gnome.org/show_bug.cgi?id=736398
2014-09-11 12:13:10 +02:00
Florian Müllner 5616a6deae window-list: Expand workspace button for Fitts'ability
The workspace button used to extend to the bottom edge, which of
course is A Good Thing (tm) - commit ec8f269107 broke this when
it added an additional container to the hierarchy, expand the
button again to bring back the old mouse-friendly behavior.

https://bugzilla.gnome.org/show_bug.cgi?id=708247
2014-09-03 14:50:35 +02:00
Florian Müllner db04866ca2 window-list: Use Infinity instead of special-casing 0
This should fix the problem addressed in the last commit without
breaking 0 as stable sequence.
2014-05-27 19:27:43 +02:00
Florian Müllner f93234e442 window-list: Fix stupid thinko
Without special casing the start value of 0, we did not reduce
to the minimum stable sequence of app windows, but 0.
2014-05-27 19:06:22 +02:00
Florian Müllner d8eb2273c0 window-list: Sort buttons by stable sequence
Currently the initial set of buttons is in stack/MRU order. To
avoid shuffling around the list each time it is disabled/re-enabled
(lock screen) or the group-mode settings changes, sort it by the
stable sequence.

https://bugzilla.gnome.org/show_bug.cgi?id=719933
2014-04-29 19:08:26 +02:00
Florian Müllner f007807ea1 window-list: Don't shift message tray when on different monitors
The message tray is moved to the bottom-most monitor when there are
monitors below the primary monitor; in that case, we need to leave
the tray alone.

https://bugzilla.gnome.org/show_bug.cgi?id=728288
2014-04-17 18:34:25 +02:00
Giovanni Campagna a42dcee6ec WindowList: allow switching windows with mouse scroll
This is something that gnome-panel supported, and apparently
some users would like to have it back, so restore this feature
on our window list too.

https://bugzilla.gnome.org/show_bug.cgi?id=723693
2014-02-19 17:21:45 +01:00
Florian Müllner 3cde65e85e window-list: Call destroy() on menus instead of their actors
PopupBaseMenu provides a destroy() method that will destroy the menu
actor and make sure that the menu will be removed from the corresponding
PopupMenuManager (if any). We miss the latter when we destroy the menu
actor directly, so use the menu method instead.

https://bugzilla.gnome.org/show_bug.cgi?id=724688
2014-02-18 21:12:16 +01:00
Florian Müllner b87ddf1195 window-list: Only have a single context menu at any time
Depending on the number of windows, AppButtons use different right-click
menus ("Minimize" vs. "Minimize all").
As the menu for the multiple-windows case remains the same, it is created
and added just once. However this means that in the single-window case,
the corresponding PopupMenuManager will track two menus for the same
source actor, resulting in various misbehaviors.
Fix these issues by adding and removing the app context menu appropriately,
so that the PopupMenuManager tracks a single menu at any time.

https://bugzilla.gnome.org/show_bug.cgi?id=724688
2014-02-18 21:12:16 +01:00
Florian Müllner c2fe2b5505 window-list: Sync hover after closing menus
StButton takes the hover state into account to decide whether a
series of events should be considered a click. So when dismissing
a menu by clicking on a different window/app button, its menu
cannot be triggered before leaving and re-entering the button
(and thus syncing the hover state).
Fix this by always syncing the hover state after a grab is dropped.

https://bugzilla.gnome.org/show_bug.cgi?id=724688
2014-02-18 21:12:16 +01:00
Florian Müllner c9a4d15f05 window-list: Filter skip-taskbar windows
Applications now track all their windows, not just the ones that are
expected to show up in the window list. So to restore the previous
behavior, we now have to filter out windows with the skip-taskbar
hint ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=724134
2014-02-11 17:58:14 +01:00
Florian Müllner 9c6c00f8a3 window-list: Restrict right-click actions to windows in list
While the list of windows in the left-click menu is filtered by
workspace, the minimize/maximize/close actions in the right-click
menu apply to all application windows on all workspaces.
This is fairly confusing, so restrict the actions to only apply
to windows that do appear in the left-click list.

https://bugzilla.gnome.org/show_bug.cgi?id=724134
2014-02-11 17:58:14 +01:00
Florian Müllner 9c23b52c1e window-list: Update keyboard position on fullscreen changes
The visibility of the window list changes when a monitor enters or
exits fullscreen, so we should update the OSK position accordingly.

https://bugzilla.gnome.org/show_bug.cgi?id=723693
2014-02-06 19:51:19 +01:00
Giovanni Campagna ff64bb5432 Revert "window-list: fix overview animation"
This reverts commit bf789608df.
Pushed by mistake.
2014-02-05 17:28:16 +01:00
Giovanni Campagna bf789608df window-list: fix overview animation
Animate showing and hiding the window list when toggling the
overview (with a translation on and off the screen). Don't actually
change the visible status of the actor, because we don't want
to change struts.
2014-02-05 17:27:36 +01:00
Giovanni Campagna 2bf50a76ed window-list: fix font-style of notifications
Notifications are reparented to the bottom panel when there is
one, so they would inherit the bold font. Avoid that.
2014-02-05 01:08:45 +01:00
Giovanni Campagna 66216993e0 window-list: import gettext for the right domain
Default _ is gettext from gnome-shell domain, which doesn't have
the strings we need.
We could use mutter's, but translators already did their job
on pretty much all supported languages, so...
2014-02-05 00:50:27 +01:00
Giovanni Campagna 68adf77012 window-list: update for gnome-shell changes
Shell.WindowTracker.is_window_interesting() was removed, and
replaced with the skip_taskbar MetaWindow property.
2014-02-05 00:42:25 +01:00
Giovanni Campagna 53e9074058 window-list: remove our use of Hash module
It was removed in core shell and replaced with ES6 Map.
2014-01-16 20:00:44 +01:00
Piotr Drąg 23981289d5 Fix a translatable string
So the old gettext would pick it up. Not a string freeze break.
2013-09-15 02:43:12 +02:00
Giovanni Campagna cccd46b513 window-list: insist more that the indicators should be at the very right end
The new box layout is just annoying...
2013-09-05 10:30:20 +02:00
Giovanni Campagna ec8f269107 window-list: fix regression from StBoxLayout refactoring
Make sure that the workspace indicator is always packed at the
end of the window list
2013-09-03 10:34:13 +02:00
Florian Müllner f1f16f262b window-list: Add context menu
gnome-panel's window list had context menus on buttons, that gave
easy access to common operations like close, minimize and maximize.
Add something similar to the window-list.

https://bugzilla.gnome.org/show_bug.cgi?id=699251
2013-08-19 10:21:23 +02:00
Giovanni Campagna 2e5d8c7384 Fix a number of undeclared variable warnings
"for (prop in object)" needs a "var prop" before, or it declares
a global property.
2013-07-30 13:23:47 +02:00
Giovanni Campagna 274a6f040c Update descriptions of extensions
Mark classic mode extensions as such, so bug reports don't go
lost in my inbox.
2013-05-20 19:06:59 +02:00
Florian Müllner 45767c93d5 window-list: Make bottom panel taller in classic mode
Consider additional borders in classic styling for the panel height.

https://bugzilla.gnome.org/show_bug.cgi?id=698169
2013-05-13 22:01:01 +02:00
Florian Müllner f38d61b4c9 window-list: Use notify::n-workspaces to recreate workspace menu
When the number of workspaces changes, we clear the existing menu
and recreate it based on the screen::n-workspaces property, so it
is slightly more correct to track changes to the property directly
instead of using the workspace-added/workspace-removed signals.
This change also fixes a corner case, where changes to the property
before workspaces are initialized are missed and we end up with the
wrong number of workspaces.

https://bugzilla.gnome.org/show_bug.cgi?id=699350
2013-04-30 21:54:05 +02:00
Florian Müllner 8628addfc9 window-list: Adjust to PopupMenu API change
setShowDot() has become setOrnament().

https://bugzilla.gnome.org/show_bug.cgi?id=699335
2013-04-30 17:49:48 +02:00
Giovanni Campagna c1bc688a5c WindowList: add a workspace switching menu
Import a copy of the workspace indicator extension, to have it
in the bottom panel.

https://bugzilla.gnome.org/show_bug.cgi?id=694914
2013-04-16 22:00:39 +02:00
Florian Müllner 360ba43579 window-list: Add support for AUTO grouping
In addition to "always" and "never", gnome-panel supported an "auto"
grouping mode, which only started to group items when running out of
available space. It makes sense for us to support the same option in
the window-list extension, so implement it.

https://bugzilla.gnome.org/show_bug.cgi?id=697157
2013-04-16 20:05:27 +02:00
Florian Müllner 1a41b639ef window-list: Don't rely solely on -st-natural-width
-st-natural-width is useful to request a larger-than-usual width,
add back the max-width removed in commit 702cf52cfc to also request
a smaller-than-usual width as necessary.
2013-04-16 20:05:26 +02:00
Florian Müllner 702cf52cfc window-list: Fill max-width if possible
Items in the window list should take up a fixed amount of space
unless the list is full and items need to shrink. To achieve this,
replace the max-width with the newly added -st-natural-width.

https://bugzilla.gnome.org/show_bug.cgi?id=695392
2013-04-16 18:10:16 +02:00
Matthias Clasen 689dda0515 Revert "window-list: add a workspace switcher"
This reverts commit f86f09955b.

Pushed by accident.
2013-04-08 20:25:33 -04:00
Giovanni Campagna f86f09955b window-list: add a workspace switcher
This is the most basic version of a workspace switcher, taken from
Frippery Bottom Panel and adapted. It handles clicks and scrolls,
and does not show window thumbnails or shapes.
Note that, differently from the frippery version, it won't change
the workspace layout, and actually assume a linear vertical layout,
which is then shown horizontally. This is to keep compatibility
with the overview, which uses a vertical layout.

https://bugzilla.gnome.org/show_bug.cgi?id=694914
2013-04-08 10:19:26 -04:00
Florian Müllner 46a216853f window-list: Update icons on icon theme changes
https://bugzilla.gnome.org/show_bug.cgi?id=697400
2013-04-07 21:11:31 +02:00
Rui Matos 6adeed4e60 window-list: Fix preferences radio buttons not reflecting the setting
When setting GtkRadioButton's group property, its active property is
also set as a by-product. This means that setting these properties
isn't commutative which arguably is a bug in gtk+ but one that we can
easily work around by just switching the order here.

https://bugzilla.gnome.org/show_bug.cgi?id=697495
2013-04-07 21:00:51 +02:00
Florian Müllner a97d08a2d2 window-list: Set metaWindow for single-window items when grouped
When grouping is enabled, items that are only have a single window
associated are still expected to behave like ungrouped items.
This includes activating windows by DND, which uses the metaWindow
property on the hovered actor's _delegate, so make sure it is set
on AppButtons in single-window mode as well.

https://bugzilla.gnome.org/show_bug.cgi?id=693561
2013-04-04 18:09:46 +02:00
Florian Müllner 91aa1cfbc0 window-list: Activate window on hover during drag operations
Reimplement the common task list behavior of activating windows
when hovering over a task list item during a drag operation.

https://bugzilla.gnome.org/show_bug.cgi?id=693561
2013-04-04 18:09:46 +02:00
Giovanni Campagna d212a2f26d WindowList: fix behavior on fullscreen
LayoutManager will take care of our visibility, but we need to
adjust the message tray anchor point manually. Also, we must not
show ourselves when coming out of the overview if we're in fullscreen.

https://bugzilla.gnome.org/show_bug.cgi?id=696929
2013-04-02 23:05:57 +02:00
Florian Müllner 8688596e80 window-list: Fix updating message tray anchor
After recent overview changes, we may end up with the message tray
showing partially in the overview when the window-list extension
is enabled. Adjusting the anchor explicitly when entering/leaving
the overview fixes the issue, requiring less code.

https://bugzilla.gnome.org/show_bug.cgi?id=695390
2013-03-08 14:08:01 +01:00
Florian Müllner 0bd8966115 window-list: connect_after() to 'window-added'
We switched from using the window icon to using the associated
application's icon; however when we create the window list item
from a handler to the 'window-added' signal, the association of
window and application might not exist yet, as WindowTracker uses
the same signal to create the association. Use connect_after()
for creating the window list item to make sure that WindowTracker's
signal handler has run already.

https://bugzilla.gnome.org/show_bug.cgi?id=695389
2013-03-08 14:08:00 +01:00
Florian Müllner 040c106c7b window-list: Always use ShellApp icon rather than _NET_WM_ICON
We currently use the application icon for items that are grouped
by application and the window icon otherwise. However with the
icon property being unused anywhere else in GNOME3, applications
have started to not set any window icon at all.
Rather than complaining to application authors, switch to using
the app icon everywhere, which improves consistency with the rest
of GNOME3 anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=694850
2013-03-02 20:58:15 +01:00
Florian Müllner a1c938d3d9 window-list: Add classic mode styling
Classic mode uses a distinct visual style, support this by shipping
a dedicated stylesheet.

https://bugzilla.gnome.org/show_bug.cgi?id=693171
2013-02-05 20:09:16 +01:00
Florian Müllner f23197e09e window-list: Add a small preference UI
https://bugzilla.gnome.org/show_bug.cgi?id=693171
2013-02-05 20:09:11 +01:00
Florian Müllner a4fe08d53d window-list: Add option for grouping windows by application
https://bugzilla.gnome.org/show_bug.cgi?id=693171
2013-02-05 20:09:00 +01:00