Skip to content
Commits on Source (54)
43.1
====
* Fix default keyboard layout during initial setup [Carlos; !2487, !2495]
* Show Bluetooth switch in more cases [Bastien; !2488]
* Include origin in sound device switcher [Florian; !2502]
* Fix remembering inhibit-shortcut permission for multiple apps [Florian; !2504]
* Forward TERMINAL input purpose to ibus [Jonas; !2511]
* Fix style glitches [Sam; !2513, !2510]
* Fix tracking of newly installed apps [Florian; !2480]
* Fix space key getting stuck in on-screen keyboard [Carlos; !2508]
* Fix showing passwords as on-screen keyboard suggestions [Carlos; !2512]
* Fix network portal regression [Marco; !2524]
* Fix possible freeze during initialization [Florian; !2519]
* Misc. bug fixes and cleanups [Andy, Jonas, Alessandro, Florian, Sebastian;
!2470, !2476, !2471, !2483, !2518, !2503]
Contributors:
Marco Trevisan (Treviño), Alessandro Bono, Carlos Garnacho, Sam Hewitt,
Andy Holmes, Sebastian Keller, Florian Müllner, Bastien Nocera, Jonas Ådahl
Translators:
Baurzhan Muftakhidinov [kk], Марко Костић [sr], Yosef Or Boczko [he],
Guillaume Bernard [fr], Hugo Carvalho [pt], Kukuh Syafaat [id],
Pawan Chitrakar [ne], Aleksandr Melman [ru], Aurimas Černius [lt],
Anders Jonsson [sv], Jordi Mas [ca], Danial Behzadi [fa], Dušan Kazik [sk],
Fabio Tomat [fur], Olexander [uk], Nart Tlisha [ab], Cheng-Chia Tseng [zh_TW],
Alexander Shopov [bg], Zurab Kargareteli [ka], A S Alam [pa],
Kosmas Martakidis [el], Nathan Follens [nl]
43.0
====
* Fix rebooting into boot loader menu [Florian; !2472]
......
......@@ -13,6 +13,13 @@
<arg name="app_permissions" type="a{sas}" direction="in"/>
<arg name="data" type="v" direction="in"/>
</method>
<method name="SetPermission">
<arg name='table' type='s' direction='in'/>
<arg name='create' type='b' direction='in'/>
<arg name='id' type='s' direction='in'/>
<arg name='app' type='s' direction='in'/>
<arg name='permissions' type='as' direction='in'/>
</method>
<signal name="Changed">
<arg name="table" type="s" direction="out"/>
<arg name="id" type="s" direction="out"/>
......
......@@ -10,6 +10,7 @@
The interface used to record screen contents.
-->
<interface name="org.gnome.Shell.Screencast">
<property name="ScreencastSupported" type="b" access="read"/>
<!--
Screencast:
......
......@@ -84,16 +84,6 @@
This key sets the default state of the checkbox.
</description>
</key>
<key name="had-bluetooth-devices-setup" type="b">
<default>false</default>
<summary>Whether the default Bluetooth adapter had set up devices associated to it</summary>
<description>
The shell will only show a Bluetooth menu item if a Bluetooth
adapter is powered, or if there were devices set up associated
with the default adapter. This will be reset if the default
adapter is ever seen not to have devices associated to it.
</description>
</key>
<key name="last-selected-power-profile" type="s">
<default>"power-saver"</default>
<summary>The last selected non-default power profile</summary>
......
......@@ -48,7 +48,7 @@ stage {
border-radius: 11px;
border: 1px solid #2b2b2b; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button, .app-folder-dialog .folder-name-container .edit-folder-button, .button {
#LookingGlassDialog > #Toolbar .lg-toolbar-button, .app-folder-dialog .folder-name-container .edit-folder-button, .button, .icon-button {
border-radius: 6px;
border-style: solid;
border-width: 1px;
......@@ -58,95 +58,88 @@ stage {
color: white;
background-color: #1a1a1a;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2); }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus, .app-folder-dialog .folder-name-container .edit-folder-button:focus, .button:focus {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus, .app-folder-dialog .folder-name-container .edit-folder-button:focus, .button:focus, .icon-button:focus {
transition-duration: 100ms;
color: white;
background-color: #1d252e;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.6) !important; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus:hover, .app-folder-dialog .folder-name-container .edit-folder-button:focus:hover, .button:focus:hover {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus:hover, .app-folder-dialog .folder-name-container .edit-folder-button:focus:hover, .button:focus:hover, .icon-button:focus:hover {
background-color: #242b35;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus:active, .app-folder-dialog .folder-name-container .edit-folder-button:focus:active, .button:focus:active {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus:active, .app-folder-dialog .folder-name-container .edit-folder-button:focus:active, .button:focus:active, .icon-button:focus:active {
background-color: #2a323c;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:hover, .app-folder-dialog .folder-name-container .edit-folder-button:hover, .button:hover {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:hover, .app-folder-dialog .folder-name-container .edit-folder-button:hover, .button:hover, .icon-button:hover {
transition-duration: 100ms;
color: white;
background-color: #222222;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
background-color: rgba(144, 144, 144, 0.28); }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:insensitive, .app-folder-dialog .folder-name-container .edit-folder-button:insensitive, .button:insensitive {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:insensitive, .app-folder-dialog .folder-name-container .edit-folder-button:insensitive, .button:insensitive, .icon-button:insensitive {
transition-duration: 100ms;
color: rgba(255, 255, 255, 0.5);
background-color: rgba(255, 255, 255, 0.05);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0); }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:active, .app-folder-dialog .folder-name-container .edit-folder-button:active, .button:active {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:active, .app-folder-dialog .folder-name-container .edit-folder-button:active, .button:active, .icon-button:active {
transition-duration: 100ms;
color: white;
background-color: #292929;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
background-color: rgba(148, 148, 148, 0.28); }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked, .app-folder-dialog .folder-name-container .edit-folder-button:checked, .button:checked {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked, .app-folder-dialog .folder-name-container .edit-folder-button:checked, .button:checked, .icon-button:checked {
transition-duration: 100ms;
color: white;
background-color: #313131;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
background-color: rgba(152, 152, 152, 0.28); }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked:hover, .app-folder-dialog .folder-name-container .edit-folder-button:checked:hover, .button:checked:hover {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked:hover, .app-folder-dialog .folder-name-container .edit-folder-button:checked:hover, .button:checked:hover, .icon-button:checked:hover {
background-color: #393939; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked:active, .app-folder-dialog .folder-name-container .edit-folder-button:checked:active, .button:checked:active {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked:active, .app-folder-dialog .folder-name-container .edit-folder-button:checked:active, .button:checked:active, .icon-button:checked:active {
background-color: #404040; }
.icon-button {
border-radius: 99px;
border-style: solid;
border-width: 1px;
font-weight: bold;
padding: 12px;
transition-duration: 100ms;
color: white;
background-color: #1a1a1a;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2); }
.icon-button:focus {
transition-duration: 100ms;
color: white;
background-color: #1d252e;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.6) !important; }
.icon-button:focus:hover {
background-color: #242b35;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.icon-button:focus:active {
background-color: #2a323c;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.icon-button:hover {
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button, .app-folder-dialog .folder-name-container .flat.edit-folder-button, .flat.button, .flat.icon-button {
transition-duration: 100ms;
color: white;
background-color: #222222;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
background-color: rgba(144, 144, 144, 0.28); }
.icon-button:insensitive {
transition-duration: 100ms;
color: rgba(255, 255, 255, 0.5);
background-color: rgba(255, 255, 255, 0.05);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0); }
.icon-button:active {
transition-duration: 100ms;
color: white;
background-color: #292929;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
background-color: rgba(148, 148, 148, 0.28); }
.icon-button:checked {
transition-duration: 100ms;
color: white;
background-color: #313131;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
background-color: rgba(152, 152, 152, 0.28); }
.icon-button:checked:hover {
background-color: #393939; }
.icon-button:checked:active {
background-color: #404040; }
.icon-button > StIcon {
icon-size: 1.09em; }
background-color: #1a1a1a;
background-color: transparent;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2); }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:focus, .app-folder-dialog .folder-name-container .flat.edit-folder-button:focus, .flat.button:focus, .flat.icon-button:focus {
transition-duration: 100ms;
color: white;
background-color: #1d252e;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.6) !important; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:focus:hover, .app-folder-dialog .folder-name-container .flat.edit-folder-button:focus:hover, .flat.button:focus:hover, .flat.icon-button:focus:hover {
background-color: #242b35;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:focus:active, .app-folder-dialog .folder-name-container .flat.edit-folder-button:focus:active, .flat.button:focus:active, .flat.icon-button:focus:active {
background-color: #2a323c;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:hover, .app-folder-dialog .folder-name-container .flat.edit-folder-button:hover, .flat.button:hover, .flat.icon-button:hover {
transition-duration: 100ms;
color: white;
background-color: #222222;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
background-color: rgba(144, 144, 144, 0.28); }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:insensitive, .app-folder-dialog .folder-name-container .flat.edit-folder-button:insensitive, .flat.button:insensitive, .flat.icon-button:insensitive {
transition-duration: 100ms;
color: rgba(255, 255, 255, 0.5);
background-color: rgba(255, 255, 255, 0.05);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0); }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:active, .app-folder-dialog .folder-name-container .flat.edit-folder-button:active, .flat.button:active, .flat.icon-button:active {
transition-duration: 100ms;
color: white;
background-color: #292929;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
background-color: rgba(148, 148, 148, 0.28); }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:checked, .app-folder-dialog .folder-name-container .flat.edit-folder-button:checked, .flat.button:checked, .flat.icon-button:checked {
transition-duration: 100ms;
color: white;
background-color: #313131;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
background-color: rgba(152, 152, 152, 0.28); }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:checked:hover, .app-folder-dialog .folder-name-container .flat.edit-folder-button:checked:hover, .flat.button:checked:hover, .flat.icon-button:checked:hover {
background-color: #393939; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:checked:active, .app-folder-dialog .folder-name-container .flat.edit-folder-button:checked:active, .flat.button:checked:active, .flat.icon-button:checked:active {
background-color: #404040; }
.modal-dialog .modal-dialog-linked-button, .hotplug-notification-item, .notification-banner .notification-button {
padding: 12px;
......@@ -354,9 +347,17 @@ StEntry {
color: rgba(255, 255, 255, 0.7); }
/* Buttons */
.button {
.button, .icon-button {
min-height: 22px; }
.icon-button {
border-radius: 99px;
padding: 12px;
min-height: 16px; }
.icon-button StIcon {
icon-size: 1.09em;
-st-icon-style: symbolic; }
/* Check Boxes */
.check-box StBoxLayout {
spacing: .8em; }
......@@ -567,7 +568,7 @@ StScrollBar {
.datemenu-today-button {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 transparent;
box-shadow: inset 0 0 0 1px #1f1f1f;
transition-duration: 100ms;
background-color: transparent;
background-color: none;
......@@ -609,7 +610,7 @@ StScrollBar {
.calendar {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 transparent;
box-shadow: inset 0 0 0 1px #1f1f1f;
transition-duration: 100ms;
background-color: transparent;
background-color: none;
......@@ -722,7 +723,7 @@ StScrollBar {
.events-button {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 transparent;
box-shadow: inset 0 0 0 1px #1f1f1f;
transition-duration: 100ms;
color: white;
background-color: #353535;
......@@ -765,7 +766,7 @@ StScrollBar {
.world-clocks-button {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 transparent;
box-shadow: inset 0 0 0 1px #1f1f1f;
transition-duration: 100ms;
color: white;
background-color: #353535;
......@@ -814,7 +815,7 @@ StScrollBar {
.weather-button {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 transparent;
box-shadow: inset 0 0 0 1px #1f1f1f;
transition-duration: 100ms;
color: white;
background-color: #353535;
......@@ -909,7 +910,7 @@ StScrollBar {
.message {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 transparent;
box-shadow: inset 0 0 0 1px #1f1f1f;
transition-duration: 100ms;
color: white;
background-color: #353535;
......@@ -1687,7 +1688,7 @@ StScrollBar {
color: rgba(255, 255, 255, 0.5); }
.quick-toggle > StBoxLayout {
spacing: 6px; }
.quick-toggle.button {
.quick-toggle.button, .quick-toggle.icon-button {
padding: 0; }
.quick-toggle > StBoxLayout {
padding: 0 12px; }
......@@ -1714,29 +1715,31 @@ StScrollBar {
.quick-menu-toggle .quick-toggle-arrow:rtl {
border-radius: 99px 0 0 99px; }
.quick-slider {
padding: 0 6px; }
.quick-slider > StBoxLayout {
spacing: 6px; }
.quick-slider .slider-bin {
min-height: 16px;
padding: 6px;
border-radius: 99px; }
.quick-slider .slider-bin:focus {
transition-duration: 100ms;
color: white;
background-color: #1d252e;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.6) !important; }
.quick-slider .slider-bin:focus:hover {
background-color: #242b35;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.quick-slider .slider-bin:focus:active {
background-color: #2a323c;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.quick-slider .quick-toggle-icon {
icon-size: 1.09em; }
.quick-slider .icon-button {
background-color: transparent; }
.quick-slider > StBoxLayout {
spacing: 6px; }
.quick-slider .slider-bin {
min-height: 16px;
padding: 6px;
border-radius: 99px; }
.quick-slider .slider-bin:focus {
transition-duration: 100ms;
color: white;
background-color: #1d252e;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.6) !important; }
.quick-slider .slider-bin:focus:hover {
background-color: #242b35;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.quick-slider .slider-bin:focus:active {
background-color: #2a323c;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.quick-slider .quick-toggle-icon {
icon-size: 1.09em; }
.quick-slider .quick-toggle-icon:ltr {
margin-left: 6px; }
.quick-slider .quick-toggle-icon:rtl {
margin-right: 6px; }
.quick-toggle-menu {
background-color: #1f1f1f;
......@@ -1760,9 +1763,6 @@ StScrollBar {
.quick-settings-system-item > StBoxLayout {
spacing: 12px; }
.quick-settings-system-item .icon-button > StIcon {
-st-icon-style: symbolic; }
.quick-settings-system-item .power-item {
min-height: 0;
min-width: 0; }
......@@ -2516,7 +2516,7 @@ StScrollBar {
padding: 12px;
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 transparent;
box-shadow: inset 0 0 0 1px #1f1f1f;
transition-duration: 100ms;
color: white;
background-color: #353535;
......
......@@ -40,6 +40,7 @@ $button_mix_factor: 5%;
// cards
$card_bg_color: if($variant == 'light', darken($bg_color, 5%), lighten($bg_color, 2%));
$card_outer_borders_color: transparentize($fg_color, 0.98);
// notifications
$bubble_buttons_color: if($variant == 'light', darken($bg_color, 12%), lighten($bg_color, 10%));
......
......@@ -105,24 +105,15 @@ stage {
&:insensitive { @include button(insensitive);}
&:active { @include button(active);}
&:checked { @include button(checked);}
}
// normal icon-only button
%icon_button {
border-radius: 99px;
border-style: solid;
border-width: 1px;
font-weight: bold;
padding: $base_padding*2;
@include button(normal);
&:focus { @include button(focus);}
&:hover { @include button(hover);}
&:insensitive { @include button(insensitive);}
&:active { @include button(active);}
&:checked { @include button(checked);}
& > StIcon { icon-size: $base_icon_size; }
&.flat {
@include button(normal, $flat:true);
&:focus { @include button(focus, $flat:true);}
&:hover { @include button(hover, $flat:true);}
&:insensitive { @include button(insensitive, $flat:true);}
&:active { @include button(active, $flat:true);}
&:checked { @include button(checked, $flat:true);}
}
}
// buttons in dialogs/notifications
......@@ -143,9 +134,9 @@ $bubble_button_radius:$base_border_radius*1.25;
&:hover { @include button(hover, $c:$bubble_buttons_color);}
&:active { @include button(active, $c:$bubble_buttons_color);}
&:checked { @include button(checked, $c:$bubble_buttons_color);}
&:first-child:ltr {
border-radius: 0 0 0 $bubble_button_radius;
border-radius: 0 0 0 $bubble_button_radius;
}
&:last-child:ltr {
......
......@@ -143,7 +143,7 @@
//
// since buttons are all flat an borderless now the mixin is simpler
@mixin button($t, $tc:$fg_color, $c:$bg_color) {
@mixin button($t, $tc:$fg_color, $c:$bg_color, $flat: false) {
$button_bg_color: mix($tc, $c, $button_mix_factor);
transition-duration: 100ms;
......@@ -152,6 +152,9 @@
@if $t==normal {
color: $tc;
background-color: $button_bg_color;
@if $flat {
background-color: transparent;
}
@if $is_highcontrast == "true" {
box-shadow: inset 0 0 0 1px $button_inset_color;
}
......@@ -310,7 +313,7 @@
@mixin card($flat: false) {
border-radius: $base_border_radius;
margin: $base_margin;
box-shadow: 0 1px 1px 0 $shadow_color;
box-shadow: inset 0 0 0 1px $card_outer_borders_color;
@if $flat {
@include button(undecorated);
......
......@@ -38,6 +38,7 @@ $button_mix_factor: 10%;
// cards
$card_bg_color: if($variant == 'light', darken($bg_color, 12%), lighten($bg_color, 12%));
$card_outer_borders_color: $card_bg_color;
// notifications
$bubble_buttons_color: if($variant == 'light', darken($bg_color, 22%), lighten($bg_color, 31%));
......
......@@ -6,5 +6,14 @@
}
.icon-button {
@extend %icon_button; // that's it
}
@extend .button; // same style as buttons
border-radius: 99px;
padding: $base_padding*2;
min-height: 16px;
StIcon {
icon-size: $base_icon_size;
-st-icon-style: symbolic;
}
}
\ No newline at end of file
......@@ -15,7 +15,7 @@
/* today button (the date) */
.datemenu-today-button {
@include card($flat: true);
@include card(flat);
padding: $base_padding * 1.5;
// weekday label
......
......@@ -48,8 +48,6 @@
}
.quick-slider {
padding: 0 $base_padding;
& > StBoxLayout { spacing: $base_padding; }
.slider-bin {
......@@ -58,8 +56,12 @@
padding: $base_padding;
border-radius: 99px;
}
.quick-toggle-icon { icon-size: $base_icon_size; }
.icon-button { background-color: transparent; }
.quick-toggle-icon {
icon-size: $base_icon_size;
&:ltr { margin-left: $base_padding; }
&:rtl { margin-right: $base_padding; }
}
}
.quick-toggle-menu {
......@@ -100,8 +102,6 @@
.quick-settings-system-item {
& > StBoxLayout { spacing: 2 * $base_padding; }
.icon-button > StIcon { -st-icon-style: symbolic; }
& .power-item {
min-height: 0;
min-width: 0;
......
......@@ -48,7 +48,7 @@ stage {
border-radius: 11px;
border: 1px solid #3c3c3c; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button, .app-folder-dialog .folder-name-container .edit-folder-button, .button {
#LookingGlassDialog > #Toolbar .lg-toolbar-button, .app-folder-dialog .folder-name-container .edit-folder-button, .button, .icon-button {
border-radius: 6px;
border-style: solid;
border-width: 1px;
......@@ -57,80 +57,73 @@ stage {
transition-duration: 100ms;
color: white;
background-color: #3a3a3a; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus, .app-folder-dialog .folder-name-container .edit-folder-button:focus, .button:focus {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus, .app-folder-dialog .folder-name-container .edit-folder-button:focus, .button:focus, .icon-button:focus {
transition-duration: 100ms;
color: white;
background-color: #3a414b;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.6) !important; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus:hover, .app-folder-dialog .folder-name-container .edit-folder-button:focus:hover, .button:focus:hover {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus:hover, .app-folder-dialog .folder-name-container .edit-folder-button:focus:hover, .button:focus:hover, .icon-button:focus:hover {
background-color: #404852;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus:active, .app-folder-dialog .folder-name-container .edit-folder-button:focus:active, .button:focus:active {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:focus:active, .app-folder-dialog .folder-name-container .edit-folder-button:focus:active, .button:focus:active, .icon-button:focus:active {
background-color: #474f59;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:hover, .app-folder-dialog .folder-name-container .edit-folder-button:hover, .button:hover {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:hover, .app-folder-dialog .folder-name-container .edit-folder-button:hover, .button:hover, .icon-button:hover {
transition-duration: 100ms;
color: white;
background-color: #424242; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:insensitive, .app-folder-dialog .folder-name-container .edit-folder-button:insensitive, .button:insensitive {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:insensitive, .app-folder-dialog .folder-name-container .edit-folder-button:insensitive, .button:insensitive, .icon-button:insensitive {
transition-duration: 100ms;
color: rgba(255, 255, 255, 0.5);
background-color: rgba(255, 255, 255, 0.05); }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:active, .app-folder-dialog .folder-name-container .edit-folder-button:active, .button:active {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:active, .app-folder-dialog .folder-name-container .edit-folder-button:active, .button:active, .icon-button:active {
transition-duration: 100ms;
color: white;
background-color: #494949; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked, .app-folder-dialog .folder-name-container .edit-folder-button:checked, .button:checked {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked, .app-folder-dialog .folder-name-container .edit-folder-button:checked, .button:checked, .icon-button:checked {
transition-duration: 100ms;
color: white;
background-color: #515151; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked:hover, .app-folder-dialog .folder-name-container .edit-folder-button:checked:hover, .button:checked:hover {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked:hover, .app-folder-dialog .folder-name-container .edit-folder-button:checked:hover, .button:checked:hover, .icon-button:checked:hover {
background-color: #595959; }
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked:active, .app-folder-dialog .folder-name-container .edit-folder-button:checked:active, .button:checked:active {
#LookingGlassDialog > #Toolbar .lg-toolbar-button:checked:active, .app-folder-dialog .folder-name-container .edit-folder-button:checked:active, .button:checked:active, .icon-button:checked:active {
background-color: #606060; }
.icon-button {
border-radius: 99px;
border-style: solid;
border-width: 1px;
font-weight: bold;
padding: 12px;
transition-duration: 100ms;
color: white;
background-color: #3a3a3a; }
.icon-button:focus {
transition-duration: 100ms;
color: white;
background-color: #3a414b;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.6) !important; }
.icon-button:focus:hover {
background-color: #404852;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.icon-button:focus:active {
background-color: #474f59;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.icon-button:hover {
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button, .app-folder-dialog .folder-name-container .flat.edit-folder-button, .flat.button, .flat.icon-button {
transition-duration: 100ms;
color: white;
background-color: #424242; }
.icon-button:insensitive {
transition-duration: 100ms;
color: rgba(255, 255, 255, 0.5);
background-color: rgba(255, 255, 255, 0.05); }
.icon-button:active {
transition-duration: 100ms;
color: white;
background-color: #494949; }
.icon-button:checked {
transition-duration: 100ms;
color: white;
background-color: #515151; }
.icon-button:checked:hover {
background-color: #595959; }
.icon-button:checked:active {
background-color: #606060; }
.icon-button > StIcon {
icon-size: 1.09em; }
background-color: #3a3a3a;
background-color: transparent; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:focus, .app-folder-dialog .folder-name-container .flat.edit-folder-button:focus, .flat.button:focus, .flat.icon-button:focus {
transition-duration: 100ms;
color: white;
background-color: #3a414b;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.6) !important; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:focus:hover, .app-folder-dialog .folder-name-container .flat.edit-folder-button:focus:hover, .flat.button:focus:hover, .flat.icon-button:focus:hover {
background-color: #404852;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:focus:active, .app-folder-dialog .folder-name-container .flat.edit-folder-button:focus:active, .flat.button:focus:active, .flat.icon-button:focus:active {
background-color: #474f59;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:hover, .app-folder-dialog .folder-name-container .flat.edit-folder-button:hover, .flat.button:hover, .flat.icon-button:hover {
transition-duration: 100ms;
color: white;
background-color: #424242; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:insensitive, .app-folder-dialog .folder-name-container .flat.edit-folder-button:insensitive, .flat.button:insensitive, .flat.icon-button:insensitive {
transition-duration: 100ms;
color: rgba(255, 255, 255, 0.5);
background-color: rgba(255, 255, 255, 0.05); }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:active, .app-folder-dialog .folder-name-container .flat.edit-folder-button:active, .flat.button:active, .flat.icon-button:active {
transition-duration: 100ms;
color: white;
background-color: #494949; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:checked, .app-folder-dialog .folder-name-container .flat.edit-folder-button:checked, .flat.button:checked, .flat.icon-button:checked {
transition-duration: 100ms;
color: white;
background-color: #515151; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:checked:hover, .app-folder-dialog .folder-name-container .flat.edit-folder-button:checked:hover, .flat.button:checked:hover, .flat.icon-button:checked:hover {
background-color: #595959; }
#LookingGlassDialog > #Toolbar .flat.lg-toolbar-button:checked:active, .app-folder-dialog .folder-name-container .flat.edit-folder-button:checked:active, .flat.button:checked:active, .flat.icon-button:checked:active {
background-color: #606060; }
.modal-dialog .modal-dialog-linked-button, .hotplug-notification-item, .notification-banner .notification-button {
padding: 12px;
......@@ -322,9 +315,17 @@ StEntry {
color: rgba(255, 255, 255, 0.7); }
/* Buttons */
.button {
.button, .icon-button {
min-height: 22px; }
.icon-button {
border-radius: 99px;
padding: 12px;
min-height: 16px; }
.icon-button StIcon {
icon-size: 1.09em;
-st-icon-style: symbolic; }
/* Check Boxes */
.check-box StBoxLayout {
spacing: .8em; }
......@@ -535,7 +536,7 @@ StScrollBar {
.datemenu-today-button {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.2);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
transition-duration: 100ms;
background-color: transparent;
background-color: none;
......@@ -572,7 +573,7 @@ StScrollBar {
.calendar {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.2);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
transition-duration: 100ms;
background-color: transparent;
background-color: none;
......@@ -680,7 +681,7 @@ StScrollBar {
.events-button {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.2);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
transition-duration: 100ms;
color: white;
background-color: #3f3f3f;
......@@ -718,7 +719,7 @@ StScrollBar {
.world-clocks-button {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.2);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
transition-duration: 100ms;
color: white;
background-color: #3f3f3f;
......@@ -762,7 +763,7 @@ StScrollBar {
.weather-button {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.2);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
transition-duration: 100ms;
color: white;
background-color: #3f3f3f;
......@@ -852,7 +853,7 @@ StScrollBar {
.message {
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.2);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
transition-duration: 100ms;
color: white;
background-color: #3f3f3f; }
......@@ -1624,7 +1625,7 @@ StScrollBar {
color: rgba(255, 255, 255, 0.5); }
.quick-toggle > StBoxLayout {
spacing: 6px; }
.quick-toggle.button {
.quick-toggle.button, .quick-toggle.icon-button {
padding: 0; }
.quick-toggle > StBoxLayout {
padding: 0 12px; }
......@@ -1651,29 +1652,31 @@ StScrollBar {
.quick-menu-toggle .quick-toggle-arrow:rtl {
border-radius: 99px 0 0 99px; }
.quick-slider {
padding: 0 6px; }
.quick-slider > StBoxLayout {
spacing: 6px; }
.quick-slider .slider-bin {
min-height: 16px;
padding: 6px;
border-radius: 99px; }
.quick-slider .slider-bin:focus {
transition-duration: 100ms;
color: white;
background-color: #3a414b;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.6) !important; }
.quick-slider .slider-bin:focus:hover {
background-color: #404852;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.quick-slider .slider-bin:focus:active {
background-color: #474f59;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.quick-slider .quick-toggle-icon {
icon-size: 1.09em; }
.quick-slider .icon-button {
background-color: transparent; }
.quick-slider > StBoxLayout {
spacing: 6px; }
.quick-slider .slider-bin {
min-height: 16px;
padding: 6px;
border-radius: 99px; }
.quick-slider .slider-bin:focus {
transition-duration: 100ms;
color: white;
background-color: #3a414b;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.6) !important; }
.quick-slider .slider-bin:focus:hover {
background-color: #404852;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.quick-slider .slider-bin:focus:active {
background-color: #474f59;
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.7) !important; }
.quick-slider .quick-toggle-icon {
icon-size: 1.09em; }
.quick-slider .quick-toggle-icon:ltr {
margin-left: 6px; }
.quick-slider .quick-toggle-icon:rtl {
margin-right: 6px; }
.quick-toggle-menu {
background-color: #353535;
......@@ -1697,9 +1700,6 @@ StScrollBar {
.quick-settings-system-item > StBoxLayout {
spacing: 12px; }
.quick-settings-system-item .icon-button > StIcon {
-st-icon-style: symbolic; }
.quick-settings-system-item .power-item {
min-height: 0;
min-width: 0; }
......@@ -2447,7 +2447,7 @@ StScrollBar {
padding: 12px;
border-radius: 8px;
margin: 4px;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.2);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
transition-duration: 100ms;
color: white;
background-color: #3f3f3f; }
......
/* exported main */
const Config = imports.misc.config;
const { DBusService } = imports.dbusService;
const {DBusService} = imports.dbusService;
function main() {
if (!Config.HAVE_RECORDER)
const {ScreencastService} = imports.screencastService;
if (!ScreencastService.canScreencast())
return;
const { ScreencastService } = imports.screencastService;
const service = new DBusService(
'org.gnome.Shell.Screencast',
new ScreencastService());
......
......@@ -231,7 +231,8 @@ var Recorder = class {
_ensurePipeline(nodeId) {
const framerate = this._framerate;
const needsCopy =
Gst.Registry.get().check_feature_version('pipewiresrc', 0, 3, 57);
Gst.Registry.get().check_feature_version('pipewiresrc', 0, 3, 57) &&
!Gst.Registry.get().check_feature_version('videoconvert', 1, 20, 4);
let fullPipeline = `
pipewiresrc path=${nodeId}
......@@ -257,9 +258,21 @@ var Recorder = class {
};
var ScreencastService = class extends ServiceImplementation {
static canScreencast() {
const elements = [
'pipewiresrc',
'filesink',
...DEFAULT_PIPELINE.split('!').map(e => e.trim().split(' ').at(0)),
];
return Gst.init_check(null) &&
elements.every(e => Gst.ElementFactory.find(e) != null);
}
constructor() {
super(ScreencastIface, '/org/gnome/Shell/Screencast');
this._canScreencast = ScreencastService.canScreencast();
Gst.init(null);
Gtk.init();
......@@ -279,6 +292,10 @@ var ScreencastService = class extends ServiceImplementation {
'/org/gnome/Shell/Introspect');
}
get ScreencastSupported() {
return this._canScreencast;
}
_removeRecorder(sender) {
this._recorders.delete(sender);
if (this._recorders.size === 0)
......
......@@ -21,8 +21,3 @@ var LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@'
var HAVE_BLUETOOTH = pkg.checkSymbol('GnomeBluetooth', '3.0',
'Client.default_adapter_state')
var HAVE_RECORDER =
pkg.checkSymbol('Gst', '1.0') &&
imports.gi.Gst.init_check(null) &&
imports.gi.Gst.ElementFactory.find('pipewiresrc') &&
imports.gi.Gst.ElementFactory.find('filesrc');
......@@ -288,7 +288,7 @@ var IBusManager = class extends Signals.EventEmitter {
return this._engines.get(id);
}
async setEngine(id, callback) {
async _setEngine(id, callback) {
// Send id even if id == this._currentEngineName
// because 'properties-registered' signal can be emitted
// while this._ibusSources == null on a lock screen.
......@@ -306,10 +306,25 @@ var IBusManager = class extends Signals.EventEmitter {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
logError(e);
}
if (callback)
callback();
}
async setEngine(id, callback) {
if (this._preOskState)
this._preOskState.engine = id;
const isXkb = id.startsWith('xkb:');
if (this._oskCompletion && isXkb)
return;
if (this._oskCompletion)
this.setCompletionEnabled(false, callback);
else
await this._setEngine(id, callback);
}
preloadEngines(ids) {
if (!this._ibus || !this._ready)
return;
......@@ -337,9 +352,9 @@ var IBusManager = class extends Signals.EventEmitter {
});
}
setCompletionEnabled(enabled) {
setCompletionEnabled(enabled, callback) {
/* Needs typing-booster available */
if (!this._engines.has(TYPING_BOOSTER_ENGINE))
if (enabled && !this._engines.has(TYPING_BOOSTER_ENGINE))
return false;
/* Can do only on xkb engines */
if (enabled && !this._currentEngineName.startsWith('xkb:'))
......@@ -373,12 +388,12 @@ var IBusManager = class extends Signals.EventEmitter {
settings.reset(KEY_INLINECOMPLETION);
settings.set_string(KEY_INPUTMETHOD, 'NoIME');
this.setEngine(TYPING_BOOSTER_ENGINE);
this._setEngine(TYPING_BOOSTER_ENGINE, callback);
} else if (this._preOskState) {
const {engine, emoji, langs, completion, inputMethod} =
this._preOskState;
this._preOskState = null;
this.setEngine(engine);
this._setEngine(engine, callback);
settings.set_value(KEY_EMOJIPREDICTIONS, emoji);
settings.set_value(KEY_DICTIONARY, langs);
settings.set_value(KEY_INLINECOMPLETION, completion);
......
......@@ -7,6 +7,8 @@ const Main = imports.ui.main;
Gio._promisify(IBus.Bus.prototype,
'create_input_context_async', 'create_input_context_async_finish');
Gio._promisify(IBus.InputContext.prototype,
'process_key_event_async', 'process_key_event_async_finish');
var HIDE_PANEL_TIME = 50;
......@@ -185,8 +187,10 @@ var InputMethod = GObject.registerClass({
vfunc_focus_out() {
this._currentFocus = null;
if (this._context)
if (this._context) {
this._fullReset();
this._context.focus_out();
}
if (this._preeditStr && this._preeditVisible) {
// Unset any preedit text
......@@ -215,8 +219,13 @@ var InputMethod = GObject.registerClass({
vfunc_set_cursor_location(rect) {
if (this._context) {
this._context.set_cursor_location(rect.get_x(), rect.get_y(),
rect.get_width(), rect.get_height());
this._cursorRect = {
x: rect.get_x(), y: rect.get_y(),
width: rect.get_width(), height: rect.get_height(),
};
this._context.set_cursor_location(
this._cursorRect.x, this._cursorRect.y,
this._cursorRect.width, this._cursorRect.height);
this._emitRequestSurrounding();
}
}
......@@ -273,6 +282,9 @@ var InputMethod = GObject.registerClass({
ibusPurpose = IBus.InputPurpose.NAME;
else if (purpose == Clutter.InputContentPurpose.PASSWORD)
ibusPurpose = IBus.InputPurpose.PASSWORD;
else if (purpose === Clutter.InputContentPurpose.TERMINAL &&
IBus.InputPurpose.TERMINAL)
ibusPurpose = IBus.InputPurpose.TERMINAL;
this._setTerminalMode(
purpose === Clutter.InputContentPurpose.TERMINAL);
......@@ -329,10 +341,35 @@ var InputMethod = GObject.registerClass({
return this._preeditVisible && this._preeditStr !== '' && this._preeditStr !== null;
}
handleVirtualKey(keyval) {
this._context.process_key_event_async(
keyval, 0, 0, -1, null, null);
this._context.process_key_event_async(
keyval, 0, IBus.ModifierType.RELEASE_MASK, -1, null, null);
async handleVirtualKey(keyval) {
try {
if (!await this._context.process_key_event_async(
keyval, 0, 0, -1, null))
return false;
await this._context.process_key_event_async(
keyval, 0, IBus.ModifierType.RELEASE_MASK, -1, null);
return true;
} catch (e) {
return false;
}
}
_fullReset() {
this._context.set_content_type(0, 0);
this._context.set_cursor_location(0, 0, 0, 0);
this._context.set_capabilities(0);
this._context.reset();
}
update() {
if (!this._context)
return;
this._updateCapabilities();
this._context.set_content_type(this._purpose, this._hints);
this._context.set_cursor_location(
this._cursorRect.x, this._cursorRect.y,
this._cursorRect.width, this._cursorRect.height);
this._emitRequestSurrounding();
}
});
......@@ -5,5 +5,6 @@
<file>misc/config.js</file>
<file>misc/dbusUtils.js</file>
<file>misc/fileUtils.js</file>
</gresource>
</gresources>
......@@ -917,20 +917,16 @@ class ThumbnailSwitcher extends SwitcherPopup.SwitcherList {
box.add_actor(bin);
this._thumbnailBins.push(bin);
let title = windows[i].get_title();
if (title) {
let name = new St.Label({
text: title,
// St.Label doesn't support text-align
x_align: Clutter.ActorAlign.CENTER,
});
this._labels.push(name);
box.add_actor(name);
const title = windows[i].get_title();
const name = new St.Label({
text: title,
// St.Label doesn't support text-align
x_align: Clutter.ActorAlign.CENTER,
});
this._labels.push(name);
box.add_actor(name);
this.addItem(box, name);
} else {
this.addItem(box, null);
}
this.addItem(box, name);
}
this.connect('destroy', this._onDestroy.bind(this));
......