Compare commits

...

39 Commits

Author SHA1 Message Date
frederik.feichtmeier
e1b7d77f18 Icon tile changes
- use the medium radius
- make checked tiles less hardcore black
- adjust folder popup bg color to checked tiles
2019-06-15 18:32:18 +02:00
Feichtmeier
40340865f7 Don't raise hover btn 2019-06-06 17:28:04 +02:00
Feichtmeier
7ec3d3debb Light/Dark GDM entry, add shadows to btns 2019-06-06 17:26:39 +02:00
Feichtmeier
6479518169 Darker GDM, better popover hover, and...
brighter hover color for the dark theme
 brightersearchresult description
2019-06-06 16:21:00 +02:00
Feichtmeier
f3ec452491 GDM and overview toggle btn changes
- try to simplify the look of the gdm buttons
- let the GDM entry look like the search entry
- use a gray/white/blue stripe for the overview toggle btns
2019-06-06 13:25:26 +02:00
Jakub Steiner
b14f79f455 theme: darken vignette
- instead of locally boxing in search results, darken the whole overview

Addresses https://gitlab.gnome.org/GNOME/gnome-shell/issues/288
2019-05-31 16:42:56 +02:00
Jakub Steiner
70bc9fc1c1 theme: experimental search entry
- bring back the golder 3.0 days
2019-05-31 15:45:47 +02:00
Jakub Steiner
23703cab7c theme: style search and results
- Improve legibility by using the OSD style for the results
 - Would be nice to include the search entry in the container
   and have a nice transition.

Addresses https://gitlab.gnome.org/GNOME/gnome-shell/issues/288
2019-05-31 15:40:26 +02:00
Jakub Steiner
e5e975956f theme: theme slider handle
matching gtk
2019-05-31 09:58:19 +02:00
Jakub Steiner
4de94f2ad7 theme: sync calendar menus with the rest
use :active and :hover colors like the rest
2019-05-31 09:44:31 +02:00
Jakub Steiner
f41e1ef6a6 theme: revert :hover and :active colors to gtk 2019-05-31 09:38:31 +02:00
frederik.feichtmeier
0d340a05e1 OSD bg and general border changes
- darker, less transparent OSD
- brighter OSD border
- no border for over view panels and entry
- fix border color of popups
- remove trough variable as osd trough and popup trough cant have the same color if dependant on fg_color, fixed hex could also work
- thinner workspace border
2019-05-30 20:30:09 +02:00
Jakub Steiner
932dff9e32 theme: adwaita:dark bg is lighter 2019-05-30 13:51:50 +02:00
Jakub Steiner
c101003354 theme: osd panels for overview
- light borders for Frederik
2019-05-30 13:12:20 +02:00
Jakub Steiner
6cab54f5f5 theme: regular buttons to match gtk 2019-05-30 12:54:52 +02:00
Jakub Steiner
d44da2c370 theme: rearrange header a bit
- makes sense to have (c) on top
2019-05-30 12:34:49 +02:00
Jakub Steiner
5df16ac5e9 theme: regular buttons :active state to match gtk 2019-05-30 12:31:53 +02:00
Jakub Steiner
8a08a00966 theme: get rid of the bubble prefix
- originally related to tweaking the osd style for use in dialogs,
  it no longer serves the purpose as dialogs are eithe rlight or dark
  and thus can use the colors directly.
2019-05-30 11:49:22 +02:00
Jakub Steiner
e4e55f9013 theme: simplify button drawing
- the original style was built on OSD colors and the conditionals no longer made any sense. In Adwaita:gtk the color conditionals special case the color buttons (warning and suggested tinting). This does not exist in the shell
2019-05-30 11:29:36 +02:00
Jakub Steiner
3bac00dc72 theme: match gtk sliders
- FIXME: currently unable to stle the slider itself
  color sets the background color but no way to style the border as
  far as I can tell gazing at js/ui/slider.js
2019-05-30 10:23:10 +02:00
Jakub Steiner
eed2d730bf theme: add light/dark switches 2019-05-30 09:38:00 +02:00
Jakub Steiner
a40752d1d0 theme: overview is OSD styled
FIXME: .show-apps-icon isn't colored for some reason
2019-05-30 09:26:12 +02:00
Jakub Steiner
7e5c16463a theme: keep variant around for HC 2019-05-30 09:03:09 +02:00
Jakub Steiner
125fa821fe Merge branch 'Light_bubbled_shell_theme' of gitlab.gnome.org:frederik.feichtmeier/gnome-shell into wip/jimmac/frederik-light 2019-05-30 09:01:10 +02:00
frederik.feichtmeier
38afdedbf7 Further improvements
- back to gtk styled popups
- smaller drop shadow for notifications
- no shadow for OSD
- fix high color
- move bubble colors back to common for now
2019-05-29 22:54:50 +02:00
Jakub Steiner
23576cd036 Revert "calendar-server: Port to libecal-2.0"
This reverts commit bd4aac8f49.
2019-05-29 18:03:47 +02:00
Feichtmeier
4fe64e43bc Use $variant for bubble colors, fix high-contrast 2019-05-29 17:14:37 +02:00
Feichtmeier
a350e69248 Shell theme renew
- light colored, bubble-like popovers, dialogues and notifications
- unified OSD colors for OSD elements
- small shadow for OSD elements to improve visibility above dark backgrounds
- small screenshield shadow improvements
- slightly bigger GDM buttons
- rounder buttons, rounder entries
- flatter entries
2019-05-29 14:47:42 +02:00
Piotr Drąg
5060aee7b2 shellMountOperation: Use a Unicode apostrophe in a new string
See https://developer.gnome.org/hig/stable/typography.html
2019-05-28 19:14:19 +02:00
Cosimo Cecchi
12bace2721 shell-global: don't warn when unsetting non-existent state
If the state we're trying to delete does not exist, do not log an
error.
Prevents this journal warning at startup:

gnome-shell[1082]: Could not delete runtime/persistent state file: Error removing file /run/user/1000/gnome-shell/runtime-state-LE.:0/screenShield.locked: No such file or directory

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/555
2019-05-27 08:36:17 -07:00
Cosimo Cecchi
2c45b5416e keyring-prompt: relax NULL check in remove_mnemonics()
Instead of considering a GValue containing a NULL string to be a
programmer error, simply return NULL.
remove_mnemonics() is in fact called on the value of the
"choice-label" property as well, which has NULL as its default
value.

This prevents triggering the following gnome-shell warning:

gnome-shell[1082]: remove_mnemonics: assertion 'label != NULL' failed

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/555
2019-05-27 08:36:11 -07:00
Cosimo Cecchi
96c2473317 modemManager: improve check for CDMA system identifier
Upon construction of the CDMA modem proxy, _reloadCdmaOperatorName()
is called and the value of the Sid property is read.
That property is defined as UINT32 in the D-Bus interface, but the
value may not be loaded yet after the proxy is constructed, in which
case its value will be null.

In _findProviderForSid(), we'll end up calling lookup_cdma_sid(null)
which fails with the following assertion:

gnome-shell[1082]: nma_mobile_providers_database_lookup_cdma_sid: assertion 'sid > 0' failed

This commit changes the (sid == 0) check in _findProviderForSid()
to (!sid) which will also catch the null case.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/555
2019-05-27 08:36:05 -07:00
Cosimo Cecchi
6359d6ef30 windowAttentionHandler: disconnect signals before destruction
The 'destroy' signal is emitted at the end of the destroy() method.
However the implementation of destroy() can end up emitting one of the
signals we connect to on the window, causing us to re-enter destroy
from its callback.
That will in turn lead to some objects getting disposed twice, which
produces a stack trace like the following one.

This commit fixes the issue by overriding the destroy() method instead
of connecting to the signal, which allows us to disconnect the signal
handlers from the window at an earlier time and avoid re-entrancy.

--

gnome-shell[1082]: Object Gio.Settings (0x7f0af8143f00), has been already deallocated — impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
org.gnome.Shell.desktop[1082]: == Stack trace for context 0x5627f7d1e220 ==
org.gnome.Shell.desktop[1082]: #0   5627f9e801a8 i   resource:///org/gnome/shell/ui/messageTray.js:238 (7f0aefa9eca0 @ 22)
org.gnome.Shell.desktop[1082]: #1   5627f9e80108 i   resource:///org/gnome/shell/ui/messageTray.js:802 (7f0aefaa2ee0 @ 28)
org.gnome.Shell.desktop[1082]: #2   5627f9e80070 i   resource:///org/gnome/shell/ui/windowAttentionHandler.js:79 (7f0aef7b29d0 @ 62)
org.gnome.Shell.desktop[1082]: #3   7fffa69fbfc0 b   self-hosted:979 (7f0aefa515e0 @ 440)
org.gnome.Shell.desktop[1082]: #4   5627f9e7ffe0 i   resource:///org/gnome/shell/ui/messageTray.js:121 (7f0aefa9e1f0 @ 71)
org.gnome.Shell.desktop[1082]: #5   5627f9e7ff38 i   resource:///org/gnome/shell/ui/messageTray.js:1408 (7f0aefaa58b0 @ 22)
org.gnome.Shell.desktop[1082]: #6   5627f9e7fe80 i   resource:///org/gnome/shell/ui/messageTray.js:1237 (7f0aefaa51f0 @ 729)
org.gnome.Shell.desktop[1082]: #7   5627f9e7fde8 i   resource:///org/gnome/shell/ui/messageTray.js:1055 (7f0aefaa3d30 @ 124)
org.gnome.Shell.desktop[1082]: #8   7fffa69ff8e0 b   self-hosted:979 (7f0aefa515e0 @ 440)
org.gnome.Shell.desktop[1082]: #9   7fffa69ff9d0 b   resource:///org/gnome/gjs/modules/signals.js:142 (7f0aefccb670 @ 386)
org.gnome.Shell.desktop[1082]: #10   5627f9e7fd58 i   resource:///org/gnome/shell/ui/messageTray.js:479 (7f0aefaa0940 @ 50)
org.gnome.Shell.desktop[1082]: #11   5627f9e7fcb8 i   resource:///org/gnome/shell/ui/messageTray.js:808 (7f0aefaa2ee0 @ 99)
org.gnome.Shell.desktop[1082]: #12   5627f9e7fc28 i   resource:///org/gnome/shell/ui/windowAttentionHandler.js:69 (7f0aef7b28b0 @ 13)
org.gnome.Shell.desktop[1082]: #13   5627f9e7fb80 i   resource:///org/gnome/shell/ui/main.js:566 (7f0aefcd8820 @ 216)
org.gnome.Shell.desktop[1082]: #14   5627f9e7fad0 i   resource:///org/gnome/shell/ui/windowAttentionHandler.js:103 (7f0aef7b2c10 @ 27)
org.gnome.Shell.desktop[1082]: #15   5627f9e7fa58 i   resource:///org/gnome/shell/ui/windowAttentionHandler.js:43 (7f0aef7b2700 @ 17)
org.gnome.Shell.desktop[1082]: #16   7fffa6a03350 b   resource:///org/gnome/gjs/modules/signals.js:142 (7f0aefccb670 @ 386)
org.gnome.Shell.desktop[1082]: #17   5627f9e7f9d0 i   resource:///org/gnome/shell/ui/messageTray.js:471 (7f0aefaa08b0 @ 22)
org.gnome.Shell.desktop[1082]: #18   5627f9e7f950 i   resource:///org/gnome/shell/ui/calendar.js:752 (7f0aefaabdc0 @ 22)
org.gnome.Shell.desktop[1082]: #19   7fffa6a048f0 b   self-hosted:979 (7f0aefa515e0 @ 440)
org.gnome.Shell.desktop[1082]: == Stack trace for context 0x5627f7d1e220 ==
org.gnome.Shell.desktop[1082]: #0   5627f9e801a8 i   resource:///org/gnome/shell/ui/messageTray.js:239 (7f0aefa9eca0 @ 42)
org.gnome.Shell.desktop[1082]: #1   5627f9e80108 i   resource:///org/gnome/shell/ui/messageTray.js:802 (7f0aefaa2ee0 @ 28)
org.gnome.Shell.desktop[1082]: #2   5627f9e80070 i   resource:///org/gnome/shell/ui/windowAttentionHandler.js:79 (7f0aef7b29d0 @ 62)
org.gnome.Shell.desktop[1082]: #3   7fffa69fbfc0 b   self-hosted:979 (7f0aefa515e0 @ 440)
org.gnome.Shell.desktop[1082]: #4   5627f9e7ffe0 i   resource:///org/gnome/shell/ui/messageTray.js:121 (7f0aefa9e1f0 @ 71)
org.gnome.Shell.desktop[1082]: #5   5627f9e7ff38 i   resource:///org/gnome/shell/ui/messageTray.js:1408 (7f0aefaa58b0 @ 22)
org.gnome.Shell.desktop[1082]: #6   5627f9e7fe80 i   resource:///org/gnome/shell/ui/messageTray.js:1237 (7f0aefaa51f0 @ 729)
org.gnome.Shell.desktop[1082]: #7   5627f9e7fde8 i   resource:///org/gnome/shell/ui/messageTray.js:1055 (7f0aefaa3d30 @ 124)
org.gnome.Shell.desktop[1082]: #8   7fffa69ff8e0 b   self-hosted:979 (7f0aefa515e0 @ 440)
org.gnome.Shell.desktop[1082]: #9   7fffa69ff9d0 b   resource:///org/gnome/gjs/modules/signals.js:142 (7f0aefccb670 @ 386)
org.gnome.Shell.desktop[1082]: #10   5627f9e7fd58 i   resource:///org/gnome/shell/ui/messageTray.js:479 (7f0aefaa0940 @ 50)
org.gnome.Shell.desktop[1082]: #11   5627f9e7fcb8 i   resource:///org/gnome/shell/ui/messageTray.js:808 (7f0aefaa2ee0 @ 99)
org.gnome.Shell.desktop[1082]: #12   5627f9e7fc28 i   resource:///org/gnome/shell/ui/windowAttentionHandler.js:69 (7f0aef7b28b0 @ 13)
org.gnome.Shell.desktop[1082]: #13   5627f9e7fb80 i   resource:///org/gnome/shell/ui/main.js:566 (7f0aefcd8820 @ 216)
org.gnome.Shell.desktop[1082]: #14   5627f9e7fad0 i   resource:///org/gnome/shell/ui/windowAttentionHandler.js:103 (7f0aef7b2c10 @ 27)
org.gnome.Shell.desktop[1082]: #15   5627f9e7fa58 i   resource:///org/gnome/shell/ui/windowAttentionHandler.js:43 (7f0aef7b2700 @ 17)
org.gnome.Shell.desktop[1082]: #16   7fffa6a03350 b   resource:///org/gnome/gjs/modules/signals.js:142 (7f0aefccb670 @ 386)
org.gnome.Shell.desktop[1082]: #17   5627f9e7f9d0 i   resource:///org/gnome/shell/ui/messageTray.js:471 (7f0aefaa08b0 @ 22)
org.gnome.Shell.desktop[1082]: #18   5627f9e7f950 i   resource:///org/gnome/shell/ui/calendar.js:752 (7f0aefaabdc0 @ 22)
org.gnome.Shell.desktop[1082]: #19   7fffa6a048f0 b   self-hosted:979 (7f0aefa515e0 @ 440)
gnome-shell[1082]: g_object_run_dispose: assertion 'G_IS_OBJECT (object)' failed
gnome-shell[1082]: Object Gio.Settings (0x7f0af8161750), has been already deallocated — impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
gnome-shell[1082]: g_object_run_dispose: assertion 'G_IS_OBJECT (object)' failed

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/555
2019-05-27 08:35:56 -07:00
Marco Trevisan (Treviño)
2f6323afc2 modalDialog: Use a Gobject property to manage the state
Make the state read-only while add a "private" function to set it and notify
when it changes.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/55
2019-05-24 16:28:18 -05:00
Marco Trevisan (Treviño)
d25bcbc3a7 modalDialog: Inherit from St.Widget
Make the dialog a widget itself, removing the `_group` property used for
handling the actor.

Update all the inherited classes to be also GObject implementations, moving all
the signals to proper object ones.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/55
2019-05-24 16:27:25 -05:00
Carlos Garnacho
dd5d7d3b70 shell: Only initialize global->xdisplay on X11 compositors
This is just used to set up things that are relevant to X11 compositors
(XDND, XFixes input region). We can live with it unset on the wayland
compositor cases.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/378
2019-05-24 12:24:06 +02:00
Carlos Garnacho
771b1a0788 shell: Do not set XFixes input region on wayland compositors
This is just needed on the X11 compositor, wayland compositors are known
for handling their own input.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/378
2019-05-24 12:24:06 +02:00
Carlos Garnacho
5a9d094f3e shell: Use MetaDisplay input focus API
Replaces use of (now removed) MetaX11Display focus API (which happened to
work for wayland too).

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/378
2019-05-24 12:24:06 +02:00
Jonas Dreßler
9ca8433170 network: Make NMWirelessDialogItem a subclass of St.BoxLayout
In commit 41dd744b74 this item was
confused with a popup menu item. To fix this, make NMWirelessDialogItem
inherit from St.BoxLayout instead of adding the item.actor variable back
again.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/551
2019-05-22 19:55:49 +00:00
38 changed files with 626 additions and 692 deletions

View File

@@ -15,7 +15,7 @@ variables:
- merge_requests
check_commit_log:
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
image: registry.gitlab.gnome.org/gnome/mutter/master:v1
stage: review
variables:
GIT_DEPTH: "100"
@@ -40,7 +40,7 @@ js_check:
when: on_failure
build:
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
image: registry.gitlab.gnome.org/gnome/mutter/master:v1
stage: build
before_script:
- .gitlab-ci/checkout-mutter.sh
@@ -58,7 +58,7 @@ build:
- build
test:
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
image: registry.gitlab.gnome.org/gnome/mutter/master:v1
stage: test
before_script:
- ninja -C mutter/build install
@@ -72,7 +72,7 @@ test:
when: on_failure
test-pot:
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
image: registry.gitlab.gnome.org/gnome/mutter/master:v1
stage: test
before_script:
- ninja -C mutter/build install

View File

@@ -21,9 +21,11 @@
<file>noise-texture.png</file>
<file>pad-osd.css</file>
<file>process-working.svg</file>
<file>toggle-off-intl.svg</file>
<file>toggle-off.svg</file>
<file>toggle-off-dark.svg</file>
<file>toggle-off-hc.svg</file>
<file>toggle-on-intl.svg</file>
<file>toggle-on.svg</file>
<file>toggle-on-dark.svg</file>
<file>toggle-on-hc.svg</file>
</gresource>
</gresources>

View File

@@ -1,3 +1,5 @@
$variant: 'light';
@import "gnome-shell-sass/_high-contrast-colors"; //use gtk colors
@import "gnome-shell-sass/_drawing";
@import "gnome-shell-sass/_common";

View File

@@ -3,11 +3,11 @@
$base_color: if($variant == 'light', #ffffff, lighten(desaturate(#241f31, 20%), 2%));
$bg_color: if($variant == 'light', #f6f5f4, desaturate(#3d3846, 10%));
$bg_color: if($variant == 'light', #f6f5f4, darken(desaturate(#3d3846, 100%), 4%));
$fg_color: if($variant == 'light', #2e3436, #eeeeec);
$selected_fg_color: #ffffff;
$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 20%));
$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 10%));
$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 10%));
$borders_edge: if($variant == 'light', transparentize(white, 0.2), transparentize($fg_color, 0.93));
@@ -21,11 +21,15 @@ $success_color: if($variant == 'light', #33d17a, darken(#33d17a, 10%));
$destructive_color: if($variant == 'light', #e01b24, darken(#e01b24, 10%));
$osd_fg_color: #eeeeec;
$osd_bg_color: #2e3436;
$osd_text_color: white;
$osd_bg_color: transparentize(darken(desaturate(#3d3846, 100%), 12%),0.04);
$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
$osd_insensitive_fg_color: mix($osd_fg_color, opacify($osd_bg_color, 1), 50%);
$osd_borders_color: transparentize(black, 0.3);
$osd_outer_borders_color: transparentize(white, 0.9);
$osd_outer_borders_color: transparentize(white, 0.84);
$tooltip_borders_color: $osd_outer_borders_color;
$shadow_color: transparentize(black, 0.9);
//insensitive state derived colors
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);

View File

@@ -4,8 +4,6 @@
$cakeisalie: "This stylesheet is generated, DO NOT EDIT";
/* #{$cakeisalie} */
$panel-corner-radius: 6px;
/* Copyright 2009, 2015 Red Hat, Inc.
*
* Portions adapted from Mx's data/style/default.css
@@ -25,13 +23,18 @@ $panel-corner-radius: 6px;
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*/
/* GLOBALS */
$panel-corner-radius: 6px;
$medium_radius: 9px;
$_trough_color: transparentize($fg_color, 0.9);
$_bubble_borders_color: lighten($borders_color, if($variant=='light', 0%, 5%));
$_hover_bg_color: lighten($bg_color,if($variant=='light', 5%, 3%));
$_active_bg_color: if($variant == 'light', darken($bg_color, 14%), darken($bg_color, 9%));
$font-size: 11;
$font-family: Cantarell, Sans-Serif;
$_bubble_bg_color: opacify($osd_bg_color,0.25);
$_bubble_fg_color: $osd_fg_color;
$_bubble_borders_color: transparentize($osd_fg_color,0.8);
stage {
font-family: $font-family;
@@ -42,42 +45,44 @@ stage {
/* WIDGETS */
/* Buttons */
.button {
border-radius: 3px;
.button, %button {
border-radius: 5px;
border-width: 1px;
min-height: 22px;
padding: 4px 32px;
@include button(normal);
&:focus { @include button(focus); }
&:hover { @include button(hover); }
&:focus { @include button(focus, $c:$_hover_bg_color, $tc:$fg_color); }
&:hover { @include button(hover, $c:$_hover_bg_color, $tc:$fg_color); }
&:insensitive { @include button(insensitive); }
&:active { @include button(active); }
&:active { @include button(active, $c:$_active_bg_color, $tc:$fg_color); }
}
.modal-dialog-linked-button {
.modal-dialog-linked-button, %bubble_button {
border-right-width: 1px;
@include button(normal);
&:insensitive { @include button(insensitive); }
&:hover { @include button(hover); }
&:focus { @include button(focus); }
&:active { @include button(active); }
@include button(normal, $c:$bg_color, $tc:$fg_color);
&:insensitive { @include button(insensitive, $c:$bg_color, $tc:$fg_color); }
&:hover { @include button(hover, $c:$_hover_bg_color, $tc:$fg_color); }
&:focus { @include button(focus, $c:$_hover_bg_color, $tc:$fg_color); }
&:active { @include button(active, $c:$_active_bg_color, $tc:$fg_color); }
padding: 12px;
border-top: 1px solid $_bubble_borders_color;
&:first-child {
border-radius: 0px 0px 0px 6px;
border-radius: 0px 0px 0px $medium_radius;
}
&:last-child {
border-right-width: 0px;
border-radius: 0px 0px 6px 0px;
border-radius: 0px 0px $medium_radius 0px;
}
&:first-child:last-child {
border-right-width: 0px;
border-radius: 0px 0px 6px 6px;
border-radius: 0px 0px $medium_radius $medium_radius;
}
}
/* Entries */
StEntry {
border-radius: 3px;
border-radius: 5px;
padding: 4px;
border-width: 1px;
color: $fg_color;
@@ -130,15 +135,21 @@ StScrollBar {
.slider {
height: 1em;
-barlevel-height: 0.3em;
-barlevel-background-color: $insensitive_bg_color; //background of the trough
-barlevel-background-color: transparentize($fg_color, 0.9); //background of the trough
-barlevel-border-color: $borders_color; //trough border color
-barlevel-active-background-color: $selected_bg_color; //active trough fill
-barlevel-active-border-color: darken($selected_bg_color,10%); //active trough border
-barlevel-active-border-color: $selected_borders_color; //active trough border
-barlevel-overdrive-color: $destructive_color;
-barlevel-overdrive-border-color: darken($destructive_color,10%);
-barlevel-overdrive-separator-width: 0.2em;
-barlevel-border-width: 1px;
-slider-handle-radius: 6px;
-slider-handle-radius: 8px;
-slider-handle-border-width: 1px;
-slider-handle-border-color: $borders_color;
color: $bg_color; /* FIXME to match gtk, we'd need to style the border of the slider, not
the whole widget */
&:hover { color: $_hover_bg_color; }
&:active { color: $_active_bg_color; }
}
/* Check Boxes */
@@ -157,11 +168,16 @@ StScrollBar {
/* Switches */
.toggle-switch {
color: $fg_color;
width: 46px;
height: 22px;
background-size: contain;
background-image: url("resource:///org/gnome/shell/theme/toggle-off-intl.svg");
&:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-intl.svg"); }
background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-off.svg"),
url("resource:///org/gnome/shell/theme/toggle-off-dark.svg"));
&:checked {
background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-on.svg"),
url("resource:///org/gnome/shell/theme/toggle-on-dark.svg"));
}
}
/* links */
@@ -178,9 +194,7 @@ StScrollBar {
.modal-dialog {
border-radius: 9px;
color: $osd_fg_color;
background-color: transparentize(darken($osd_bg_color,10%),0.05);
border: 1px solid $_bubble_borders_color;
@extend %bubble-panel;
.modal-dialog-content-box {
padding: 24px;
}
@@ -192,8 +206,8 @@ StScrollBar {
.run-dialog-button-box { padding-top: 1em; }
.run-dialog-label {
@include fontsize($font-size + 1.1);
font-weight: bold;
color: darken($osd_fg_color,10%);
font-weight: normal;
color: $fg_color;
padding-bottom: .4em;
}
@@ -225,7 +239,7 @@ StScrollBar {
}
.message-dialog-subtitle {
color: darken($fg_color,40%);
color: $fg_color;
font-weight: bold;
}
@@ -348,7 +362,7 @@ StScrollBar {
}
.mount-dialog-app-list-item {
color: darken($fg_color,10%);
color: lighten($fg_color,10%);
&:hover { color: $fg_color; }
&:ltr { padding-right: 1em; }
&:rtl { padding-left: 1em; }
@@ -367,13 +381,13 @@ StScrollBar {
/* Password or Authentication Dialog */
.prompt-dialog {
@extend %bubble-panel;
//this is the width of the entire modal popup
width: 34em;
border: 3px solid $_bubble_borders_color;
.message-dialog-main-layout { spacing: 24px; padding: 10px; }
.message-dialog-content { spacing: 16px; }
.message-dialog-title { color: darken($osd_fg_color,25%); }
.message-dialog-title { color: lighten($fg_color,15%); }
}
.prompt-dialog-description:rtl {
@@ -382,6 +396,7 @@ StScrollBar {
.prompt-dialog-password-box {
spacing: 1em;
padding-bottom: 1em;
}
.prompt-dialog-error-label {
@@ -446,6 +461,7 @@ StScrollBar {
/* Audio selection dialog */
.audio-device-selection-dialog {
@extend %bubble-panel;
spacing: 30px;
}
@@ -466,7 +482,11 @@ StScrollBar {
.audio-selection-device {
border: 1px solid $_bubble_borders_color;
border-radius: 12px;
&:active,&:hover,&:focus { background-color: $selected_bg_color; }
&:hover,&:focus { background-color: $_hover_bg_color; }
&:active {
background-color: $selected_bg_color;
color: $selected_fg_color;
}
}
.audio-selection-device-box {
@@ -480,22 +500,26 @@ StScrollBar {
/* Access Dialog */
.access-dialog {
@extend %bubble-panel;
spacing: 30px;
}
/* Geolocation Dialog */
.geolocation-dialog {
@extend %bubble-panel;
spacing: 30px;
}
/* Extension Dialog */
.extension-dialog {
@extend %bubble-panel;
.message-dialog-main-layout { spacing: 24px; padding: 10px; }
.message-dialog-title { color: darken($osd_fg_color,25%); }
.message-dialog-title { font-weight: normal; color: $fg_color; }
}
/* Inhibit-Shortcuts Dialog */
.inhibit-shortcuts-dialog {
@extend %bubble-panel;
spacing: 30px;
}
@@ -515,12 +539,13 @@ StScrollBar {
.popup-menu {
min-width: 15em;
color: $fg_color;
border-color: $_bubble_borders_color;
.popup-menu-arrow { } //defined globally in the TOP BAR
.popup-sub-menu {
padding-bottom: 1px;
background-color: darken($bg_color,2%);
box-shadow: inset 0 -1px 0px lighten($borders_color,5%);
background-color: darken($bg_color,5%);
box-shadow: inset 0 -1px 0px $_bubble_borders_color;
}
.popup-menu-content { padding: 1em 0em; }
@@ -530,12 +555,18 @@ StScrollBar {
&:ltr { padding: .4em 1.75em .4em 0em; }
&:rtl { padding: .4em 0em .4em 1.75em; }
&:checked {
background-color: darken($bg_color,2%);
box-shadow: inset 0 1px 0px lighten($borders_color,5%);
background-color: $bg_color;
box-shadow: inset 0 -1px 0px $_bubble_borders_color;
font-weight: bold;
}
&.selected { background-color: transparentize($fg_color,0.9); color: $fg_color; }
&:active { background-color: $selected_bg_color; color: $selected_fg_color; }
&.selected {
background-color: transparentize(white, if($variant=='light', 0.2, 0.9));
color: $fg_color;
}
&:active {
background-color: $selected_bg_color;
color: $selected_fg_color;
}
&:insensitive { color: transparentize($fg_color,.5); }
}
@@ -559,10 +590,10 @@ StScrollBar {
}
.popup-menu-boxpointer,
.candidate-popup-boxpointer {
-arrow-border-radius: 3px;
-arrow-border-radius: $medium_radius;
-arrow-background-color: $bg_color;
-arrow-border-width: 1px;
-arrow-border-color: $borders_color;
-arrow-border-color: if($variant=='light', transparentize(black, 0.6), $borders_color);
-arrow-base: 24px;
-arrow-rise: 11px;
-arrow-box-shadow: 0 1px 3px black; //dreaming. bug #689995
@@ -573,7 +604,7 @@ StScrollBar {
height: 1px; //not really the whole box
margin: 6px 64px;
background-color: transparent;
border-color: lighten($borders_color,10%);
border-color: $_bubble_borders_color;
border-bottom-width: 1px;
border-bottom-style: solid;
}
@@ -601,7 +632,7 @@ StScrollBar {
.level {
height: 0.6em;
-barlevel-height: 0.6em;
-barlevel-background-color: transparentize(darken($osd_bg_color,15%),0.5);
-barlevel-background-color: transparentize($fg_color, if($variant=='light', 0.2, 0.9));
-barlevel-active-background-color: $osd_fg_color;
-barlevel-overdrive-color: $destructive_color;
-barlevel-overdrive-separator-width: 0.2em;
@@ -646,7 +677,7 @@ StScrollBar {
}
.switcher-list .item-box:selected {
background-color: $selected_bg_color;
background-color: transparentize($osd_fg_color, 0.7);
color: $selected_fg_color;
}
@@ -712,13 +743,43 @@ StScrollBar {
}
%osd-panel {
color: $_bubble_fg_color;
background-color: $_bubble_bg_color;
border: 1px solid $_bubble_borders_color;
color: $osd_fg_color;
background-color: $osd_bg_color;
border: 1px solid $osd_outer_borders_color;
border-radius: 12px;
padding: 12px;
}
%bubble-entry {
color: $fg_color;
background-color: darken($bg_color, 2%);
border-color: $_bubble_borders_color;
box-shadow: none;
&:focus { border: 2px solid $selected_bg_color; }
}
%bubble-panel {
color: $fg_color;
background-color: $bg_color;
border: 1px solid if($variant=='light', transparentize(black, 0.6), $borders_color);
StEntry { @extend %bubble-entry; }
.button {
&, &:hover, &:focus, &:active, &:disabled {
box-shadow: none;
border-color: $_bubble_borders_color;
}
background-color: $bg_color;
color: $fg_color;
&:hover { background-color: $_hover_bg_color; }
&:active {
background-color: $selected_bg_color;
color: $selected_fg_color;
}
&:disabled { color: $insensitive_fg_color; }
}
}
/* Tiled window previews */
.tile-preview {
background-color: transparentize($selected_bg_color,0.5);
@@ -786,7 +847,7 @@ StScrollBar {
}
&:hover {
color: lighten($fg_color, 10%);
color: $selected_fg_color;
}
&:active, &:overview, &:focus, &:checked {
@@ -794,7 +855,7 @@ StScrollBar {
// a box-shadow
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0px lighten($selected_bg_color,5%);
color: lighten($fg_color,10%);
color: $selected_fg_color;
}
.system-status-icon { icon-size: 1.09em; padding: 0 5px; }
@@ -842,7 +903,7 @@ StScrollBar {
.datemenu-displays-box { spacing: 1em; }
.datemenu-calendar-column {
border: 0 solid lighten($bg_color,5%);
border: 0 solid $_bubble_borders_color;
&:ltr { border-left-width: 1px; }
&:rtl { border-right-width: 1px; }
}
@@ -867,11 +928,8 @@ StScrollBar {
.world-clocks-button,
.weather-button,
.events-section-title {
&:hover,&:focus { background-color: lighten($bg_color,5%); }
&:active {
color: lighten($selected_fg_color,5%);
background-color: $selected_bg_color;
}
&:hover, focus { background-color: $_hover_bg_color }
&:active { background-color: $_active_bg_color }
}
.datemenu-today-button .day-label {
@@ -916,7 +974,7 @@ StScrollBar {
}
.world-clocks-timezone {
color: darken($fg_color,40%);
color: $fg_color;
font-feature-settings: "tnum";
font-size: 0.9em;
}
@@ -931,7 +989,7 @@ StScrollBar {
}
.calendar-month-label {
color: darken($fg_color,5%);
color: lighten($fg_color,5%);
font-weight: bold;
padding: 8px 0;
&:focus {}
@@ -941,8 +999,8 @@ StScrollBar {
background-color: transparent;
width: 32px;
border-radius: 4px;
&:hover, &:focus { background-color: transparentize($fg_color,0.95); }
&:active { background-color: transparentize($bg_color,0.95); }
&:hover, focus { background-color: $_hover_bg_color; }
&:active { background-color: transparentize($fg_color, 0.84); }
}
.calendar-change-month-back StIcon, .calendar-change-month-forward StIcon { // arrows
@@ -957,14 +1015,14 @@ StScrollBar {
margin: 2px;
border-radius: 1.4em;
font-feature-settings: "tnum";
&:hover,&:focus { background-color: lighten($bg_color,5%); }
&:hover, focus { background-color: $_hover_bg_color; }
&:active,&:selected {
color: lighten($selected_fg_color,5%);
background-color: $selected_bg_color;
border-color: transparent; //avoid jumparound due to today
}
&.calendar-day-heading { //day of week heading
color: darken($fg_color,40%);
color: lighten($fg_color,5%);
margin-top: 1em;
font-size: 70%;
}
@@ -984,7 +1042,7 @@ StScrollBar {
font-weight: bold;
//color: lighten($fg_color,10%);
//background-color: darken($bg_color,5%);
border: 1px solid transparentize($borders_color,0.5);
border: 1px solid $_bubble_borders_color;
}
.calendar-day-with-events {
color: lighten($fg_color,10%);
@@ -992,7 +1050,7 @@ StScrollBar {
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg");
}
.calendar-other-month-day {
color: transparentize($fg_color,0.85);
color: transparentize($fg_color ,0.5);
opacity: 0.5;
}
.calendar-week-number {
@@ -1002,8 +1060,8 @@ StScrollBar {
border-radius: 2px;
padding: 0.5em 0 0;
margin: 6px;
background-color: transparentize($fg_color,0.7);
color: $bg_color;
background-color: $_bubble_borders_color;
color: $fg_color;
}
/* Message list */
@@ -1012,8 +1070,7 @@ StScrollBar {
}
.message-list-clear-button.button {
background-color: transparent;
&:hover,&:focus { background-color: lighten($bg_color,5%); }
@extend %button;
margin: 1.5em 1.5em 0;
}
@@ -1027,8 +1084,11 @@ StScrollBar {
}
.message {
&:hover,&:focus { background-color: lighten($bg_color,5%); }
border-radius: 3px;
border: 1px solid $_bubble_borders_color;
background-color: lighten($bg_color, 2%);
&:hover,&:focus { background-color: $_hover_bg_color; }
&:active { background-color: transparentize($fg_color, 0.84) }
border-radius: 5px;
}
.message-icon-bin {
@@ -1037,7 +1097,7 @@ StScrollBar {
}
.message-icon-bin > StIcon {
color: darken($fg_color,20%);
color: $fg_color;
icon-size: 1.09em;
-st-icon-style: symbolic;
}
@@ -1052,7 +1112,7 @@ StScrollBar {
}
.message-secondary-bin > .event-time {
color: darken($fg_color,40%);
color: $fg_color;
font-size: 0.7em;
/* HACK: the label should be baseline-aligned with a 1em label,
fake this with some bottom padding */
@@ -1064,17 +1124,17 @@ StScrollBar {
}
.message-title {
color: darken($fg_color,5%);
color: $fg_color;
}
.message-content {
color: darken($fg_color,20%);
color: darken($fg_color, 10%);
padding: 10px;
}
.message-media-control {
padding: 12px;
color: darken($fg_color, 20%);
color: lighten($fg_color, 15%);
&:last-child:ltr { padding-right: 18px; }
&:last-child:rtl { padding-left: 18px; }
@@ -1085,9 +1145,9 @@ StScrollBar {
.media-message-cover-icon {
icon-size: 48px !important;
&.fallback {
color: lighten($bg_color,10%);
color: lighten($fg_color,10%);
background-color: $bg_color;
border: 2px solid $bg_color;
border: 1px solid $bg_color;
border-radius: 2px;
icon-size: 32px !important;
padding: 6px; }
@@ -1129,15 +1189,18 @@ StScrollBar {
color: $fg_color;
border-radius: 32px; /* wish we could do 50% */
padding: 13px;
border: 1px solid lighten($borders_color,5%);
border: 1px solid $_bubble_borders_color;
&:hover, &:focus {
background-color: transparentize($fg_color,0.9);
background-color: $_hover_bg_color;
color: $fg_color;
border: none;
padding: 14px;
}
&:active { background-color: $selected_bg_color; color: $selected_fg_color; }
&:active {
background-color: $selected_bg_color;
color: $selected_fg_color;
}
& > StIcon { icon-size: 16px; }
}
@@ -1189,6 +1252,7 @@ StScrollBar {
/* NETWORK DIALOGS */
.nm-dialog {
@extend %bubble-panel;
max-height: 34em;
min-height: 31em;
min-width: 32em;
@@ -1264,23 +1328,23 @@ StScrollBar {
}
//search entry
.search-entry {
.search-entry, %search_entry {
width: 320px;
padding: 7px 9px;
border-radius: 6px;
border-color: darken($osd_fg_color,50%);
color: $osd_fg_color;
background-color: $osd_bg_color;
border-radius: 18px;
color: $fg_color;
background-color: $base_color;
border-color: $borders_color;
&:focus {
padding: 6px 8px;
border-width: 2px;
border-color: $selected_bg_color;
}
.search-entry-icon { icon-size: 1em; padding: 0 4px; color: transparentize($fg_color,.3); }
.search-entry-icon { icon-size: 1em; padding: 0 4px; color: $fg_color; }
&:hover, &:focus {
.search-entry-icon { color: $fg_color; }
.search-entry-icon { color: transparentize($fg_color,.3); }
}
}
@@ -1309,7 +1373,7 @@ StScrollBar {
.list-search-result-content { spacing: 30px; }
.list-search-result-title { color: darken($osd_fg_color,5%); spacing: 12px; }
.list-search-result-description { color: transparentize(darken($osd_fg_color,15%), 0.5); }
.list-search-result-description { color: darken($osd_fg_color, 30%); }
.list-search-provider-details { width: 150px; color: darken($osd_fg_color,5%); margin-top: 0.24em; }
.list-search-provider-content { spacing: 20px; }
.search-provider-icon { padding: 15px; }
@@ -1318,12 +1382,9 @@ StScrollBar {
/* DASHBOARD */
#dash {
@extend %overview-panel;
font-size: 9pt;
color: $_bubble_fg_color;
background-color: $_bubble_bg_color;
padding: 4px 0;
border: 1px solid rgba(128, 128, 128, 0.4);
border-left: 0px;
border-radius: 0px 9px 9px 0px;
&:rtl {
@@ -1351,7 +1412,8 @@ StScrollBar {
border-radius: 7px;
padding: 4px 12px;
color: $osd_fg_color;
background-color: transparentize($osd_bg_color,0.3);
background-color: transparentize($osd_bg_color,0.05);
border: 1px solid $osd_outer_borders_color;
text-align: center;
-x-offset: 8px;
}
@@ -1378,13 +1440,29 @@ StScrollBar {
}
.app-view-control { //favorties | all toggle button
padding: 4px 32px;
&:checked { @include button(active); }
margin: 0 4px;
&, &:hover, &:checked { @include button(undecorated); }
&, &:hover { color: darken($osd_fg_color, 25%); }
&:hover { box-shadow: inset 0 -2px darken($osd_fg_color, 25%); }
&:active {
box-shadow: inset 0 -2px $osd_fg_color;
}
&:checked {
color: $osd_fg_color;
box-shadow: inset 0 -2px $selected_bg_color;
}
&:first-child {
border-right-width: 0;
border-radius: 3px 0 0 3px;
border-radius: 0;
}
&:last-child {
border-radius: 0 3px 3px 0;
border-radius: 0;
}
}
@@ -1407,8 +1485,7 @@ StScrollBar {
}
&:active .overview-icon,
&:checked .overview-icon {
background-color: transparentize(darken($osd_bg_color,10%),.1);
box-shadow: inset 0 1px 2px $osd_borders_color;
background-color: transparentize(darken($osd_bg_color,10%), 0.5);
}
&:hover .overview-icon,
&:focus .overview-icon,
@@ -1429,7 +1506,7 @@ StScrollBar {
%icon_tile {
color: $osd_fg_color;
border-radius: 4px;
border-radius: $medium_radius;
padding: 6px;
border: 1px solid transparent;
transition-duration: 100ms;
@@ -1450,7 +1527,7 @@ StScrollBar {
// Collections
.app-folder-popup { //expanded collection
-arrow-border-radius: 8px;
-arrow-background-color: transparentize($osd_bg_color,0.7);
-arrow-background-color: transparentize(darken($osd_bg_color,10%), 0.5);
-arrow-base: 24px;
-arrow-rise: 11px;
}
@@ -1503,7 +1580,7 @@ StScrollBar {
}
}
.workspace-thumbnail-indicator {
border: 4px solid $selected_bg_color;
border: 2px solid $selected_bg_color;
padding: 1px;
}
@@ -1516,15 +1593,15 @@ StScrollBar {
}
%overview-panel {
color: $_bubble_fg_color;
background-color: $_bubble_bg_color;
border: 1px solid $_bubble_borders_color;
color: $osd_fg_color;
background-color: transparentize($osd_bg_color, 0.1);
border: none;
}
%status_text {
font-size: 2em;
font-weight: bold;
color: $fg_color;
color: $osd_fg_color;
}
/* NOTIFICATIONS & MESSAGE TRAY */
@@ -1536,28 +1613,38 @@ StScrollBar {
font-size: 11pt;
width: 34em;
margin: 5px;
border-radius: 6px;
color: $_bubble_fg_color;
background-color: $_bubble_bg_color;
border: 1px solid $borders_color;
//box-shadow: 0 1px 4px black;
&:hover { background-color: $_bubble_bg_color; }
&:focus { background-color: $_bubble_bg_color; }
border-radius: $medium-radius;
border: if($variant == 'light', none, $_bubble_borders_color);
min-height: 64px;
box-shadow: 0 1px 2px transparentize(black, 0.7);
&:hover { background: $bg_color; }
&, &:focus, &:active {
background-color: $bg_color;
.message-title { color: $fg_color }
.message-content { color: $fg_color; }
}
.notification-icon { padding: 5px; }
.message-icon-bin > StIcon {
color: $fg_color;
}
StEntry { @extend %bubble-entry; }
.notification-icon { padding: 5px; }
.notification-content { padding: 5px; spacing: 5px; }
.secondary-icon { icon-size: 1.09em; }
.notification-actions {
background-color: $borders_color;
padding-top: 2px;
spacing: 1px;
padding-top: 0;
color: $fg_color;
border-top: 1px solid $_bubble_borders_color;
spacing: 0px;
}
.notification-button {
padding: 4px 4px 5px;
background-color: darken($_bubble_bg_color,5%);
&:first-child { border-radius: 0 0 0 6px; }
&:last-child { border-radius: 0 0 6px 0; }
&:hover, &focus { background-color: darken($_bubble_bg_color,2%); }
@extend %bubble_button;
&:focus { box-shadow: none; }
padding: 0 16px;
min-height: 35px;
border: none;
}
}
.summary-source-counter {
@@ -1568,7 +1655,7 @@ StScrollBar {
-shell-counter-overlap-y: 3px;
background-color: $selected_bg_color;
color: $selected_fg_color;
border: 2px solid $osd_fg_color;
border: 2px solid $fg_color;
box-shadow: 0 2px 2px rgba(0,0,0,0.5);
border-radius: 0.9em; // should be 0.8 but whatever; wish I could do 50%;
}
@@ -1586,14 +1673,14 @@ StScrollBar {
}
.chat-sent {
padding-left: 18pt;
color: darken($fg_color, 15%);
color: lighten($fg_color, 15%);
&:rtl { padding-left: 0; padding-right: 18pt; }
}
.chat-meta-message {
padding-left: 4px;
font-size: 9pt;
font-weight: bold;
color: darken($fg_color,20%);
color: lighten($fg_color,18%);
&:rtl { padding-left: 0; padding-right: 4px; }
}
@@ -1603,6 +1690,8 @@ StScrollBar {
padding: 2px 72px 2px 12px;
}
.hotplug-notification-item {
@extend %bubble_button;
border: none; box-shadow: none;
padding: 2px 10px;
&:focus { padding: 1px 71px 1px 11px; }
}
@@ -1617,7 +1706,7 @@ StScrollBar {
.hotplug-resident-mount {
spacing: 8px;
border-radius: 4px;
&:hover { background-color: transparentize($bg_color,0.7); }
&:hover { background-color: $_hover_bg_color; }
}
.hotplug-resident-mount-label {
@@ -1723,7 +1812,7 @@ StScrollBar {
-arrow-border-radius: 10px;
-arrow-background-color: transparentize($osd_bg_color, 0.3);
-arrow-border-width: 2px;
-arrow-border-color: $_bubble_borders_color;
-arrow-border-color: $osd_outer_borders_color;
-arrow-base: 20px;
-arrow-rise: 10px;
-boxpointer-gap: 5px;
@@ -1798,18 +1887,68 @@ StScrollBar {
border: none;
background-color: transparent;
.modal-dialog-button-box { spacing: 3px; }
.modal-dialog-button {
padding: 3px 18px;
&:default {
@include button(normal,$c:$selected_bg_color);
&:hover,&:focus { @include button(hover,$c:$selected_bg_color); }
&:active { @include button(active,$c:$selected_bg_color); }
&:insensitive { @include button(insensitive); }
$_gdm_fg: #f6f5f4;
$_gdm_bg: lighten(#2e3436, 19%);
StEntry {
@extend %search_entry;
border-radius: 5px;
@if $variant=='dark' {
$_gdm_entry_bg: transparentize(lighten(desaturate(#241f31, 20%), 2%), 0.5);
background-color: $_gdm_entry_bg;
border-color: $_gdm_entry_bg;
color: $osd_fg_color;
}
}
.modal-dialog-button-box { spacing: 3px; }
.modal-dialog-button {
padding: 4px 18px;
box-shadow: 0 1px 3px transparentize($shadow_color, 0.02);
background-color: $_gdm_bg;
border-color: $_gdm_bg;
color: $_gdm_fg;
$_hover_c: lighten($_gdm_bg, 5%);
&:hover, &:focus {
background-color: $_hover_c;
border-color: $_hover_c;
}
&:active {
$_active_c: darken($_gdm_bg, 5%);
box-shadow: none;
background-color: $_active_c;
border-color: $_active_c;
}
&:insensitive {
@include button(insensitive);
border-color: darken($_gdm_bg, 5%);
background-color: darken($_gdm_bg, 5%);
color: transparentize($_gdm_fg, 0.3);
}
&:default {
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
border-color: $selected_bg_color;
&:hover, &:focus {
@include button(hover,$c:$selected_bg_color, $tc:$selected_fg_color);
$_def_hover_c: lighten($selected_bg_color, 5%);
background-color: $_def_hover_c;
border-color: $_def_hover_c;
}
&:active {
@include button(active,$c:$selected_bg_color, $tc:$selected_fg_color);
$_def_active_c: darken($selected_bg_color, 5%);
background-color: $_def_active_c;
border-color: $_def_active_c;
}
&:insensitive {
@include button(insensitive);
border-color: darken($selected_bg_color, 10%);
background-color: darken($selected_bg_color, 10%);
color: transparentize($selected_fg_color, 0.3);
}
}
}
}
.login-dialog-logo-bin { padding: 24px 0px; }
@@ -1891,6 +2030,8 @@ StScrollBar {
//SCREEN SHIELD
$_screenshield_shadow: 0px 0px 6px rgba(0, 0, 0, 0.726);
.screen-shield-arrows {
padding-bottom: 3em;
}
@@ -1900,12 +2041,12 @@ StScrollBar {
width: 80px;
height: 48px;
-arrow-thickness: 12px;
-arrow-shadow: 0 1px 1px rgba(0,0,0,0.4);
-arrow-shadow: $_screenshield_shadow;
}
.screen-shield-clock {
color: white;
text-shadow: 0px 1px 2px rgba(0,0,0,0.6);
text-shadow: $_screenshield_shadow;
font-weight: bold;
text-align: center;
padding-bottom: 1.5em;
@@ -1913,7 +2054,7 @@ StScrollBar {
.screen-shield-clock-time {
font-size: 72pt;
text-shadow: 0px 2px 2px rgba(0,0,0,0.4);
text-shadow: $_screenshield_shadow;
font-feature-settings: "tnum";
}
@@ -1935,9 +2076,9 @@ StScrollBar {
.notification,
.screen-shield-notification-source {
padding: 12px 6px;
border: 1px solid $_bubble_borders_color;
border: 1px solid $osd_outer_borders_color;
background-color: transparentize($osd_bg_color,0.5);
color: $_bubble_fg_color;
color: $osd_fg_color;
border-radius: 4px;
}
.notification { margin-right: 15px; } //compensate for space allocated to the scrollbar
@@ -1951,7 +2092,7 @@ StScrollBar {
.screen-shield-notification-count-text { padding: 0px 0px 0px 12px; }
#panel.lock-screen { background-color: transparentize($_bubble_bg_color, 0.5); }
#panel.lock-screen { background-color: transparentize($osd_bg_color, 0.5); }
.screen-shield-background { //just the shadow, really
background: black;
@@ -1959,7 +2100,7 @@ StScrollBar {
}
#lockDialogGroup {
background: #2e3436 url(resource:///org/gnome/shell/theme/noise-texture.png);
background: lighten(#2e3436, 8%) url(resource:///org/gnome/shell/theme/noise-texture.png);
background-repeat: repeat;
}

View File

@@ -37,16 +37,13 @@
// possible $t values:
// normal, focus, insensitive
//
$_inner_shadows: inset 0 2px 4px transparentize(black, 0.6);
@if $t==normal {
background-color: $base_color;
border-color: $borders_color;
@include _shadows($_inner_shadows);
}
@if $t==focus {
@include _shadows($_inner_shadows);
border-color: if($fc==$selected_bg_color,
$selected_borders_color,
darken($fc,35%));
@@ -111,7 +108,7 @@
}
}
@mixin button($t, $c:$osd_bg_color, $tc:$fg_color, $edge: $borders_edge) {
@mixin button($t, $c:$bg_color, $tc:$fg_color, $edge: $borders_edge) {
//
// Button drawing function
//
@@ -130,46 +127,39 @@
$_hilight_color: _button_hilight_color($c);
$_button_edge: if($edge == none, none, _widget_edge($edge));
$_blank_edge: if($edge == none, none, _widget_edge(transparentize($edge,1)));
$_button_shadow: 0 1px 2px transparentize($shadow_color, 0.03);
@if $t==normal {
//
// normal button
//
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.5),
$osd_bg_color);
color: $osd_fg_color;
background-color: $_bg;
border-color: $osd_borders_color;
box-shadow: inset 0 1px lighten($osd_bg_color,10%);
color: $tc;
background-color: $c;
border-color: $borders_color;
box-shadow: $_button_shadow;
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
}
@if $t==focus {
//
// focused button
//
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.3),
lighten($osd_bg_color,3%));
color: $osd_fg_color;
//
color: $tc;
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
box-shadow: inset 0px 0px 0px 1px $selected_bg_color;
box-shadow: inset 0px 0px 0px 2px $selected_bg_color;
//border-color: $selected_bg_color;
}
@else if $t==hover {
//
// active osd button
//
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.3),
lighten($osd_bg_color,3%));
color: white;
border-color: $osd_borders_color;
background-color: $_bg;
box-shadow: inset 0 1px lighten($osd_bg_color,20%);
color: $tc;
border-color: $borders_color;
background-color: $c;
box-shadow: $_button_shadow;
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
@@ -178,27 +168,18 @@
//
// active osd button
//
$_bg: if($c!=$bg_color, $c, $osd_borders_color);
color: white;
border-color: $osd_borders_color;
background-color: $selected_bg_color;
// This should be none, but it's creating some issues with borders, so to
// workaround it for now, use inset wich goes through a different code path.
// see https://bugzilla.gnome.org/show_bug.cgi?id=752934
box-shadow: inset 0 0 black;
color: $tc;
border-color: $borders_color;
background-color: $c;
text-shadow: none;
icon-shadow: none;
box-shadow: none;
}
@else if $t==insensitive {
//
// insensitive osd button
//
$_bg: transparentize(mix($insensitive_fg_color,$osd_bg_color,20%),0.3);
color: $insensitive_fg_color;
border-color: $osd_borders_color;
background-color: $_bg;
border-color: $insensitive_borders_color;
background-color: $insensitive_bg_color;
box-shadow: none;
text-shadow: none;
icon-shadow: none;

View File

@@ -26,6 +26,7 @@ $osd_borders_color: transparentize(black, 0.3);
$osd_outer_borders_color: transparentize(white, 0.9);
$tooltip_borders_color: $osd_outer_borders_color;
$shadow_color: transparentize(black, 0.9);
//insensitive state derived colors
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);

View File

@@ -1,4 +1,4 @@
$variant: 'dark';
$variant: 'light';
@import "gnome-shell-sass/_colors"; //use gtk colors
@import "gnome-shell-sass/_drawing";

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="46" height="22"><defs><linearGradient id="a"><stop offset="0" stop-color="#39393a"/><stop offset="1" stop-color="#302f30"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="53" y1="294.429" x2="53" y2="309.804" gradientUnits="userSpaceOnUse" gradientTransform="translate(-42.76)"/></defs><g transform="translate(0 -291.18)" stroke-width="1.085"><rect style="marker:none" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#323233" stroke="#272728"/><rect ry="10.455" rx="10.455" y="291.715" x=".543" height="20.911" width="21.143" style="marker:none" fill="url(#b)" stroke="#151515"/></g></svg>

After

Width:  |  Height:  |  Size: 725 B

View File

@@ -1,103 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="46"
height="22"
viewBox="0 0 46 22"
version="1.1"
id="svg2751"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="toggle-off-intl.svg">
<defs
id="defs2745">
<linearGradient
inkscape:collect="always"
id="linearGradient3329">
<stop
style="stop-color:#39393a;stop-opacity:1;"
offset="0"
id="stop3325" />
<stop
style="stop-color:#302f30;stop-opacity:1"
offset="1"
id="stop3327" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3329"
id="linearGradient3331"
x1="53"
y1="294.42917"
x2="53"
y2="309.80417"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-42.760724)" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#535353"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="-19.436775"
inkscape:cy="-13.499723"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:pagecheckerboard="true"
borderlayer="true"
inkscape:showpageshadow="false"
showborder="false">
<inkscape:grid
type="xygrid"
id="grid3298" />
</sodipodi:namedview>
<metadata
id="metadata2748">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-291.17916)">
<rect
style="opacity:1;vector-effect:none;fill:#323233;fill-opacity:1;stroke:#272728;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
id="rect3296"
width="44.446434"
height="20.910645"
x="0.625"
y="291.71494"
rx="10.455324"
ry="10.073335" />
<rect
ry="10.455322"
rx="10.455322"
y="291.71494"
x="0.5428465"
height="20.910645"
width="21.142862"
id="rect3300"
style="opacity:1;vector-effect:none;fill:url(#linearGradient3331);fill-opacity:1;stroke:#151515;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="46" height="22"><g transform="translate(0 -291.18)"><rect style="marker:none;font-variant-east_asian:normal" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#e1dedb" stroke="#cdc7c2" stroke-linecap="round" stroke-linejoin="round"/><rect ry="10.455" rx="10.455" y="291.715" x=".543" height="20.911" width="21.143" style="marker:none;font-variant-east_asian:normal" fill="#f8f7f7" stroke="#aa9f98" stroke-linecap="round" stroke-linejoin="round"/><g transform="matrix(.97148 0 0 1 1658.914 -2552.91)" stroke-width="1.015" stroke-linecap="round" stroke-linejoin="round"><rect ry="13.17" rx="13.556" y="1234.681" x="-1242.732" height="26" width="49.409" style="marker:none" fill="#e1dedb" stroke="#cdc7c2"/><rect style="marker:none" width="26.763" height="26" x="-1242.732" y="1234.769" rx="13.511" ry="13.126" fill="#f8f7f7" stroke="#aa9f98"/></g><g transform="matrix(.97148 0 0 1 1658.914 -2512.91)" stroke-width="1.015" stroke="#2b73cc"><rect style="marker:none" width="49.409" height="26" x="-1242.732" y="1234.681" rx="13.556" ry="13.17" fill="#3081e3"/><rect ry="13.126" rx="13.511" y="1234.769" x="-1220.086" height="26" width="26.763" style="marker:none" fill="#f8f7f7" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="46" height="22"><defs><linearGradient id="a"><stop offset="0" stop-color="#39393a"/><stop offset="1" stop-color="#302f30"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="53" y1="294.429" x2="53" y2="309.804" gradientUnits="userSpaceOnUse" gradientTransform="translate(-19)"/></defs><g transform="translate(0 -291.18)" stroke="#030e1b" stroke-width="1.085"><rect style="marker:none" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#15539e"/><rect ry="10.455" rx="10.455" y="291.715" x="24.304" height="20.911" width="21.143" style="marker:none" fill="url(#b)"/></g></svg>

After

Width:  |  Height:  |  Size: 707 B

View File

@@ -1,103 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="46"
height="22"
viewBox="0 0 46 22"
version="1.1"
id="svg2751"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="toggle-on-intl.svg">
<defs
id="defs2745">
<linearGradient
inkscape:collect="always"
id="linearGradient3329">
<stop
style="stop-color:#39393a;stop-opacity:1;"
offset="0"
id="stop3325" />
<stop
style="stop-color:#302f30;stop-opacity:1"
offset="1"
id="stop3327" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3329"
id="linearGradient3331"
x1="53"
y1="294.42917"
x2="53"
y2="309.80417"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-19)" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#535353"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="13.588971"
inkscape:cy="14.124546"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:pagecheckerboard="true"
borderlayer="true"
inkscape:showpageshadow="false"
showborder="false">
<inkscape:grid
type="xygrid"
id="grid3298" />
</sodipodi:namedview>
<metadata
id="metadata2748">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-291.17916)">
<rect
style="opacity:1;vector-effect:none;fill:#15539e;fill-opacity:1;stroke:#030e1b;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
id="rect3296"
width="44.446434"
height="20.910645"
x="0.625"
y="291.71494"
rx="10.455324"
ry="10.073335" />
<rect
ry="10.455322"
rx="10.455322"
y="291.71494"
x="24.30357"
height="20.910645"
width="21.142862"
id="rect3300"
style="opacity:1;vector-effect:none;fill:url(#linearGradient3331);fill-opacity:1;stroke:#030e1b;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

1
data/theme/toggle-on.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="46" height="22"><g transform="translate(0 -291.18)" stroke="#2b73cc"><rect style="marker:none;font-variant-east_asian:normal" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#3081e3"/><rect ry="10.455" rx="10.455" y="291.715" x="24.304" height="20.911" width="21.143" style="marker:none;font-variant-east_asian:normal" fill="#f8f7f7" stroke-linecap="round" stroke-linejoin="round"/></g></svg>

After

Width:  |  Height:  |  Size: 473 B

View File

@@ -71,7 +71,7 @@ function _findProviderForMccMnc(operator_name, operator_code) {
// Tries to find the operator name corresponding to the given SID
//
function _findProviderForSid(sid) {
if (sid == 0)
if (!sid)
return null;
let mpd = _getMobileProvidersDatabase();

View File

@@ -1,4 +1,4 @@
const { Clutter, Gio, GLib, Shell } = imports.gi;
const { Clutter, Gio, GLib, GObject, Shell } = imports.gi;
const CheckBox = imports.ui.checkBox;
const Dialog = imports.ui.dialog;
@@ -15,9 +15,10 @@ var DialogResponse = {
CLOSED: 2
};
var AccessDialog = class extends ModalDialog.ModalDialog {
constructor(invocation, handle, title, subtitle, body, options) {
super({ styleClass: 'access-dialog' });
var AccessDialog = GObject.registerClass(
class AccessDialog extends ModalDialog.ModalDialog {
_init(invocation, handle, title, subtitle, body, options) {
super._init({ styleClass: 'access-dialog' });
this._invocation = invocation;
this._handle = handle;
@@ -109,7 +110,7 @@ var AccessDialog = class extends ModalDialog.ModalDialog {
});
this.close();
}
};
});
var AccessDialogDBus = class {
constructor() {

View File

@@ -1,4 +1,4 @@
const { Clutter, Gio, GLib, Meta, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog;
@@ -13,10 +13,11 @@ var AudioDevice = {
const AudioDeviceSelectionIface = loadInterfaceXML('org.gnome.Shell.AudioDeviceSelection');
var AudioDeviceSelectionDialog =
class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
constructor(devices) {
super({ styleClass: 'audio-device-selection-dialog' });
var AudioDeviceSelectionDialog = GObject.registerClass({
Signals: { 'device-selected': { param_types: [GObject.TYPE_UINT] } }
}, class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
_init(devices) {
super._init({ styleClass: 'audio-device-selection-dialog' });
this._deviceItems = {};
@@ -33,10 +34,6 @@ class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
throw new Error('Too few devices for a selection');
}
destroy() {
super.destroy();
}
_buildLayout(devices) {
let title = new St.Label({ style_class: 'audio-selection-title',
text: _("Select Audio Device"),
@@ -125,7 +122,7 @@ class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
Main.overview.hide();
app.activate();
}
};
});
var AudioDeviceSelectionDBus = class AudioDeviceSelectionDBus {
constructor() {

View File

@@ -10,9 +10,10 @@ const CheckBox = imports.ui.checkBox;
var WORK_SPINNER_ICON_SIZE = 16;
var KeyringDialog = class extends ModalDialog.ModalDialog {
constructor() {
super({ styleClass: 'prompt-dialog' });
var KeyringDialog = GObject.registerClass(
class KeyringDialog extends ModalDialog.ModalDialog {
_init() {
super._init({ styleClass: 'prompt-dialog' });
this.prompt = new Shell.KeyringPrompt();
this.prompt.connect('show-password', this._onShowPassword.bind(this));
@@ -212,7 +213,7 @@ var KeyringDialog = class extends ModalDialog.ModalDialog {
_onCancelButton() {
this.prompt.cancel();
}
};
});
var KeyringDummyDialog = class {
constructor() {

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, NM, Pango, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, GObject, NM, Pango, Shell, St } = imports.gi;
const Signals = imports.signals;
const Config = imports.misc.config;
@@ -12,9 +12,10 @@ const ShellEntry = imports.ui.shellEntry;
const VPN_UI_GROUP = 'VPN Plugin UI';
var NetworkSecretDialog = class extends ModalDialog.ModalDialog {
constructor(agent, requestId, connection, settingName, hints, flags, contentOverride) {
super({ styleClass: 'prompt-dialog' });
var NetworkSecretDialog = GObject.registerClass(
class NetworkSecretDialog extends ModalDialog.ModalDialog {
_init(agent, requestId, connection, settingName, hints, flags, contentOverride) {
super._init({ styleClass: 'prompt-dialog' });
this._agent = agent;
this._requestId = requestId;
@@ -347,7 +348,7 @@ var NetworkSecretDialog = class extends ModalDialog.ModalDialog {
return content;
}
};
});
var VPNRequestHandler = class {
constructor(agent, requestId, authHelper, serviceType, connection, hints, flags) {

View File

@@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { AccountsService, Clutter, Gio, GLib,
Pango, PolkitAgent, Polkit, Shell, St } = imports.gi;
GObject, Pango, PolkitAgent, Polkit, Shell, St } = imports.gi;
const Signals = imports.signals;
const Animation = imports.ui.animation;
@@ -15,9 +15,11 @@ var DIALOG_ICON_SIZE = 48;
var WORK_SPINNER_ICON_SIZE = 16;
var AuthenticationDialog = class extends ModalDialog.ModalDialog {
constructor(actionId, body, cookie, userNames) {
super({ styleClass: 'prompt-dialog' });
var AuthenticationDialog = GObject.registerClass({
Signals: { 'done': { param_types: [GObject.TYPE_BOOLEAN] } }
}, class AuthenticationDialog extends ModalDialog.ModalDialog {
_init(actionId, body, cookie, userNames) {
super._init({ styleClass: 'prompt-dialog' });
this.actionId = actionId;
this.message = body;
@@ -25,7 +27,7 @@ var AuthenticationDialog = class extends ModalDialog.ModalDialog {
this._wasDismissed = false;
this._sessionUpdatedId = Main.sessionMode.connect('updated', () => {
this._group.visible = !Main.sessionMode.isLocked;
this.visible = !Main.sessionMode.isLocked;
});
this.connect('closed', this._onDialogClosed.bind(this));
@@ -326,8 +328,7 @@ var AuthenticationDialog = class extends ModalDialog.ModalDialog {
this._destroySession();
}
};
Signals.addSignalMethods(AuthenticationDialog.prototype);
});
var AuthenticationAgent = class {
constructor() {

View File

@@ -19,7 +19,7 @@
const Mainloop = imports.mainloop;
const { AccountsService, Clutter, Gio,
GLib, Pango, Polkit, Shell, St } = imports.gi;
GLib, GObject, Pango, Polkit, Shell, St } = imports.gi;
const CheckBox = imports.ui.checkBox;
const GnomeSession = imports.misc.gnomeSession;
@@ -226,10 +226,11 @@ function init() {
_endSessionDialog = new EndSessionDialog();
}
var EndSessionDialog = class EndSessionDialog extends ModalDialog.ModalDialog {
constructor() {
super({ styleClass: 'end-session-dialog',
destroyOnClose: false });
var EndSessionDialog = GObject.registerClass(
class EndSessionDialog extends ModalDialog.ModalDialog {
_init() {
super._init({ styleClass: 'end-session-dialog',
destroyOnClose: false });
this._loginManager = LoginManager.getLoginManager();
this._userManager = AccountsService.UserManager.get_default();
@@ -747,4 +748,4 @@ var EndSessionDialog = class EndSessionDialog extends ModalDialog.ModalDialog {
Close(parameters, invocation) {
this.close();
}
};
});

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, Soup, St } = imports.gi;
const { Clutter, Gio, GLib, GObject, Soup, St } = imports.gi;
const Config = imports.misc.config;
const ExtensionUtils = imports.misc.extensionUtils;
@@ -176,10 +176,10 @@ function checkForUpdates() {
});
}
var InstallExtensionDialog =
var InstallExtensionDialog = GObject.registerClass(
class InstallExtensionDialog extends ModalDialog.ModalDialog {
constructor(uuid, info, invocation) {
super({ styleClass: 'extension-dialog' });
_init(uuid, info, invocation) {
super._init({ styleClass: 'extension-dialog' });
this._uuid = uuid;
this._info = info;
@@ -255,7 +255,7 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog {
this.close();
}
};
});
function init() {
_httpSession = new Soup.SessionAsync({ ssl_use_system_ca_file: true });

View File

@@ -1072,8 +1072,7 @@ var LayoutManager = GObject.registerClass({
}
}
if (!Meta.is_wayland_compositor())
global.set_stage_input_region(rects);
global.set_stage_input_region(rects);
this._isPopupWindowVisible = isPopupMenuVisible;
let workspaceManager = global.workspace_manager;

View File

@@ -7,7 +7,7 @@ const Params = imports.misc.params;
const Tweener = imports.ui.tweener;
var DEFAULT_FADE_FACTOR = 0.4;
var VIGNETTE_BRIGHTNESS = 0.8;
var VIGNETTE_BRIGHTNESS = 0.2;
var VIGNETTE_SHARPNESS = 0.7;
const VIGNETTE_DECLARATIONS = '\

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, Meta, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const AccessDialog = imports.ui.accessDialog;
@@ -689,12 +689,13 @@ function queueDeferredWork(workId) {
}
}
var RestartMessage = class extends ModalDialog.ModalDialog {
constructor(message) {
super({ shellReactive: true,
styleClass: 'restart-message headline',
shouldFadeIn: false,
destroyOnClose: true });
var RestartMessage = GObject.registerClass(
class RestartMessage extends ModalDialog.ModalDialog {
_init(message) {
super._init({ shellReactive: true,
styleClass: 'restart-message headline',
shouldFadeIn: false,
destroyOnClose: true });
let label = new St.Label({ text: message });
@@ -704,7 +705,7 @@ var RestartMessage = class extends ModalDialog.ModalDialog {
y_align: St.Align.MIDDLE });
this.buttonLayout.hide();
}
};
});
function showRestartMessage(message) {
let restartMessage = new RestartMessage(message);

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Atk, Clutter, Shell, St } = imports.gi;
const { Atk, Clutter, GObject, Shell, St } = imports.gi;
const Signals = imports.signals;
const Dialog = imports.ui.dialog;
@@ -21,8 +21,20 @@ var State = {
FADED_OUT: 4
};
var ModalDialog = class {
constructor(params) {
var ModalDialog = GObject.registerClass({
Properties: { 'state': GObject.ParamSpec.int('state', 'Dialog state', 'state',
GObject.ParamFlags.READABLE,
Math.min(...Object.values(State)),
Math.max(...Object.values(State)),
State.CLOSED) },
Signals: { 'opened': {}, 'closed': {} }
}, class ModalDialog extends St.Widget {
_init(params) {
super._init({ visible: false,
x: 0,
y: 0,
accessible_role: Atk.Role.DIALOG });
params = Params.parse(params, { shellReactive: false,
styleClass: null,
actionMode: Shell.ActionMode.SYSTEM_MODAL,
@@ -30,7 +42,7 @@ var ModalDialog = class {
shouldFadeOut: true,
destroyOnClose: true });
this.state = State.CLOSED;
this._state = State.CLOSED;
this._hasModal = false;
this._actionMode = params.actionMode;
this._shellReactive = params.shellReactive;
@@ -38,31 +50,25 @@ var ModalDialog = class {
this._shouldFadeOut = params.shouldFadeOut;
this._destroyOnClose = params.destroyOnClose;
this._group = new St.Widget({ visible: false,
x: 0,
y: 0,
accessible_role: Atk.Role.DIALOG });
Main.layoutManager.modalDialogGroup.add_actor(this._group);
Main.layoutManager.modalDialogGroup.add_actor(this);
let constraint = new Clutter.BindConstraint({ source: global.stage,
coordinate: Clutter.BindCoordinate.ALL });
this._group.add_constraint(constraint);
this._group.connect('destroy', this._onGroupDestroy.bind(this));
this.add_constraint(constraint);
this.backgroundStack = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this._backgroundBin = new St.Bin({ child: this.backgroundStack,
x_fill: true, y_fill: true });
this._monitorConstraint = new Layout.MonitorConstraint();
this._backgroundBin.add_constraint(this._monitorConstraint);
this._group.add_actor(this._backgroundBin);
this.add_actor(this._backgroundBin);
this.dialogLayout = new Dialog.Dialog(this.backgroundStack, params.styleClass);
this.contentLayout = this.dialogLayout.contentLayout;
this.buttonLayout = this.dialogLayout.buttonLayout;
if (!this._shellReactive) {
this._lightbox = new Lightbox.Lightbox(this._group,
this._lightbox = new Lightbox.Lightbox(this,
{ inhibitEvents: true,
radialEffect: true });
this._lightbox.highlight(this._backgroundBin);
@@ -77,8 +83,16 @@ var ModalDialog = class {
this._savedKeyFocus = null;
}
destroy() {
this._group.destroy();
get state() {
return this._state;
}
_setState(state) {
if (this._state == state)
return;
this._state = state;
this.notify('state');
}
clearButtons() {
@@ -96,29 +110,25 @@ var ModalDialog = class {
return this.dialogLayout.addButton(buttonInfo);
}
_onGroupDestroy() {
this.emit('destroy');
}
_fadeOpen(onPrimary) {
if (onPrimary)
this._monitorConstraint.primary = true;
else
this._monitorConstraint.index = global.display.get_current_monitor();
this.state = State.OPENING;
this._setState(State.OPENING);
this.dialogLayout.opacity = 255;
if (this._lightbox)
this._lightbox.show();
this._group.opacity = 0;
this._group.show();
Tweener.addTween(this._group,
this.opacity = 0;
this.show();
Tweener.addTween(this,
{ opacity: 255,
time: this._shouldFadeIn ? OPEN_AND_CLOSE_TIME : 0,
transition: 'easeOutQuad',
onComplete: () => {
this.state = State.OPENED;
this._setState(State.OPENED);
this.emit('opened');
}
});
@@ -148,8 +158,8 @@ var ModalDialog = class {
}
_closeComplete() {
this.state = State.CLOSED;
this._group.hide();
this._setState(State.CLOSED);
this.hide();
this.emit('closed');
if (this._destroyOnClose)
@@ -160,12 +170,12 @@ var ModalDialog = class {
if (this.state == State.CLOSED || this.state == State.CLOSING)
return;
this.state = State.CLOSING;
this._setState(State.CLOSING);
this.popModal(timestamp);
this._savedKeyFocus = null;
if (this._shouldFadeOut)
Tweener.addTween(this._group,
Tweener.addTween(this,
{ opacity: 0,
time: OPEN_AND_CLOSE_TIME,
transition: 'easeOutQuad',
@@ -183,11 +193,11 @@ var ModalDialog = class {
return;
let focus = global.stage.key_focus;
if (focus && this._group.contains(focus))
if (focus && this.contains(focus))
this._savedKeyFocus = focus;
else
this._savedKeyFocus = null;
Main.popModal(this._group, timestamp);
Main.popModal(this, timestamp);
this._hasModal = false;
if (!this._shellReactive)
@@ -201,7 +211,7 @@ var ModalDialog = class {
let params = { actionMode: this._actionMode };
if (timestamp)
params['timestamp'] = timestamp;
if (!Main.pushModal(this._group, params))
if (!Main.pushModal(this, params))
return false;
this._hasModal = true;
@@ -242,9 +252,8 @@ var ModalDialog = class {
time: FADE_OUT_DIALOG_TIME,
transition: 'easeOutQuad',
onComplete: () => {
this.state = State.FADED_OUT;
this._setState(State.FADED_OUT);
}
});
}
};
Signals.addSignalMethods(ModalDialog.prototype);
});

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, Meta, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Signals = imports.signals;
const Main = imports.ui.main;
@@ -23,10 +23,11 @@ const EXEC_ARG_KEY = 'exec-arg';
var DIALOG_GROW_TIME = 0.1;
var RunDialog = class extends ModalDialog.ModalDialog {
constructor() {
super({ styleClass: 'run-dialog',
destroyOnClose: false });
var RunDialog = GObject.registerClass(
class RunDialog extends ModalDialog.ModalDialog {
_init() {
super._init({ styleClass: 'run-dialog',
destroyOnClose: false });
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
this._terminalSettings = new Gio.Settings({ schema_id: TERMINAL_SCHEMA });
@@ -282,5 +283,4 @@ var RunDialog = class extends ModalDialog.ModalDialog {
super.open();
}
};
Signals.addSignalMethods(RunDialog.prototype);
});

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, Pango, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, GObject, Pango, Shell, St } = imports.gi;
const Signals = imports.signals;
const Animation = imports.ui.animation;
@@ -269,9 +269,11 @@ var ShellUnmountNotifier = class extends MessageTray.Source {
}
};
var ShellMountQuestionDialog = class extends ModalDialog.ModalDialog {
constructor(icon) {
super({ styleClass: 'mount-dialog' });
var ShellMountQuestionDialog = GObject.registerClass({
Signals: { 'response': { param_types: [GObject.TYPE_INT] } }
}, class ShellMountQuestionDialog extends ModalDialog.ModalDialog {
_init(icon) {
super._init({ styleClass: 'mount-dialog' });
this._content = new Dialog.MessageDialogContent({ icon });
this.contentLayout.add(this._content, { x_fill: true, y_fill: false });
@@ -281,15 +283,21 @@ var ShellMountQuestionDialog = class extends ModalDialog.ModalDialog {
_setLabelsForMessage(this._content, message);
_setButtonsForChoices(this, choices);
}
};
Signals.addSignalMethods(ShellMountQuestionDialog.prototype);
});
var ShellMountPasswordDialog = class extends ModalDialog.ModalDialog {
constructor(message, icon, flags) {
var ShellMountPasswordDialog = GObject.registerClass({
Signals: { 'response': { param_types: [GObject.TYPE_INT,
GObject.TYPE_STRING,
GObject.TYPE_BOOLEAN,
GObject.TYPE_BOOLEAN,
GObject.TYPE_BOOLEAN,
GObject.TYPE_UINT] } }
}, class ShellMountPasswordDialog extends ModalDialog.ModalDialog {
_init(message, icon, flags) {
let strings = message.split('\n');
let title = strings.shift() || null;
let body = strings.shift() || null;
super({ styleClass: 'prompt-dialog' });
super._init({ styleClass: 'prompt-dialog' });
let disksApp = Shell.AppSystem.get_default().lookup_app('org.gnome.DiskUtility.desktop');
@@ -422,7 +430,7 @@ var ShellMountPasswordDialog = class extends ModalDialog.ModalDialog {
}
_onCancelButton() {
this.emit('response', -1, '', false);
this.emit('response', -1, '', false, false, false, 0);
}
_onUnlockButton() {
@@ -453,7 +461,7 @@ var ShellMountPasswordDialog = class extends ModalDialog.ModalDialog {
this._hiddenVolume.actor.checked,
this._systemVolume &&
this._systemVolume.actor.checked,
pim);
parseInt(pim));
}
_onKeyfilesCheckboxClicked() {
@@ -481,15 +489,17 @@ var ShellMountPasswordDialog = class extends ModalDialog.ModalDialog {
/* Translators: %s is the Disks application */
_("Unable to start %s").format(app.get_name()),
/* Translators: %s is the Disks application */
_("Couldn't find the %s application").format(app.get_name())
_("Couldnt find the %s application").format(app.get_name())
);
this._onCancelButton();
}
};
});
var ShellProcessesDialog = class extends ModalDialog.ModalDialog {
constructor(icon) {
super({ styleClass: 'mount-dialog' });
var ShellProcessesDialog = GObject.registerClass({
Signals: { 'response': { param_types: [GObject.TYPE_INT] } }
}, class ShellProcessesDialog extends ModalDialog.ModalDialog {
_init(icon) {
super._init({ styleClass: 'mount-dialog' });
this._content = new Dialog.MessageDialogContent({ icon });
this.contentLayout.add(this._content, { x_fill: true, y_fill: false });
@@ -542,8 +552,7 @@ var ShellProcessesDialog = class extends ModalDialog.ModalDialog {
_setLabelsForMessage(this._content, message);
_setButtonsForChoices(this, choices);
}
};
Signals.addSignalMethods(ShellProcessesDialog.prototype);
});
const GnomeShellMountOpIface = loadInterfaceXML('org.Gtk.MountOperationHandler');
@@ -659,7 +668,7 @@ var GnomeShellMountOpHandler = class {
details['password'] = GLib.Variant.new('s', password);
details['hidden_volume'] = GLib.Variant.new('b', hiddenVolume);
details['system_volume'] = GLib.Variant.new('b', systemVolume);
details['pim'] = GLib.Variant.new('u', parseInt(pim));
details['pim'] = GLib.Variant.new('u', pim);
}
this._clearCurrentRequest(response, details);

View File

@@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Gio, GLib, Shell } = imports.gi;
const { Clutter, Gio, GLib, GObject, Shell } = imports.gi;
const Dialog = imports.ui.dialog;
const Main = imports.ui.main;
@@ -342,9 +342,11 @@ var AppAuthorizer = class {
}
};
var GeolocationDialog = class extends ModalDialog.ModalDialog {
constructor(name, subtitle, reqAccuracyLevel) {
super({ styleClass: 'geolocation-dialog' });
var GeolocationDialog = GObject.registerClass({
Signals: { 'response': { param_types: [GObject.TYPE_UINT] } }
}, class GeolocationDialog extends ModalDialog.ModalDialog {
_init(name, subtitle, reqAccuracyLevel) {
super._init({ styleClass: 'geolocation-dialog' });
this.reqAccuracyLevel = reqAccuracyLevel;
let icon = new Gio.ThemedIcon({ name: 'find-location-symbolic' });
@@ -375,5 +377,4 @@ var GeolocationDialog = class extends ModalDialog.ModalDialog {
this.emit('response', GeoclueAccuracyLevel.NONE);
this.close();
}
};
Signals.addSignalMethods(GeolocationDialog.prototype);
});

View File

@@ -613,31 +613,36 @@ var NMDeviceBluetooth = class extends NMConnectionDevice {
}
};
var NMWirelessDialogItem = class {
constructor(network) {
var NMWirelessDialogItem = GObject.registerClass({
Signals: {
'selected': {},
}
}, class NMWirelessDialogItem extends St.BoxLayout {
_init(network) {
this._network = network;
this._ap = network.accessPoints[0];
this.actor = new St.BoxLayout({ style_class: 'nm-dialog-item',
can_focus: true,
reactive: true });
this.actor.connect('key-focus-in', () => { this.emit('selected'); });
super._init({ style_class: 'nm-dialog-item',
can_focus: true,
reactive: true });
this.connect('key-focus-in', () => { this.emit('selected'); });
let action = new Clutter.ClickAction();
action.connect('clicked', () => { this.actor.grab_key_focus(); });
this.actor.add_action(action);
action.connect('clicked', () => { this.grab_key_focus(); });
this.add_action(action);
let title = ssidToLabel(this._ap.get_ssid());
this._label = new St.Label({ text: title });
this.actor.label_actor = this._label;
this.actor.add(this._label, { x_align: St.Align.START });
this.label_actor = this._label;
this.add(this._label, { x_align: St.Align.START });
this._selectedIcon = new St.Icon({ style_class: 'nm-dialog-icon',
icon_name: 'object-select-symbolic' });
this.actor.add(this._selectedIcon);
this.add(this._selectedIcon);
this._icons = new St.BoxLayout({ style_class: 'nm-dialog-icons' });
this.actor.add(this._icons, { expand: true, x_fill: false, x_align: St.Align.END });
this.add(this._icons, { expand: true, x_fill: false, x_align: St.Align.END });
this._secureIcon = new St.Icon({ style_class: 'nm-dialog-icon' });
if (this._ap._secType != NMAccessPointSecurity.NONE)
@@ -669,12 +674,12 @@ var NMWirelessDialogItem = class {
else
return 'network-wireless-signal-' + signalToIcon(this._ap.strength) + '-symbolic';
}
};
Signals.addSignalMethods(NMWirelessDialogItem.prototype);
});
var NMWirelessDialog = class extends ModalDialog.ModalDialog {
constructor(client, device) {
super({ styleClass: 'nm-dialog' });
var NMWirelessDialog = GObject.registerClass(
class NMWirelessDialog extends ModalDialog.ModalDialog {
_init(client, device) {
super._init({ styleClass: 'nm-dialog' });
this._client = client;
this._device = device;
@@ -720,9 +725,11 @@ var NMWirelessDialog = class extends ModalDialog.ModalDialog {
Main.sessionMode.disconnect(id);
this.close();
});
this.connect('destroy', this._onDestroy.bind(this));
}
destroy() {
_onDestroy() {
if (this._apAddedId) {
GObject.Object.prototype.disconnect.call(this._device, this._apAddedId);
this._apAddedId = 0;
@@ -748,8 +755,6 @@ var NMWirelessDialog = class extends ModalDialog.ModalDialog {
Mainloop.source_remove(this._scanTimeoutId);
this._scanTimeoutId = 0;
}
super.destroy();
}
_onScanTimeout() {
@@ -1140,7 +1145,7 @@ var NMWirelessDialog = class extends ModalDialog.ModalDialog {
this._itemBox.grab_key_focus();
});
}
};
});
var NMDeviceWireless = class {
constructor(client, device) {

View File

@@ -69,8 +69,6 @@ var Source = class WindowAttentionSource extends MessageTray.Source {
() => { this.destroy(); }));
this.signalIDs.push(this._window.connect('unmanaged',
() => { this.destroy(); }));
this.connect('destroy', this._onDestroy.bind(this));
}
_sync() {
@@ -79,13 +77,6 @@ var Source = class WindowAttentionSource extends MessageTray.Source {
this.destroy();
}
_onDestroy() {
for(let i = 0; i < this.signalIDs.length; i++) {
this._window.disconnect(this.signalIDs[i]);
}
this.signalIDs = [];
}
_createPolicy() {
if (this._app && this._app.get_app_info()) {
let id = this._app.get_id().replace(/\.desktop$/,'');
@@ -99,6 +90,14 @@ var Source = class WindowAttentionSource extends MessageTray.Source {
return this._app.create_icon_texture(size);
}
destroy(params) {
for (let i = 0; i < this.signalIDs.length; i++)
this._window.disconnect(this.signalIDs[i]);
this.signalIDs = [];
super.destroy(params);
}
open() {
Main.activateWindow(this._window);
}

View File

@@ -40,9 +40,10 @@ const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom';
const GsdWacomIface = loadInterfaceXML('org.gnome.SettingsDaemon.Wacom');
const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface);
var DisplayChangeDialog = class extends ModalDialog.ModalDialog {
constructor(wm) {
super({ styleClass: 'prompt-dialog' });
var DisplayChangeDialog = GObject.registerClass(
class DisplayChangeDialog extends ModalDialog.ModalDialog {
_init(wm) {
super._init({ styleClass: 'prompt-dialog' });
this._wm = wm;
@@ -111,7 +112,7 @@ var DisplayChangeDialog = class extends ModalDialog.ModalDialog {
this._wm.complete_display_change(true);
this.close();
}
};
});
var WindowDimmer = class {
constructor(actor) {

View File

@@ -14,7 +14,7 @@ cogl_pango_pc = 'mutter-cogl-pango-' + mutter_api_version
libmutter_pc = 'libmutter-' + mutter_api_version
croco_req = '>= 0.6.8'
ecal_req = '>= 3.33.1'
ecal_req = '>= 3.5.3'
eds_req = '>= 3.17.2'
gcr_req = '>= 3.7.5'
gdesktop_req = '>= 3.7.90'
@@ -73,7 +73,7 @@ else
endif
atk_bridge_dep = dependency('atk-bridge-2.0')
ecal_dep = dependency('libecal-2.0', version: ecal_req)
ecal_dep = dependency('libecal-1.2', version: ecal_req)
eds_dep = dependency('libedataserver-1.2', version: eds_req)
gcr_dep = dependency('gcr-base-3', version: gcr_req)
gdk_x11_dep = dependency('gdk-x11-3.0')

View File

@@ -295,13 +295,13 @@ create_client_for_source (ESource *source,
CalendarSourceData *source_data)
{
ClientData *data;
EClient *client;
ECalClient *client;
GError *error = NULL;
client = g_hash_table_lookup (source_data->clients, source);
g_return_if_fail (client == NULL);
client = e_cal_client_connect_sync (source, source_type, -1, NULL, &error);
client = e_cal_client_new (source, source_type, &error);
if (!client)
{
g_warning ("Could not load source '%s': %s",
@@ -312,7 +312,7 @@ create_client_for_source (ESource *source,
}
data = g_slice_new0 (ClientData);
data->client = E_CAL_CLIENT (client); /* takes ownership */
data->client = client; /* takes ownership */
data->backend_died_id = g_signal_connect (client,
"backend-died",
G_CALLBACK (backend_died_cb),

View File

@@ -102,120 +102,97 @@ typedef struct
} CollectAppointmentsData;
static time_t
get_time_from_property (ICalComponent *icomp,
ICalPropertyKind prop_kind,
ICalTime * (* get_prop_func) (ICalProperty *prop),
ICalTimezone *default_zone)
get_time_from_property (icalcomponent *ical,
icalproperty_kind prop_kind,
struct icaltimetype (* get_prop_func) (const icalproperty *prop),
icaltimezone *default_zone)
{
ICalProperty *prop;
ICalTime *itt;
ICalParameter *param;
ICalTimezone *timezone = NULL;
time_t retval;
icalproperty *prop;
struct icaltimetype ical_time;
icalparameter *param;
icaltimezone *timezone = NULL;
prop = i_cal_component_get_first_property (icomp, prop_kind);
prop = icalcomponent_get_first_property (ical, prop_kind);
if (!prop)
return 0;
itt = get_prop_func (prop);
ical_time = get_prop_func (prop);
param = i_cal_property_get_first_parameter (prop, I_CAL_TZID_PARAMETER);
param = icalproperty_get_first_parameter (prop, ICAL_TZID_PARAMETER);
if (param)
timezone = i_cal_timezone_get_builtin_timezone_from_tzid (i_cal_parameter_get_tzid (param));
else if (i_cal_time_is_utc (itt))
timezone = i_cal_timezone_get_utc_timezone ();
timezone = icaltimezone_get_builtin_timezone_from_tzid (icalparameter_get_tzid (param));
else if (icaltime_is_utc (ical_time))
timezone = icaltimezone_get_utc_timezone ();
else
timezone = default_zone;
retval = i_cal_time_as_timet_with_zone (itt, timezone);
g_clear_object (&param);
g_clear_object (&prop);
g_clear_object (&itt);
return retval;
return icaltime_as_timet_with_zone (ical_time, timezone);
}
static char *
get_ical_uid (ICalComponent *icomp)
get_ical_uid (icalcomponent *ical)
{
return g_strdup (i_cal_component_get_uid (icomp));
return g_strdup (icalcomponent_get_uid (ical));
}
static char *
get_ical_summary (ICalComponent *icomp)
get_ical_summary (icalcomponent *ical)
{
ICalProperty *prop;
char *retval;
icalproperty *prop;
prop = i_cal_component_get_first_property (icomp, I_CAL_SUMMARY_PROPERTY);
prop = icalcomponent_get_first_property (ical, ICAL_SUMMARY_PROPERTY);
if (!prop)
return NULL;
retval = g_strdup (i_cal_property_get_summary (prop));
g_object_unref (prop);
return retval;
return g_strdup (icalproperty_get_summary (prop));
}
static char *
get_ical_description (ICalComponent *icomp)
get_ical_description (icalcomponent *ical)
{
ICalProperty *prop;
char *retval;
icalproperty *prop;
prop = i_cal_component_get_first_property (icomp, I_CAL_DESCRIPTION_PROPERTY);
prop = icalcomponent_get_first_property (ical, ICAL_DESCRIPTION_PROPERTY);
if (!prop)
return NULL;
retval = g_strdup (i_cal_property_get_description (prop));
g_object_unref (prop);
return retval;
return g_strdup (icalproperty_get_description (prop));
}
static inline time_t
get_ical_start_time (ICalComponent *icomp,
ICalTimezone *default_zone)
get_ical_start_time (icalcomponent *ical,
icaltimezone *default_zone)
{
return get_time_from_property (icomp,
I_CAL_DTSTART_PROPERTY,
i_cal_property_get_dtstart,
return get_time_from_property (ical,
ICAL_DTSTART_PROPERTY,
icalproperty_get_dtstart,
default_zone);
}
static inline time_t
get_ical_end_time (ICalComponent *icomp,
ICalTimezone *default_zone)
get_ical_end_time (icalcomponent *ical,
icaltimezone *default_zone)
{
return get_time_from_property (icomp,
I_CAL_DTEND_PROPERTY,
i_cal_property_get_dtend,
return get_time_from_property (ical,
ICAL_DTEND_PROPERTY,
icalproperty_get_dtend,
default_zone);
}
static gboolean
get_ical_is_all_day (ICalComponent *icomp,
get_ical_is_all_day (icalcomponent *ical,
time_t start_time,
ICalTimezone *default_zone)
icaltimezone *default_zone)
{
ICalProperty *prop;
ICalDuration *duration;
ICalTime *dtstart;
struct tm *start_tm;
time_t end_time;
gboolean retval;
icalproperty *prop;
struct tm *start_tm;
time_t end_time;
struct icaldurationtype duration;
struct icaltimetype start_icaltime;
dtstart = i_cal_component_get_dtstart (icomp);
if (dtstart && i_cal_time_is_date (dtstart))
{
g_clear_object (&dtstart);
return TRUE;
}
g_clear_object (&dtstart);
start_icaltime = icalcomponent_get_dtstart (ical);
if (start_icaltime.is_date)
return TRUE;
start_tm = gmtime (&start_time);
if (start_tm->tm_sec != 0 ||
@@ -223,40 +200,35 @@ get_ical_is_all_day (ICalComponent *icomp,
start_tm->tm_hour != 0)
return FALSE;
if ((end_time = get_ical_end_time (icomp, default_zone)))
if ((end_time = get_ical_end_time (ical, default_zone)))
return (end_time - start_time) % 86400 == 0;
prop = i_cal_component_get_first_property (icomp, I_CAL_DURATION_PROPERTY);
prop = icalcomponent_get_first_property (ical, ICAL_DURATION_PROPERTY);
if (!prop)
return FALSE;
duration = i_cal_property_get_duration (prop);
duration = icalproperty_get_duration (prop);
retval = duration && (i_cal_duration_as_int (duration) % 86400) == 0;
g_clear_object (&duration);
g_clear_object (&prop);
return retval;
return icaldurationtype_as_int (duration) % 86400 == 0;
}
static inline time_t
get_ical_due_time (ICalComponent *icomp,
ICalTimezone *default_zone)
get_ical_due_time (icalcomponent *ical,
icaltimezone *default_zone)
{
return get_time_from_property (icomp,
I_CAL_DUE_PROPERTY,
i_cal_property_get_due,
return get_time_from_property (ical,
ICAL_DUE_PROPERTY,
icalproperty_get_due,
default_zone);
}
static inline time_t
get_ical_completed_time (ICalComponent *icomp,
ICalTimezone *default_zone)
get_ical_completed_time (icalcomponent *ical,
icaltimezone *default_zone)
{
return get_time_from_property (icomp,
I_CAL_COMPLETED_PROPERTY,
i_cal_property_get_completed,
return get_time_from_property (ical,
ICAL_COMPLETED_PROPERTY,
icalproperty_get_completed,
default_zone);
}
@@ -393,69 +365,67 @@ calendar_appointment_free (CalendarAppointment *appointment)
static void
calendar_appointment_init (CalendarAppointment *appointment,
ICalComponent *icomp,
icalcomponent *ical,
ECalClient *cal)
{
ICalTimezone *default_zone;
icaltimezone *default_zone;
const char *source_id;
source_id = e_source_get_uid (e_client_get_source (E_CLIENT (cal)));
default_zone = e_cal_client_get_default_timezone (cal);
appointment->uid = get_ical_uid (icomp);
appointment->uid = get_ical_uid (ical);
appointment->source_id = g_strdup (source_id);
appointment->backend_name = get_source_backend_name (cal);
appointment->summary = get_ical_summary (icomp);
appointment->description = get_ical_description (icomp);
appointment->summary = get_ical_summary (ical);
appointment->description = get_ical_description (ical);
appointment->color_string = get_source_color (cal);
appointment->start_time = get_ical_start_time (icomp, default_zone);
appointment->end_time = get_ical_end_time (icomp, default_zone);
appointment->is_all_day = get_ical_is_all_day (icomp,
appointment->start_time = get_ical_start_time (ical, default_zone);
appointment->end_time = get_ical_end_time (ical, default_zone);
appointment->is_all_day = get_ical_is_all_day (ical,
appointment->start_time,
default_zone);
}
static CalendarAppointment *
calendar_appointment_new (ICalComponent *icomp,
calendar_appointment_new (icalcomponent *ical,
ECalClient *cal)
{
CalendarAppointment *appointment;
appointment = g_new0 (CalendarAppointment, 1);
calendar_appointment_init (appointment, icomp, cal);
calendar_appointment_init (appointment, ical, cal);
return appointment;
}
static gboolean
generate_instances_cb (ICalComponent *icomp,
ICalTime *instance_start,
ICalTime *instance_end,
gpointer user_data,
GCancellable *cancellable,
GError **error)
generate_instances_cb (ECalComponent *comp,
time_t start,
time_t end,
gpointer data)
{
ECalClient *cal = ((CollectAppointmentsData *)user_data)->client;
GHashTable *appointments = ((CollectAppointmentsData *)user_data)->appointments;
ECalClient *cal = ((CollectAppointmentsData *)data)->client;
GHashTable *appointments = ((CollectAppointmentsData *)data)->appointments;
CalendarAppointment *appointment;
CalendarOccurrence *occurrence;
ICalTimezone *default_zone;
const gchar *uid;
const char *uid;
default_zone = e_cal_client_get_default_timezone (cal);
uid = i_cal_component_get_uid (icomp);
e_cal_component_get_uid (comp, &uid);
appointment = g_hash_table_lookup (appointments, uid);
if (appointment == NULL)
{
appointment = calendar_appointment_new (icomp, cal);
icalcomponent *ical = e_cal_component_get_icalcomponent (comp);
appointment = calendar_appointment_new (ical, cal);
g_hash_table_insert (appointments, g_strdup (uid), appointment);
}
occurrence = g_new0 (CalendarOccurrence, 1);
occurrence->start_time = i_cal_time_as_timet_with_zone (instance_start, default_zone);
occurrence->end_time = i_cal_time_as_timet_with_zone (instance_end, default_zone);
occurrence->rid = e_cal_util_component_get_recurid_as_string (icomp);
occurrence->start_time = start;
occurrence->end_time = end;
occurrence->rid = e_cal_component_get_recurid_as_string (comp);
appointment->occurrences = g_slist_append (appointment->occurrences, occurrence);
@@ -472,7 +442,7 @@ struct _App
time_t since;
time_t until;
ICalTimezone *zone;
icaltimezone *zone;
CalendarSources *sources;
gulong sources_signal_id;
@@ -498,9 +468,9 @@ app_update_timezone (App *app)
if (g_strcmp0 (location, app->timezone_location) != 0)
{
if (location == NULL)
app->zone = i_cal_timezone_get_utc_timezone ();
app->zone = icaltimezone_get_utc_timezone ();
else
app->zone = i_cal_timezone_get_builtin_timezone (location);
app->zone = icaltimezone_get_builtin_timezone (location);
g_free (app->timezone_location);
app->timezone_location = location;
print_debug ("Using timezone %s", app->timezone_location);
@@ -558,10 +528,10 @@ on_objects_added (ECalClientView *view,
for (l = objects; l != NULL; l = l->next)
{
ICalComponent *icomp = l->data;
icalcomponent *ical = l->data;
const char *uid;
uid = i_cal_component_get_uid (icomp);
uid = icalcomponent_get_uid (ical);
if (g_hash_table_lookup (app->appointments, uid) == NULL)
{
@@ -630,7 +600,7 @@ app_load_events (App *app)
since_iso8601 = isodate_from_time_t (app->since);
until_iso8601 = isodate_from_time_t (app->until);
tz_location = i_cal_timezone_get_location (app->zone);
tz_location = icaltimezone_get_location (app->zone);
print_debug ("Loading events since %s until %s",
since_iso8601,
@@ -652,12 +622,21 @@ app_load_events (App *app)
e_cal_client_set_default_timezone (cal, app->zone);
error = NULL;
if (!e_client_open_sync (E_CLIENT (cal), TRUE, NULL, &error))
{
ESource *source = e_client_get_source (E_CLIENT (cal));
g_warning ("Error opening calendar %s: %s\n",
e_source_get_uid (source), error->message);
g_error_free (error);
continue;
}
data.client = cal;
data.appointments = app->appointments;
e_cal_client_generate_instances_sync (cal,
app->since,
app->until,
NULL,
generate_instances_cb,
&data);

View File

@@ -1151,11 +1151,10 @@ _shell_app_handle_startup_sequence (ShellApp *app,
if (starting && shell_app_get_state (app) == SHELL_APP_STATE_STOPPED)
{
MetaDisplay *display = shell_global_get_display (shell_global_get ());
MetaX11Display *x11_display = meta_display_get_x11_display (display);
shell_app_state_transition (app, SHELL_APP_STATE_STARTING);
meta_x11_display_focus_the_no_focus_window (x11_display,
meta_startup_sequence_get_timestamp (sequence));
meta_display_unset_input_focus (display,
meta_startup_sequence_get_timestamp (sequence));
app->started_on_workspace = meta_startup_sequence_get_workspace (sequence);
}

View File

@@ -61,8 +61,6 @@ struct _ShellGlobal {
MetaDisplay *meta_display;
MetaWorkspaceManager *workspace_manager;
GdkDisplay *gdk_display;
MetaX11Display *x11_display;
Display *xdisplay;
char *session_mode;
@@ -642,6 +640,9 @@ shell_global_set_stage_input_region (ShellGlobal *global,
g_return_if_fail (SHELL_IS_GLOBAL (global));
if (meta_is_wayland_compositor ())
return;
nrects = g_slist_length (rectangles);
rects = g_new (XRectangle, nrects);
for (r = rectangles, i = 0; r; r = r->next, i++)
@@ -846,10 +847,6 @@ _shell_global_set_plugin (ShellGlobal *global,
display = meta_plugin_get_display (plugin);
global->meta_display = display;
global->workspace_manager = meta_display_get_workspace_manager (display);
global->x11_display = meta_display_get_x11_display (display);
global->xdisplay = meta_x11_display_get_xdisplay (global->x11_display);
global->gdk_display = gdk_x11_lookup_xdisplay (global->xdisplay);
global->stage = CLUTTER_STAGE (meta_get_stage_for_display (display));
@@ -859,6 +856,8 @@ _shell_global_set_plugin (ShellGlobal *global,
}
else
{
MetaX11Display *x11_display = meta_display_get_x11_display (display);
global->xdisplay = meta_x11_display_get_xdisplay (x11_display);
global->stage_xwindow = clutter_x11_get_stage_window (global->stage);
}
@@ -1561,7 +1560,8 @@ delete_variant_cb (GObject *object,
if (!g_file_delete_finish (G_FILE (object), result, &error))
{
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) &&
!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND))
{
g_warning ("Could not delete runtime/persistent state file: %s\n",
error->message);

View File

@@ -115,7 +115,8 @@ remove_mnemonics (const GValue *value)
g_return_val_if_fail (G_VALUE_HOLDS_STRING (value), NULL);
label = g_value_get_string (value);
g_return_val_if_fail (label != NULL, NULL);
if (!label)
return NULL;
/* Stripped label will have the original label length at most */
stripped_label = temp = g_new (gchar, strlen(label) + 1);