Previously, we initialized actor stacking order from the return
value of global.get_windows() once, which is defined to be in
stack order. However it was not updated later. Furthermore,
the way stackAbove was called from onAnimationComplete in
WindowClone was highly dubious, since there are lots of animations
which apply to the clones, and we want the stacking to be right
all of the time, not when some animation completes.
Fix this by connecting to 'restacked' on the screen and syncing
the clones.
I also snuck in another bugfix here; we weren't disconnecting
from the 'showing' signal handler, which had various bad
consequences.
https://bugzilla.gnome.org/show_bug.cgi?id=596263
js/ui/calendar.js: Generic calendar widget
tests/interactive/calendar.js: Basic test of the calendar
js/ui/panel.js: Add a pop-down from the clock that shows a
calendar widget. The pop-down is not menu-like to allow the user to
interact with an application while looking at the calendar.
gnome-shell.css: Add theming for calendar, calendar popup, and for
buttons on the panel
https://bugzilla.gnome.org/show_bug.cgi?id=596432
Remove the StTable specific methods to add actors:
st_table_add_actor()
st_table_add_actor_with_properties()
Since they shadow the generic ClutterContainer add_actor() method,
and patch in our add() convenience function as we do for
StBoxLayout.
https://bugzilla.gnome.org/show_bug.cgi?id=596811
Instead of using "Monospace", pick the users configured monospace font
name up from GConf. (This is a nice touch, but is more done here to
demonstrate that we can do it rather than for any great utility.)
https://bugzilla.gnome.org/show_bug.cgi?id=591245
* Style aspects like colors and fonts are moved into gnome-shell.css.
* Scrolling is adding using StScrollView.
Based on a patch from Colin Walters
https://bugzilla.gnome.org/show_bug.cgi?id=591245
ShellTheme replaces both StStyle and ccss_stylesheet_t.
The interface StStylable is replaced by usage of ShellThemeNode.
A concrete node class allows some significant optimizations of property
inheritance that would have been much more difficult to achieve with
the highly abstract pair of StStylable and ccss_node_t.
Some operations that were previously on StStylable (like the
::style-changed signal) are directly on NtkWidget.
Custom properties are no longer registered as param-specs; instead you
call directly into shell theme node to look up a length or color:
shell_theme_node_get_length (theme_node, "border-spacing", FALSE, &spacing);
The dependency on libccss is dropped, while preserving all existing
functionality and adding proper parsing and inheritance of font properties
and proper inheritance for the 'color' property.
Some more javascript tests for CSS functionality are added; workarounds for
a CSS bug where *.some-class was needed instead of .some-class are removed.
https://bugzilla.gnome.org/show_bug.cgi?id=595990
Install and distribute gnome-shell.css and theme images. They are moved
down from $datadir to $datadir/theme to avoid a weirdness where we have
images in $datadir and then also in $datadir/images.
(Also moved in the source tree to avoid adding another difference between
installed and uninstalled operation.)
https://bugzilla.gnome.org/show_bug.cgi?id=595989
js/ui/environment.js: Split out initial UI setup (Tweener initialization,
ClutterContainer monkey-patching) into a separate file we can import from tests.
tests/: Directory for various types of tests
tests/run-test.sh: Shell script that to run tests with an appropriate
environment set up.
tests/testcommon/: Common modules and data for tests
tests/interactive/: Interactive tests
tests/interactive/box-layout.js: A sample test of StLayout
https://bugzilla.gnome.org/show_bug.cgi?id=595987
Setting options for children added to StBoxLayout is not convenient
since we are missing the varargs methods of clutter_container.
Patch in:
child_set() - set properties of a child
add() - add a child and set properties (this is different from
clutter_container_add()! I think the deviation is
with avoiding the awkward name add_with_properties()
which is what might be expected. ClutterContainer
currently doesn't have a method like this at all.)
The code is written to allow patching into multiple ClutterContainer
classes but for now only StBoxLayout is patched, since it's the only
container we are using where we need to set options as properties.
https://bugzilla.gnome.org/show_bug.cgi?id=595419
Fix panel, app switcher, and looking glass to limit themselves to the
primary monitor, and run dialog to limit itself to the monitor
containing the currently-focused window.
The overview is also limited to the primary monitor now (with the
other monitors being blacked out), although the workspaces within the
overview are shaped like the full "screen" (the bounding box of all
monitors). To be fixed later.
https://bugzilla.gnome.org/show_bug.cgi?id=593060
Updated by Colin Walters <walters@verbum.org to monitor gconf
and use g_get_user_special_dir.
Signed-off-by: Adel Gadllah <adel.gadllah@gmail.com>
Signed-off-by: Colin Walters <walters@verbum.org>
https://bugzilla.gnome.org/show_bug.cgi?id=596933
Unlike icons in the application well, do not show the glow used to
indicate running apps. It is somewhat redundant here. These are all
running apps and it is fairly clear from the window list if there are
multiple instances available, according to mccann.
https://bugzilla.gnome.org/show_bug.cgi?id=590563
It slows things down, it's a slightly weird effect, and because the
window is still live while it's animating, you may see subwindows
being destroyed during the animation.
https://bugzilla.gnome.org/show_bug.cgi?id=596441
The text "Browse" used for the buttons on the dash section headers is a
little obscure and tends to translate into something that doesn't fit
well.
Going back to "More" will hopefully be more manageable in translation.
https://bugzilla.gnome.org/show_bug.cgi?id=596433
- Add spacing after Frequent, reduce it for the other app categories.
Put a small gap (one line) between Frequent and the other
categories to make it clear that it is something a little
different.
- Remove category icons from the applications menu.
Remove category icons; they aren't particularly helpful
(they are gone from the GNOME-2.28 menus too) and having them
in Applications Browse draws the eye to the wrong thing - the
category - rather than the right thing - the application icons.
https://bugzilla.gnome.org/show_bug.cgi?id=596435
The default AppIcon gray border color isn't very visible against a
dark gray background, but a white border looks too bold in the Well. So
allow the caller to override the AppIcon border color, so that the Well
can use gray-on-black and the AppSwitcher can use white-on-gray. (And
then revert the AppSwitcher back to the translucent gray background.)
https://bugzilla.gnome.org/show_bug.cgi?id=596337
The run dialog uses the "development_tools" gconf key to determine
whether funcions like "lg" or "restart" should be enabled, but it
failed to notice it on the run when said key changed. This commit
fixes this.
There are now 3 code paths in decreasing speed:
First, optimize subsearching more by just hiding the actors
that didn't match, since we know the ordering has to be right.
For initiating a search (or backspacing an existing one), again
instead of destroying and recreating actors, just temporarily
remove them and re-add them in the desired order.
Finally for when data has changed, use the old code path of
destroying all actors. (This itself could obviously be optimized
if we had a way to know that just one application changed, but
at the moment we don't).
https://bugzilla.gnome.org/show_bug.cgi?id=596119
We queue a 150ms timeout when the user starts typing to avoid searching
for the first keystroke. However, this caused us to change to the search
mode, but show the leftover state of the search displays from an
earlier search state.
Instead, just hide the results sections until we've actually performed
the current search once.
https://bugzilla.gnome.org/show_bug.cgi?id=596119
This is probably not the biggest optimization that needs to be
made at least for application searching, but we can optimize the
case where we're going from a search of "fi" to "fire" by just
re-searching the list of things we already had that matched "fi"
instead of looping over everything.
https://bugzilla.gnome.org/show_bug.cgi?id=596119
This fixes a regression where we weren't using the correct event
timestamps, because for both of these we were sending an XClientMessage
to ourself.
https://bugzilla.gnome.org/show_bug.cgi?id=596262
First eliminate the variable WELL_ITEM_HSPACING since it was 0
and thus effectively was not used.
Add a new variable WELL_ITEM_MIN_HSPACING which is the minimum
space between grid items we allow. When computing layout, allow
for a number of columns less than 4 by using the minimum item
size.
https://bugzilla.gnome.org/show_bug.cgi?id=595023
Based on a patch from Colin Walters.
For various reasons I'd like a method which allows evaluation; say
log in from another machine and run "gnome-shell --repl" or something.
Also as a possible solution for the screensaver X grab issue, add
a (read/write) property "OverviewActive".
https://bugzilla.gnome.org/show_bug.cgi?id=596102
The menu is needed by the app switcher as well as the overview, so
make it slightly more generic and move the code to appIcon. Also add
support for drawing the menu either to the right of or below the icon.
https://bugzilla.gnome.org/show_bug.cgi?id=590563
Rather than having the mapping from window into "slots" (or
possible positions in the workspaces) be dependent on stacking
order, compute the minimum-motion which is a vector from one
top left corner to another. This order won't change as long
as the window set and their positions stay fixed.
There are two minimum motion algorithims; one simply computes
all possible placements by permuting the window list, up to
a current maximum of 5 windows. Past that (which also happens
to be the number where we switch to a grid), we use a "greedy"
algorithm which for each slot, finds the window with least motion
for that slot.
To break any ties, we use an internal integer in MetaWindow which
enumerates the order in which windows were created.
https://bugzilla.gnome.org/show_bug.cgi?id=582654
The "lightbox" effect had support for highlighting a particular
rectangular region on the taskbar when Alt-Tabbing to a minimized
window. Since we no longer use the taskbar, this code is just cruft
now.
Part of https://bugzilla.gnome.org/show_bug.cgi?id=590563
Refactor the current menu code to support both window selection
and "normal" menu items. Add a "New Window" item which does what
you'd expect.
Clean up the way we handle highlighting the window items to be
more direct; rather than looping over all items in most cases,
just directly manipulate one item
https://bugzilla.gnome.org/show_bug.cgi?id=594557
There are few uses for being able to exit the shell directly; my
current one is that the gtype debug infrastructure is implemented
as an atexit() handler.
This isn't a long-term solution; what we really want is for Alt-F2 to
just be an application search with a hack to detect shell commands,
but in the short term this allows us to run the magic 'lg' command
from the overview.
https://bugzilla.gnome.org/show_bug.cgi?id=595116
Rename beginModal/endModal to pushModal/popModal. All of the current callers
just want to ensure that we're in a modal state; they don't actually need to
fail if we already are.
These functions also now take the Clutter keyboard focus, while recording
the previous focus.
https://bugzilla.gnome.org/show_bug.cgi?id=595116
When we had a filtered set of windows, and want to exit the overview
into a particular window, what we do is re-show all the old windows
first, but don't reset the scaling on them. This will involve
some overlapping, but that's not a big deal because we'll immediately
get overlap anyways in the normal case zooming the windows back.
https://bugzilla.gnome.org/show_bug.cgi?id=594699
When the user click+hold+release over the icon, the effect we want
is for the menu to stick around.
Also, allow the user to mouse over the actual windows and select
them directly. If the user mouses over a window, reflect that in
the menu.
https://bugzilla.gnome.org/show_bug.cgi?id=594699
Callers will generally expect _popup and _popdown to be a no-op if
the menu is already in that state; make it so.
Also change the 'popdown' signal to be 'cancelled'; this is
clearer and allows us to avoid having activate also call popdown.
https://bugzilla.gnome.org/show_bug.cgi?id=594699
There are ton of different kinds of mouse even handlers in the overview;
WindowClone has several mouse-enter/leave handlers, we still have a variety
of classes not ported to ButtonBox and so incorrectly handling double-click,
etc.
Since we at present don't have anything in the overview area for which
it makes sense to interact with during the animation, create a transparent
event-eating box which we raise to the top during the animation.
https://bugzilla.gnome.org/show_bug.cgi?id=594074
controls if there is only one page of results
This makes the search results display more streamlined.
Make sure that we move the selection to a different section if we are going
from displaying a single section to displaying all and the section that
used to be displayed alone doesn't have any results.
When the user click+hold+release over the icon, the effect we want
is for the menu to stick around.
Also, allow the user to mouse over the actual windows and select
them directly. If the user mouses over a window, reflect that in
the menu.
We will be adding more search results sections, so we should store the intended
order of the search results sections and their properties in an array of data
structures.
This information allows us to have generic code for creating the search results
sections, moving the selection between them and transitioning between showing
all sections and a single section.
Rather than starting lightboxing only when the mouse enters the
menu, start it when an application filter is set.
Also delete a stale function in WindowClone from previous work.
http://bugzilla.gnome.org/show_bug.cgi?id=594555
Before Clutter gained accessors for event information, we had
shell_global_ functions. Now that Clutter has them, use them and
delete the ShellGlobal code.
http://bugzilla.gnome.org/show_bug.cgi?id=594561
Show the errors to the user instead of silently logging them to the terminal,
also rework positioning to get rid of magic numbers.
Signed-off-by: Adel Gadllah <adel.gadllah@gmail.com>
http://bugzilla.gnome.org/show_bug.cgi?id=593840
When we have multiple windows for an application, implement the following
behavior:
* On click + immediate release, go to the most recently used
* On click, hold for 0.6s, pop up a menu with windows, filtering
the window list to just those windows.
Mouse over on the window list highlights the moused-over window.
Implement this by splitting well item into InactiveWellItem
and RunningWellItem, sharing a base class BaseWellItem.
Checking if an item is under the pointer by calling stage.get_actor_at_pos()
synchronously will trigger a too-early allocation of the stage. Use an idle
at Meta.PRIORITY_BEFORE_REDRAW. (Before 553503d it was using a 5 msec timeout,
553503d made it synchronous.)
http://bugzilla.gnome.org/show_bug.cgi?id=592608
Display the mounted volumes in the places section of the overlay.
Signed-off-by: Adel Gadllah <adel.gadllah@gmail.com>
Signed-off-by: Colin Walters <walters@verbum.org>
For some use cases we have other behavior on mouse press and want
to manually control when a drag starts. Split out the drag initiation
code into startDrag.
There is no need to show two headers when we are only displaying a single
section of search results, so we merge the section header with the main
header in that case.
Show a back button on the left of the main header to get back to the results
for all sections.
Remove this._showTooltip flag from SearchSectionHeader because we no longer
show this type of header when we want to suppress the tooltip.
Add this._appSearchResultsOnlyShown and this._docSearchResultsOnlyShown
flags to track when a single section is shown more cleanly.
We no longer need the timeout for checking if an item is drawn under
the pointer because we display search results in the main pane and there is
no lowering/raising of other overview actors going on as the results are
being displayed.
Select an item by default when the search results are displayed.
Enable moving from one section of search results to another with key navigation.
Reset the selection when the search is updated or a new page is displayed
or the transition between viewing multiple sections and viewing just one is made.
The windows we considered for both the app monitor and the overview
workspaces were the same, but the code was duplicated once in C, once
in Javascript.
Make Button class purely about adding visuals, and use ShellButtonBox
for behavior. API equivalences:
shell.button => shell.actor [for consistency]
staysPressed parameter to constructor => replaced by manually setting
the 'active' property of button.actor as appropriate
pressIn/release => button.actor.active = true/false
enter-event/leave-event signals => button.actor notify::hover
Along the way, this fixes a bug with the user status menu where it was
not getting set to active because the button was getting a leave
(triggered by the menu popping up and grabbing the pointer) before for
button release, which disabled the staysPressed behavior.
Reported by Michael Meeks
http://bugzilla.gnome.org/show_bug.cgi?id=593471
Use bigger font and brighter color for the search results section headers.
Add more padding.
Display "(see all)" tooltip in the section headers on mouse-over.
(Still TODO: supressing that tooltip when all results are already being shown.)