Merge ~3v1n0/ubuntu/+source/gnome-shell:ubuntu/bionic into ubuntu/+source/gnome-shell:ubuntu/bionic
- Git
- lp:~3v1n0/ubuntu/+source/gnome-shell
- ubuntu/bionic
- Merge into ubuntu/bionic
Status: | Superseded |
---|---|
Proposed branch: | ~3v1n0/ubuntu/+source/gnome-shell:ubuntu/bionic |
Merge into: | ubuntu/+source/gnome-shell:ubuntu/bionic |
Diff against target: |
10663 lines (+5895/-50) (has conflicts) 92 files modified
NEWS (+31/-0) debian/changelog (+147/-0) debian/control (+15/-0) debian/control.in (+15/-0) debian/gbp.conf (+6/-0) debian/patches/41-handle-logind-fail.patch (+18/-0) debian/patches/50_add_ubuntu_desktop_detect.patch (+38/-0) debian/patches/70_allow_sound_above_100.patch (+21/-0) debian/patches/71_smarter_alt_tab.patch (+40/-0) debian/patches/CVE-2019-3820-1.patch (+29/-0) debian/patches/CVE-2019-3820-2.patch (+93/-0) debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch (+4/-0) debian/patches/dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch (+40/-0) debian/patches/dnd-Only-handle-touch-events-in-wayland.patch (+40/-0) debian/patches/js-fix-invalid-access-errors.patch (+62/-0) debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch (+22/-0) debian/patches/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch (+38/-0) debian/patches/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch (+65/-0) debian/patches/optional-hot-corner.patch (+23/-0) debian/patches/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch (+212/-0) debian/patches/series (+25/-0) debian/patches/st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch (+85/-0) debian/patches/st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch (+38/-0) debian/patches/st-scroll-view-Remove-scrollbars-references-on-dispose.patch (+33/-0) debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch (+46/-0) debian/patches/st-widget-Add-missing-g_return_val_if_fail.patch (+32/-0) debian/patches/switchMonitor-switch-to-next-config-upon-initial-keypress.patch (+58/-0) debian/patches/ubuntu-lightdm-user-switching.patch (+13/-0) debian/patches/ubuntu_background_login.patch (+20/-0) debian/patches/ubuntu_block_mode_extension_update.patch (+38/-0) debian/patches/ubuntu_gdm.patch (+20/-0) debian/patches/ubuntu_gdm_alternatives.patch (+18/-0) debian/patches/ubuntu_lock_on_suspend.patch (+38/-0) debian/patches/volume-Add-back-sound-feedback-on-scroll.patch (+32/-0) debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch (+47/-0) debian/patches/workaround_crasher_fractional_scaling.patch (+24/-0) debian/ubuntu-session-mods/ubuntu.css (+12/-0) js/gdm/authPrompt.js (+12/-0) js/gdm/util.js (+14/-0) js/misc/ibusManager.js (+12/-0) js/misc/keyboardManager.js (+11/-0) js/misc/objectManager.js (+9/-0) js/ui/calendar.js (+38/-0) js/ui/components/automountManager.js (+14/-0) js/ui/components/networkAgent.js (+4/-0) js/ui/components/polkitAgent.js (+6/-0) js/ui/dash.js (+5/-0) js/ui/dnd.js (+31/-0) js/ui/endSessionDialog.js (+4/-0) js/ui/extensionSystem.js (+26/-0) js/ui/iconGrid.js (+19/-0) js/ui/keyboard.js (+178/-0) js/ui/layout.js (+9/-0) js/ui/magnifier.js (+10/-0) js/ui/main.js (+17/-0) js/ui/messageList.js (+5/-0) js/ui/messageTray.js (+8/-0) js/ui/notificationDaemon.js (+5/-0) js/ui/osdWindow.js (+30/-0) js/ui/overview.js (+5/-0) js/ui/overviewControls.js (+8/-0) js/ui/panel.js (+18/-0) js/ui/popupMenu.js (+20/-0) js/ui/remoteSearch.js (+4/-0) js/ui/runDialog.js (+13/-0) js/ui/search.js (+13/-0) js/ui/status/keyboard.js (+30/-0) js/ui/status/network.js (+15/-0) js/ui/status/system.js (+10/-0) js/ui/viewSelector.js (+12/-0) js/ui/windowManager.js (+24/-0) js/ui/windowMenu.js (+7/-0) js/ui/workspace.js (+97/-0) js/ui/workspaceThumbnail.js (+64/-0) js/ui/workspacesView.js (+4/-0) meson.build (+4/-0) po/af.po (+1985/-50) po/cs.po (+4/-0) po/gd.po (+1119/-0) po/pt_BR.po (+86/-0) po/ru.po (+83/-0) src/st/meson.build (+4/-0) src/st/st-bin.c (+17/-0) src/st/st-box-layout.c (+45/-0) src/st/st-button.c (+11/-0) src/st/st-entry.c (+41/-0) src/st/st-label.c (+4/-0) src/st/st-scroll-view.c (+14/-0) src/st/st-texture-cache.c (+53/-0) src/st/st-theme-node-drawing.c (+56/-0) src/st/st-theme-node.h (+6/-0) src/st/st-widget.c (+14/-0) Conflict in NEWS Conflict in debian/changelog Conflict in debian/control Conflict in debian/control.in Conflict in debian/patches/41-handle-logind-fail.patch Conflict in debian/patches/50_add_ubuntu_desktop_detect.patch Conflict in debian/patches/70_allow_sound_above_100.patch Conflict in debian/patches/71_smarter_alt_tab.patch Conflict in debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch Conflict in debian/patches/js-fix-invalid-access-errors.patch Conflict in debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch Conflict in debian/patches/optional-hot-corner.patch Conflict in debian/patches/series Conflict in debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch Conflict in debian/patches/ubuntu-lightdm-user-switching.patch Conflict in debian/patches/ubuntu_background_login.patch Conflict in debian/patches/ubuntu_block_mode_extension_update.patch Conflict in debian/patches/ubuntu_gdm.patch Conflict in debian/patches/ubuntu_gdm_alternatives.patch Conflict in debian/patches/ubuntu_lock_on_suspend.patch Conflict in debian/patches/volume-Add-back-sound-feedback-on-scroll.patch Conflict in debian/patches/workaround_crasher_fractional_scaling.patch Conflict in debian/ubuntu-session-mods/ubuntu.css Conflict in js/gdm/authPrompt.js Conflict in js/gdm/util.js Conflict in js/misc/ibusManager.js Conflict in js/misc/keyboardManager.js Conflict in js/misc/objectManager.js Conflict in js/ui/calendar.js Conflict in js/ui/components/automountManager.js Conflict in js/ui/components/networkAgent.js Conflict in js/ui/components/polkitAgent.js Conflict in js/ui/dash.js Conflict in js/ui/dnd.js Conflict in js/ui/endSessionDialog.js Conflict in js/ui/extensionSystem.js Conflict in js/ui/iconGrid.js Conflict in js/ui/keyboard.js Conflict in js/ui/layout.js Conflict in js/ui/magnifier.js Conflict in js/ui/main.js Conflict in js/ui/messageList.js Conflict in js/ui/messageTray.js Conflict in js/ui/notificationDaemon.js Conflict in js/ui/osdWindow.js Conflict in js/ui/overview.js Conflict in js/ui/overviewControls.js Conflict in js/ui/panel.js Conflict in js/ui/popupMenu.js Conflict in js/ui/remoteSearch.js Conflict in js/ui/runDialog.js Conflict in js/ui/search.js Conflict in js/ui/status/keyboard.js Conflict in js/ui/status/network.js Conflict in js/ui/status/system.js Conflict in js/ui/viewSelector.js Conflict in js/ui/windowManager.js Conflict in js/ui/windowMenu.js Conflict in js/ui/workspace.js Conflict in js/ui/workspaceThumbnail.js Conflict in js/ui/workspacesView.js Conflict in meson.build Conflict in po/af.po Conflict in po/cs.po Conflict in po/gd.po Conflict in po/pt_BR.po Conflict in po/ru.po Conflict in src/st/meson.build Conflict in src/st/st-bin.c Conflict in src/st/st-box-layout.c Conflict in src/st/st-button.c Conflict in src/st/st-entry.c Conflict in src/st/st-label.c Conflict in src/st/st-scroll-view.c Conflict in src/st/st-texture-cache.c Conflict in src/st/st-theme-node-drawing.c Conflict in src/st/st-theme-node.h Conflict in src/st/st-widget.c |
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
git-ubuntu developers | Pending | ||
Review via email: mp+367148@code.launchpad.net |
This proposal has been superseded by a proposal from 2019-05-08.
Commit message
Description of the change
Unmerged commits
- bf58e0e... by Marco Trevisan (Treviño)
-
Refresh patches
- 9129caa... by Marco Trevisan (Treviño)
-
debian/patches: Fix regression on missing spread animation
Fixes LP: #1827284
- 96192ec... by Iain Lane
-
Finalise changelog
- 2445e97... by Iain Lane
-
Merge commit 'd65babeab' into ubuntu/bionic
- 68d3d29... by Leonidas S. Barbosa
-
Import Debian changes 3.28.3+
git20190124- 0ubuntu18. 04.2 gnome-shell (3.28.3+
git20190124- 0ubuntu18. 04.2) bionic-security; urgency=medium * SECURITY UPDATE: Potential keyboard shortcuts and other actions
- debian/patches/ CVE-2019- 3820-*. patch: fix in
js/ui/panel. js, js/gdm/ authPrompt. js, js/gdm/ loginDialog. js,
js/ui/shellEntry. js.
- CVE-2019-3820 - d65babe... by Marco Trevisan (Treviño)
-
debian/patches: Really set ellipsize mode in subtitle and body
Fixes LP: #1809788
- 78e6f42... by Marco Trevisan (Treviño)
-
debian/patches: listen actively to windows being destroyed during WS switch
Fixes LP: #1812527
- 42d662e... by Marco Trevisan (Treviño)
-
debian/patches: Protect from NULL obj in get_theme_node
Fixes LP: #1796606
- 57bb933... by Marco Trevisan (Treviño)
-
dnd: Only handle touch events in wayland
Fixes LP: #1817020
- 4848160... by Marco Trevisan (Treviño)
-
Ensure switch display mode is cyclic
Fixes LP: #1772811
Preview Diff
1 | diff --git a/NEWS b/NEWS |
2 | index 0c56e7e..6b0f9e1 100644 |
3 | --- a/NEWS |
4 | +++ b/NEWS |
5 | @@ -1,3 +1,34 @@ |
6 | +<<<<<<< NEWS |
7 | +======= |
8 | +3.28.3 |
9 | +====== |
10 | +* Fix lagging pointer when zoomed [Daniel; #682013] |
11 | +* Fix "Clear All" for calendar events [Florian; #325] |
12 | +* Misc. bug fixes [Florian, Mario, Marco; #136, #214, #788931, #791233] |
13 | + |
14 | +Contributors: |
15 | + Carlos Garnacho, Florian Müllner, Mario Sanchez Prada, Joe Rabinoff, |
16 | + Didier Roche, Marco Trevisan (Treviño), Daniel van Vugt |
17 | + |
18 | +Translators: |
19 | + Pieter Schalk Schoeman [af], Gun Chleoc [gd] |
20 | + |
21 | +3.28.2 |
22 | +====== |
23 | +* Fix lock-up on cancelling polkit dialog [Florian; #221] |
24 | +* Guard against untimely keyboard map changes [Carlos; #240] |
25 | +* Fix blurriness of OSD under some resolutions [Silvère; #782011] |
26 | +* Fix icons in search provider results [Florian; #249] |
27 | +* Misc. bug fixes [Marco, Florian; #792687, #781471] |
28 | + |
29 | +Contributors: |
30 | + Carlos Garnacho, Silvère Latchurié, Florian Müllner, Mario Sanchez Prada, |
31 | + Ray Strode, Marco Trevisan (Treviño) |
32 | + |
33 | +Translators: |
34 | + Stas Solovey [ru], Rafael Fontenelle [pt_BR] |
35 | + |
36 | +>>>>>>> NEWS |
37 | 3.28.1 |
38 | ====== |
39 | * Fix compose characters in shell entries [Carlos; #115] |
40 | diff --git a/debian/changelog b/debian/changelog |
41 | index 1ecd17a..f4df414 100644 |
42 | --- a/debian/changelog |
43 | +++ b/debian/changelog |
44 | @@ -1,3 +1,150 @@ |
45 | +<<<<<<< debian/changelog |
46 | +======= |
47 | +gnome-shell (3.28.3+git20190124-0ubuntu18.04.4) UNRELEASED; urgency=medium |
48 | + |
49 | + * d/p/st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch: |
50 | + - Fix regression on missing spread animation (LP: #1827284) |
51 | + * Refreshed patches |
52 | + |
53 | + -- Marco Trevisan (Treviño) <marco@ubuntu.com> Wed, 08 May 2019 14:49:43 -0500 |
54 | + |
55 | +gnome-shell (3.28.3+git20190124-0ubuntu18.04.3) bionic; urgency=medium |
56 | + |
57 | + * d/p/switchMonitor-switch-to-next-config-upon-initial-keypress.patch |
58 | + - Ensure switch display mode is cyclic (LP: #1772811) |
59 | + * debian/control: |
60 | + - Depends on mutter 3.28.3+git20190124-0ubuntu18.04.3 |
61 | + * d/p/dnd-Only-handle-touch-events-in-wayland.patch: |
62 | + - dnd: Only handle touch events in wayland (LP: #1817020) |
63 | + * d/p/st-widget-Add-missing-g_return_val_if_fail.patch: |
64 | + - st-widget: Protect from NULL obj in get_theme_node (LP: #1796606) |
65 | + * d/p/windowManager-listen-actively-to-windows-being-destroyed-.patch: |
66 | + - windowManager: listen actively to windows being destroyed during WS switch |
67 | + (LP: #1812527) |
68 | + * d/p/dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch: |
69 | + - Really set ellipsize mode in subtitle and body (LP: #1809788) |
70 | + |
71 | + -- Marco Trevisan (Treviño) <marco@ubuntu.com> Tue, 07 May 2019 18:37:41 +0100 |
72 | + |
73 | +gnome-shell (3.28.3+git20190124-0ubuntu18.04.2) bionic-security; urgency=medium |
74 | + |
75 | + * SECURITY UPDATE: Potential keyboard shortcuts and other actions |
76 | + - debian/patches/CVE-2019-3820-*.patch: fix in |
77 | + js/ui/panel.js, js/gdm/authPrompt.js, js/gdm/loginDialog.js, |
78 | + js/ui/shellEntry.js. |
79 | + - CVE-2019-3820 |
80 | + |
81 | + -- Leonidas S. Barbosa <leo.barbosa@canonical.com> Mon, 25 Feb 2019 12:53:33 -0300 |
82 | + |
83 | +gnome-shell (3.28.3+git20190124-0ubuntu18.04.1) bionic; urgency=medium |
84 | + |
85 | + * New git snapshot release up to commit 24cdcc56d (LP: #1811900) |
86 | + - Don't fill journal with osdWindow errors (LP: #1772677) |
87 | + - Fix missing icon in keyboard indicator (LP: #1812266) |
88 | + * d/p/authPrompt-Do-not-enable-sensitivity-if-retries-are-disal.patch, |
89 | + d/p/authPrompt-Unset-preemptiveAnswer-on-reset.patch, |
90 | + d/p/gdm-util-Always-allow-to-retry-login-in-unlock-mode.patch, |
91 | + d/p/ibus-set-content-type-no-holdKeyboard.patch, |
92 | + d/p/popupMenu-Don-t-handle-key-presses-directly-if-there-are-.patch, |
93 | + d/p/st-button-Ignore-pointer-emulated-touch-events.patch, |
94 | + d/p/shell-ignore-invalid-window-monitor-index.patch, |
95 | + d/p/workspace-fix-repositioned-windows-in-activities.patch: |
96 | + - Removed patches applied upstream |
97 | + * d/p/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch, |
98 | + d/p/js-fix-invalid-access-errors.patch, |
99 | + d/p/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch, |
100 | + d/p/optional-hot-corner.patch, |
101 | + d/p/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch, |
102 | + d/p/workaround_crasher_fractional_scaling.patch: |
103 | + - Refreshed as per upstream changes |
104 | + * d/p/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch, |
105 | + d/p/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch: |
106 | + - Fix OSK activation on X11 (LP: #1760399) |
107 | + * d/p/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch: |
108 | + - Label the PENDING_CHARGE state as "Not Charging" (LP: #1745032) |
109 | + * d/p/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch: |
110 | + - Add missing include (LP: #1811908) |
111 | + |
112 | + -- Marco Trevisan (Treviño) <marco@ubuntu.com> Fri, 25 Jan 2019 18:29:40 +0000 |
113 | + |
114 | +gnome-shell (3.28.3-0ubuntu0.18.04.4) bionic; urgency=medium |
115 | + |
116 | + * debian/patches/ibus-set-content-type-no-holdKeyboard.patch: |
117 | + - Cherry-pick upstream commit to prevent focus stealing on password fields |
118 | + in firefox when ibus is used (LP: #1765304) |
119 | + |
120 | + -- Olivier Tilloy <olivier.tilloy@canonical.com> Wed, 05 Dec 2018 13:08:10 +0000 |
121 | + |
122 | +gnome-shell (3.28.3-0ubuntu0.18.04.3) bionic; urgency=medium |
123 | + |
124 | + * debian/ubuntu.css: |
125 | + - use defined color for menu separators (LP: #1739931) |
126 | + - set StEntry minimun height to work properly with Ubuntu font (LP: #1743058) |
127 | + * debian/patches/st-button-Ignore-pointer-emulated-touch-events.patch: |
128 | + - Don't emit two click events on touch under X11 (LP: #1745888) |
129 | + * d/p/st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch, |
130 | + d/p/st-scroll-view-Remove-scrollbars-references-on-dispose.patch: |
131 | + - Handle NULL scroll bars in st-scroll-view (LP: #1725312) |
132 | + |
133 | + -- Marco Trevisan (Treviño) <marco@ubuntu.com> Tue, 06 Nov 2018 17:49:17 +0000 |
134 | + |
135 | +gnome-shell (3.28.3-0ubuntu0.18.04.2) bionic; urgency=medium |
136 | + |
137 | + * New upstream release (LP: #1718931, LP: #1782614) |
138 | + * debian/patches/30-remoteMenu-Prevent-the-shell-from-becoming-unrespons.patch, |
139 | + debian/patches/magnifier.js-Fix-zoom-juddering.patch, |
140 | + debian/patches/st-label-Unset-clutter-text-instance-on-disposal.patch, |
141 | + debian/patches/st-texture-cache-Don-t-add-NULL-textures-to-cache.patch, |
142 | + debian/patches/st-texture-cache-Save-cairo-surfaces-to-a-different-map.patch, |
143 | + debian/patches/ui-Theme-lookup-should-respect-XDG_DATA_DIRS.patch: |
144 | + - Drop patches applied on the 3.28 branch |
145 | + * debian/patches/js-fix-invalid-access-errors.patch: |
146 | + - Refreshed to reflect upstream changes |
147 | + * d/p/popupMenu-Don-t-handle-key-presses-directly-if-there-are-.patch |
148 | + - Don't handle key presses directly if there are modifiers (LP: #1784671) |
149 | + * debian/patches/workspace-fix-repositioned-windows-in-activities.patch: |
150 | + - Cherry-pick from upstream 3.28 branch |
151 | + |
152 | + -- Marco Trevisan (Treviño) <marco@ubuntu.com> Fri, 03 Aug 2018 07:18:24 +0100 |
153 | + |
154 | +gnome-shell (3.28.2-0ubuntu0.18.04.1) bionic; urgency=medium |
155 | + |
156 | + [ Olivier Tilloy ] |
157 | + * New upstream release (LP: #1775145) |
158 | + - fixes valid password rejection at login screen (LP: #1765261) |
159 | + * Drop patches applied upstream: |
160 | + - debian/patches/polkitAgent-Guard-against-repeated-close-calls.patch |
161 | + - debian/patches/popupMenu-Fix-wrong-call-to-clutter_actor_add_child.patch |
162 | + - debian/patches/workspaceThumbnail-initialize-porthole-based-on-workArea.patch |
163 | + - debian/patches/workspaceThumbnail-only-update-_porthole-if-the-overview-.patch |
164 | + - debian/patches/workspaceThumbnail-rebuild-thumbnails-if-workareas-size-c.patch |
165 | + |
166 | + [ Andrea Azzarone ] |
167 | + * debian/patches/ubuntu_lock_on_suspend.patch: inhibit suspend until the |
168 | + screen is locked also in the case where automatic screen lock is disabled |
169 | + and screen lock on suspend is enabled (LP: #1768786) |
170 | + |
171 | + [ Marco Trevisan (Treviño) ] |
172 | + * Cherry pick upstream patches: |
173 | + - debian/patches/st-label-Unset-clutter-text-instance-on-disposal.patch (LP: #1714989) |
174 | + * debian/patches/st-texture-cache-Don-t-add-NULL-textures-to-cache.patch: |
175 | + - Cherry pick updated version from upstream, splitted in: |
176 | + + debian/patches/st-texture-cache-Don-t-add-NULL-textures-to-cache.patch |
177 | + + debian/patches/st-texture-cache-Save-cairo-surfaces-to-a-different-map.patch |
178 | + * debian/patches/authPrompt-Do-not-enable-sensitivity-if-retries-are-disal.patch |
179 | + debian/patches/authPrompt-Unset-preemptiveAnswer-on-reset.patch |
180 | + debian/patches/gdm-util-Always-allow-to-retry-login-in-unlock-mode.patch: |
181 | + - GDM gnome-shell greeter fix to fix unneeded login attempts (LP: #1777956) |
182 | + * debian/patches/series: |
183 | + - reorder to apply upstream cherry-picks before the others |
184 | + |
185 | + [ Daniel van Vugt ] |
186 | + * debian/patches/magnifier.js-Fix-zoom-juddering.patch: |
187 | + - magnifier.js: Fix zoom juddering (LP: #1691675) |
188 | + |
189 | + -- Marco Trevisan <marco@ubuntu.com> Tue, 21 Jun 2018 01:45:42 +0200 |
190 | + |
191 | +>>>>>>> debian/changelog |
192 | gnome-shell (3.28.1-0ubuntu2) bionic; urgency=medium |
193 | |
194 | [ Marco Trevisan (Treviño) ] |
195 | diff --git a/debian/control b/debian/control |
196 | index 739dae9..3990429 100644 |
197 | --- a/debian/control |
198 | +++ b/debian/control |
199 | @@ -59,7 +59,14 @@ Build-Depends: debhelper (>= 10.3~), |
200 | sassc, |
201 | Standards-Version: 4.0.0 |
202 | Homepage: https://wiki.gnome.org/Projects/GnomeShell |
203 | +<<<<<<< debian/control |
204 | Vcs-Bzr: https://code.launchpad.net/~ubuntu-desktop/gnome-shell/ubuntu |
205 | +======= |
206 | +XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell |
207 | +XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell |
208 | +Vcs-Browser: https://code.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-shell/+git/gnome-shell/+ref/ubuntu/bionic |
209 | +Vcs-Git: https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-shell -b ubuntu/bionic |
210 | +>>>>>>> debian/control |
211 | |
212 | Package: gnome-shell |
213 | Architecture: linux-any |
214 | @@ -80,7 +87,11 @@ Depends: ${gir:Depends}, |
215 | gir1.2-gtk-3.0 (>= 3.16), |
216 | gir1.2-gweather-3.0, |
217 | gir1.2-ibus-1.0 (>= 1.5.2), |
218 | +<<<<<<< debian/control |
219 | gir1.2-mutter-2 (>= 3.27.91), |
220 | +======= |
221 | + gir1.2-mutter-2 (>= 3.28.3+git20190124-0ubuntu18.04.3), |
222 | +>>>>>>> debian/control |
223 | gir1.2-nm-1.0 [linux-any], |
224 | gir1.2-nma-1.0 [linux-any], |
225 | gir1.2-pango-1.0, |
226 | @@ -93,7 +104,11 @@ Depends: ${gir:Depends}, |
227 | gnome-shell-common (= ${source:Version}), |
228 | ubuntu-wallpapers, |
229 | gsettings-desktop-schemas (>= 3.21.3), |
230 | +<<<<<<< debian/control |
231 | mutter (>= 3.27.91), |
232 | +======= |
233 | + mutter (>= 3.28.3+git20190124-0ubuntu18.04.3), |
234 | +>>>>>>> debian/control |
235 | python3, |
236 | libglib2.0-bin (>= 2.53.0), |
237 | Recommends: xserver-xorg-legacy, |
238 | diff --git a/debian/control.in b/debian/control.in |
239 | index d01981b..06744c2 100644 |
240 | --- a/debian/control.in |
241 | +++ b/debian/control.in |
242 | @@ -55,7 +55,14 @@ Build-Depends: debhelper (>= 10.3~), |
243 | sassc, |
244 | Standards-Version: 4.0.0 |
245 | Homepage: https://wiki.gnome.org/Projects/GnomeShell |
246 | +<<<<<<< debian/control.in |
247 | Vcs-Bzr: https://code.launchpad.net/~ubuntu-desktop/gnome-shell/ubuntu |
248 | +======= |
249 | +XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell |
250 | +XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell |
251 | +Vcs-Browser: https://code.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-shell/+git/gnome-shell/+ref/ubuntu/bionic |
252 | +Vcs-Git: https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-shell -b ubuntu/bionic |
253 | +>>>>>>> debian/control.in |
254 | |
255 | Package: gnome-shell |
256 | Architecture: linux-any |
257 | @@ -76,7 +83,11 @@ Depends: ${gir:Depends}, |
258 | gir1.2-gtk-3.0 (>= 3.16), |
259 | gir1.2-gweather-3.0, |
260 | gir1.2-ibus-1.0 (>= 1.5.2), |
261 | +<<<<<<< debian/control.in |
262 | gir1.2-mutter-2 (>= 3.27.91), |
263 | +======= |
264 | + gir1.2-mutter-2 (>= 3.28.3+git20190124-0ubuntu18.04.3), |
265 | +>>>>>>> debian/control.in |
266 | gir1.2-nm-1.0 [linux-any], |
267 | gir1.2-nma-1.0 [linux-any], |
268 | gir1.2-pango-1.0, |
269 | @@ -89,7 +100,11 @@ Depends: ${gir:Depends}, |
270 | gnome-shell-common (= ${source:Version}), |
271 | ubuntu-wallpapers, |
272 | gsettings-desktop-schemas (>= 3.21.3), |
273 | +<<<<<<< debian/control.in |
274 | mutter (>= 3.27.91), |
275 | +======= |
276 | + mutter (>= 3.28.3+git20190124-0ubuntu18.04.3), |
277 | +>>>>>>> debian/control.in |
278 | python3, |
279 | libglib2.0-bin (>= 2.53.0), |
280 | Recommends: xserver-xorg-legacy, |
281 | diff --git a/debian/gbp.conf b/debian/gbp.conf |
282 | new file mode 100644 |
283 | index 0000000..bb36f7c |
284 | --- /dev/null |
285 | +++ b/debian/gbp.conf |
286 | @@ -0,0 +1,6 @@ |
287 | +[DEFAULT] |
288 | +debian-branch=ubuntu/bionic |
289 | +upstream-branch=upstream/3.28.x |
290 | +debian-tag=ubuntu/%(version)s |
291 | +upstream-vcs-tag=%(version)s |
292 | +pristine-tar=True |
293 | diff --git a/debian/patches/41-handle-logind-fail.patch b/debian/patches/41-handle-logind-fail.patch |
294 | index bdf612e..2cba8d1 100644 |
295 | --- a/debian/patches/41-handle-logind-fail.patch |
296 | +++ b/debian/patches/41-handle-logind-fail.patch |
297 | @@ -1,4 +1,10 @@ |
298 | +<<<<<<< debian/patches/41-handle-logind-fail.patch |
299 | Author: Emilio Pozuelo Monfort <pochu@debian.org> |
300 | +======= |
301 | +From: Emilio Pozuelo Monfort <pochu@debian.org> |
302 | +Date: Wed, 20 Jun 2018 19:22:06 +0200 |
303 | +Subject: handle-logind-fail |
304 | +>>>>>>> debian/patches/41-handle-logind-fail.patch |
305 | |
306 | Even if logind is running (which is what haveSystemd() is checking), it may |
307 | fail to create a session, e.g. if the kernel doesn't have cgroups support. |
308 | @@ -8,10 +14,22 @@ start. Thus talk to logind if XDG_SESSION_ID is set, which is a sign that |
309 | logind actually created our session. Otherwise, fall back to ConsoleKit. |
310 | |
311 | http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=729877 |
312 | +<<<<<<< debian/patches/41-handle-logind-fail.patch |
313 | |
314 | --- a/js/misc/loginManager.js |
315 | +++ b/js/misc/loginManager.js |
316 | @@ -93,7 +93,7 @@ |
317 | +======= |
318 | +--- |
319 | + js/misc/loginManager.js | 2 +- |
320 | + 1 file changed, 1 insertion(+), 1 deletion(-) |
321 | + |
322 | +diff --git a/js/misc/loginManager.js b/js/misc/loginManager.js |
323 | +index 4eb0686..3d3c4b4 100644 |
324 | +--- a/js/misc/loginManager.js |
325 | ++++ b/js/misc/loginManager.js |
326 | +@@ -93,7 +93,7 @@ let _loginManager = null; |
327 | +>>>>>>> debian/patches/41-handle-logind-fail.patch |
328 | */ |
329 | function getLoginManager() { |
330 | if (_loginManager == null) { |
331 | diff --git a/debian/patches/50_add_ubuntu_desktop_detect.patch b/debian/patches/50_add_ubuntu_desktop_detect.patch |
332 | index 08318cb..40b407a 100644 |
333 | --- a/debian/patches/50_add_ubuntu_desktop_detect.patch |
334 | +++ b/debian/patches/50_add_ubuntu_desktop_detect.patch |
335 | @@ -1,3 +1,4 @@ |
336 | +<<<<<<< debian/patches/50_add_ubuntu_desktop_detect.patch |
337 | Description: Add an helper to detect current desktop |
338 | We will differentiate some behavior depending on current desktop. Add an |
339 | helper to centralize the current desktop detection. |
340 | @@ -8,6 +9,40 @@ Index: gnome-shell-3.24.3/js/misc/desktop.js |
341 | =================================================================== |
342 | --- /dev/null |
343 | +++ gnome-shell-3.24.3/js/misc/desktop.js |
344 | +======= |
345 | +From: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> |
346 | +Date: Wed, 20 Jun 2018 19:22:06 +0200 |
347 | +Subject: Add an helper to detect current desktop |
348 | + |
349 | +We will differentiate some behavior depending on current desktop. Add an |
350 | +helper to centralize the current desktop detection. |
351 | +Forwarded: not-needed |
352 | +Origin: ubuntu |
353 | +=================================================================== |
354 | +--- |
355 | + js/js-resources.gresource.xml | 1 + |
356 | + js/misc/desktop.js | 39 +++++++++++++++++++++++++++++++++++++++ |
357 | + 2 files changed, 40 insertions(+) |
358 | + create mode 100644 js/misc/desktop.js |
359 | + |
360 | +diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml |
361 | +index 883b62d..3909dc8 100644 |
362 | +--- a/js/js-resources.gresource.xml |
363 | ++++ b/js/js-resources.gresource.xml |
364 | +@@ -13,6 +13,7 @@ |
365 | + |
366 | + <file>misc/config.js</file> |
367 | + <file>misc/extensionUtils.js</file> |
368 | ++ <file>misc/desktop.js</file> |
369 | + <file>misc/fileUtils.js</file> |
370 | + <file>misc/gnomeSession.js</file> |
371 | + <file>misc/history.js</file> |
372 | +diff --git a/js/misc/desktop.js b/js/misc/desktop.js |
373 | +new file mode 100644 |
374 | +index 0000000..3b0d128 |
375 | +--- /dev/null |
376 | ++++ b/js/misc/desktop.js |
377 | +>>>>>>> debian/patches/50_add_ubuntu_desktop_detect.patch |
378 | @@ -0,0 +1,39 @@ |
379 | +// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
380 | + |
381 | @@ -48,6 +83,7 @@ Index: gnome-shell-3.24.3/js/misc/desktop.js |
382 | + _currentDesktopsMatches[name] = false; |
383 | + return false; |
384 | +} |
385 | +<<<<<<< debian/patches/50_add_ubuntu_desktop_detect.patch |
386 | Index: gnome-shell-3.24.3/js/js-resources.gresource.xml |
387 | =================================================================== |
388 | --- gnome-shell-3.24.3.orig/js/js-resources.gresource.xml |
389 | @@ -60,3 +96,5 @@ Index: gnome-shell-3.24.3/js/js-resources.gresource.xml |
390 | <file>misc/fileUtils.js</file> |
391 | <file>misc/gnomeSession.js</file> |
392 | <file>misc/history.js</file> |
393 | +======= |
394 | +>>>>>>> debian/patches/50_add_ubuntu_desktop_detect.patch |
395 | diff --git a/debian/patches/70_allow_sound_above_100.patch b/debian/patches/70_allow_sound_above_100.patch |
396 | index b1eda45..7ea4f7a 100644 |
397 | --- a/debian/patches/70_allow_sound_above_100.patch |
398 | +++ b/debian/patches/70_allow_sound_above_100.patch |
399 | @@ -1,3 +1,4 @@ |
400 | +<<<<<<< debian/patches/70_allow_sound_above_100.patch |
401 | Description: Allow volume to be set above 100%. |
402 | Some systems have low maximum volume set (like x220), allow, from an option |
403 | in gnome-control-center to set it above that 100% limit from g-s-d |
404 | @@ -14,6 +15,26 @@ Index: gnome-shell-3.27.91/js/ui/status/volume.js |
405 | =================================================================== |
406 | --- gnome-shell-3.27.91.orig/js/ui/status/volume.js |
407 | +++ gnome-shell-3.27.91/js/ui/status/volume.js |
408 | +======= |
409 | +From: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> |
410 | +Date: Wed, 20 Jun 2018 19:22:06 +0200 |
411 | +Subject: Allow volume to be set above 100%. |
412 | + |
413 | +Some systems have low maximum volume set (like x220), allow, from an option |
414 | +in gnome-control-center to set it above that 100% limit from g-s-d |
415 | +(keyboard) and gnome-shell. |
416 | +Origin: ubuntu |
417 | +Bug-Ubuntu: https://launchpad.net/bugs/1706524 |
418 | +Bug: https://bugzilla.gnome.org/show_bug.cgi?id=710424 |
419 | +--- |
420 | + js/ui/status/volume.js | 32 +++++++++++++++++++++++++++++--- |
421 | + 1 file changed, 29 insertions(+), 3 deletions(-) |
422 | + |
423 | +diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js |
424 | +index d814ef6..65c4c42 100644 |
425 | +--- a/js/ui/status/volume.js |
426 | ++++ b/js/ui/status/volume.js |
427 | +>>>>>>> debian/patches/70_allow_sound_above_100.patch |
428 | @@ -7,6 +7,7 @@ const Gvc = imports.gi.Gvc; |
429 | const St = imports.gi.St; |
430 | const Signals = imports.signals; |
431 | diff --git a/debian/patches/71_smarter_alt_tab.patch b/debian/patches/71_smarter_alt_tab.patch |
432 | index f281909..06a3ce0 100644 |
433 | --- a/debian/patches/71_smarter_alt_tab.patch |
434 | +++ b/debian/patches/71_smarter_alt_tab.patch |
435 | @@ -1,3 +1,4 @@ |
436 | +<<<<<<< debian/patches/71_smarter_alt_tab.patch |
437 | Description: Build a smarter alt-tab in the ubuntu session |
438 | In case of a quick alt-tab (before the switcher UI shows up), we want to cover |
439 | the power user use-case, which is to switch quickly between 2 windows. |
440 | @@ -21,6 +22,38 @@ Index: gnome-shell-3.27.91/js/ui/altTab.js |
441 | =================================================================== |
442 | --- gnome-shell-3.27.91.orig/js/ui/altTab.js |
443 | +++ gnome-shell-3.27.91/js/ui/altTab.js |
444 | +======= |
445 | +From: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> |
446 | +Date: Wed, 20 Jun 2018 19:22:06 +0200 |
447 | +Subject: Build a smarter alt-tab in the ubuntu session |
448 | + |
449 | +In case of a quick alt-tab (before the switcher UI shows up), we want to cover |
450 | +the power user use-case, which is to switch quickly between 2 windows. |
451 | +The issue with current behavior is say: |
452 | +- you have an application with one instance, maximized |
453 | +- you have another application with multiple instances, like multiple |
454 | + terminals, not maximized. |
455 | +If you press alt-tab, even quickly, the whole second application would be |
456 | +raised (as no window has been selected). The consequence is that you have |
457 | +all terminal in front of, for instance, your browser or documentation viewer |
458 | +you are using. |
459 | +The behavior we implement enables this. However, as soon as the switcher ui |
460 | +is displayed to the user, not selecting a particular window instance will |
461 | +raise the whole applications. Consequently only "quick alt-tab" flow is |
462 | +impacted. |
463 | +Origin: ubuntu |
464 | +Bug-Ubuntu: https://launchpad.net/bugs/1716921 |
465 | +Forwarded: https://bugzilla.gnome.org/show_bug.cgi?id=787627 |
466 | +--- |
467 | + js/ui/altTab.js | 10 ++++++++++ |
468 | + js/ui/switcherPopup.js | 4 +++- |
469 | + 2 files changed, 13 insertions(+), 1 deletion(-) |
470 | + |
471 | +diff --git a/js/ui/altTab.js b/js/ui/altTab.js |
472 | +index 97dddce..764d308 100644 |
473 | +--- a/js/ui/altTab.js |
474 | ++++ b/js/ui/altTab.js |
475 | +>>>>>>> debian/patches/71_smarter_alt_tab.patch |
476 | @@ -13,6 +13,7 @@ const Atk = imports.gi.Atk; |
477 | const Main = imports.ui.main; |
478 | const SwitcherPopup = imports.ui.switcherPopup; |
479 | @@ -45,10 +78,17 @@ Index: gnome-shell-3.27.91/js/ui/altTab.js |
480 | if (this._currentWindow < 0) |
481 | appIcon.app.activate_window(appIcon.cachedWindows[0], timestamp); |
482 | else if (appIcon.cachedWindows[this._currentWindow]) |
483 | +<<<<<<< debian/patches/71_smarter_alt_tab.patch |
484 | Index: gnome-shell-3.27.91/js/ui/switcherPopup.js |
485 | =================================================================== |
486 | --- gnome-shell-3.27.91.orig/js/ui/switcherPopup.js |
487 | +++ gnome-shell-3.27.91/js/ui/switcherPopup.js |
488 | +======= |
489 | +diff --git a/js/ui/switcherPopup.js b/js/ui/switcherPopup.js |
490 | +index a53b1e6..71911c8 100644 |
491 | +--- a/js/ui/switcherPopup.js |
492 | ++++ b/js/ui/switcherPopup.js |
493 | +>>>>>>> debian/patches/71_smarter_alt_tab.patch |
494 | @@ -12,8 +12,10 @@ const St = imports.gi.St; |
495 | |
496 | const Main = imports.ui.main; |
497 | diff --git a/debian/patches/CVE-2019-3820-1.patch b/debian/patches/CVE-2019-3820-1.patch |
498 | new file mode 100644 |
499 | index 0000000..f704252 |
500 | --- /dev/null |
501 | +++ b/debian/patches/CVE-2019-3820-1.patch |
502 | @@ -0,0 +1,29 @@ |
503 | +From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org> |
504 | +Date: Wed, 23 Jan 2019 23:55:12 +0100 |
505 | +Subject: [PATCH] panel: Don't allow opening hidden menus via keybindings |
506 | + |
507 | +We shouldn't allow toggling menus that aren't supported by the |
508 | +current session mode, but as indicators are hidden rather than |
509 | +destroyed on mode switches, it is not enough to check for an |
510 | +indicator's existence. |
511 | + |
512 | +https://gitlab.gnome.org/GNOME/gnome-shell/issues/851 |
513 | +--- |
514 | + js/ui/panel.js | 4 ++-- |
515 | + 1 file changed, 2 insertions(+), 2 deletions(-) |
516 | + |
517 | +diff --git a/js/ui/panel.js b/js/ui/panel.js |
518 | +index a76916b..85572e2 100644 |
519 | +--- a/js/ui/panel.js |
520 | ++++ b/js/ui/panel.js |
521 | +@@ -992,8 +992,8 @@ var Panel = new Lang.Class({ |
522 | + }, |
523 | + |
524 | + _toggleMenu(indicator) { |
525 | +- if (!indicator) // menu not supported by current session mode |
526 | +- return; |
527 | ++ if (!indicator || !indicator.container.visible) |
528 | ++ return; // menu not supported by current session mode |
529 | + |
530 | + let menu = indicator.menu; |
531 | + if (!indicator.actor.reactive) |
532 | diff --git a/debian/patches/CVE-2019-3820-2.patch b/debian/patches/CVE-2019-3820-2.patch |
533 | new file mode 100644 |
534 | index 0000000..dc6e562 |
535 | --- /dev/null |
536 | +++ b/debian/patches/CVE-2019-3820-2.patch |
537 | @@ -0,0 +1,93 @@ |
538 | +From: Ray Strode <rstrode@redhat.com> |
539 | +Date: Wed, 23 Jan 2019 15:59:42 -0500 |
540 | +Subject: [PATCH] shellActionModes: disable POPUP keybindings in unlock screen |
541 | + |
542 | +Certain keybindings should continue to work even when a popup |
543 | +menu is on screen. For instance, the keybinding for showing |
544 | +the app menu and the keyinding for showing the calendar are |
545 | +examples. |
546 | + |
547 | +This is achieved by putting in place a special "POPUP" action |
548 | +mode, whenever a popup menu is active. This mode replaces |
549 | +the (e.g., "NORMAL" or "OVERVIEW") action mode that was in place |
550 | +for as long as the popup menu is active. |
551 | + |
552 | +But those keybindings should not work when the user is at the |
553 | +unlock dialog (which uses an action mode of "UNLOCK"). |
554 | + |
555 | +Unfortunately, since commit c79d24b6 they do. |
556 | + |
557 | +This commit addresses the problem by forcing the action mode |
558 | +to NONE at the unlock screen when popups are visible. |
559 | + |
560 | +CVE-2019-3820 |
561 | + |
562 | +Closes https://gitlab.gnome.org/GNOME/gnome-shell/issues/851 |
563 | +--- |
564 | + js/gdm/authPrompt.js | 3 ++- |
565 | + js/gdm/loginDialog.js | 3 ++- |
566 | + js/ui/shellEntry.js | 6 ++++-- |
567 | + 3 files changed, 8 insertions(+), 4 deletions(-) |
568 | + |
569 | +diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js |
570 | +index a0a4a21..78e0454 100644 |
571 | +--- a/js/gdm/authPrompt.js |
572 | ++++ b/js/gdm/authPrompt.js |
573 | +@@ -11,6 +11,7 @@ const Animation = imports.ui.animation; |
574 | + const Batch = imports.gdm.batch; |
575 | + const GdmUtil = imports.gdm.util; |
576 | + const Params = imports.misc.params; |
577 | ++const Shell = imports.gi.Shell; |
578 | + const ShellEntry = imports.ui.shellEntry; |
579 | + const Tweener = imports.ui.tweener; |
580 | + const UserWidget = imports.ui.userWidget; |
581 | +@@ -99,7 +100,7 @@ var AuthPrompt = new Lang.Class({ |
582 | + x_align: St.Align.START }); |
583 | + this._entry = new St.Entry({ style_class: 'login-dialog-prompt-entry', |
584 | + can_focus: true }); |
585 | +- ShellEntry.addContextMenu(this._entry, { isPassword: true }); |
586 | ++ ShellEntry.addContextMenu(this._entry, { isPassword: true, actionMode: Shell.ActionMode.NONE }); |
587 | + |
588 | + this.actor.add(this._entry, |
589 | + { expand: true, |
590 | +diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js |
591 | +index 4a93545..5ab8525 100644 |
592 | +--- a/js/gdm/loginDialog.js |
593 | ++++ b/js/gdm/loginDialog.js |
594 | +@@ -338,7 +338,8 @@ var SessionMenuButton = new Lang.Class({ |
595 | + this._button.remove_style_pseudo_class('active'); |
596 | + }); |
597 | + |
598 | +- this._manager = new PopupMenu.PopupMenuManager({ actor: this._button }); |
599 | ++ this._manager = new PopupMenu.PopupMenuManager({ actor: this._button }, |
600 | ++ { actionMode: Shell.ActionMode.NONE }); |
601 | + this._manager.addMenu(this._menu); |
602 | + |
603 | + this._button.connect('clicked', () => { this._menu.toggle(); }); |
604 | +diff --git a/js/ui/shellEntry.js b/js/ui/shellEntry.js |
605 | +index 9db5136..09bb9bb 100644 |
606 | +--- a/js/ui/shellEntry.js |
607 | ++++ b/js/ui/shellEntry.js |
608 | +@@ -9,6 +9,7 @@ const BoxPointer = imports.ui.boxpointer; |
609 | + const Main = imports.ui.main; |
610 | + const Params = imports.misc.params; |
611 | + const PopupMenu = imports.ui.popupMenu; |
612 | ++const Shell = imports.gi.Shell; |
613 | + |
614 | + var EntryMenu = new Lang.Class({ |
615 | + Name: 'ShellEntryMenu', |
616 | +@@ -150,11 +151,12 @@ function addContextMenu(entry, params) { |
617 | + if (entry.menu) |
618 | + return; |
619 | + |
620 | +- params = Params.parse (params, { isPassword: false }); |
621 | ++ params = Params.parse (params, { isPassword: false, actionMode: Shell.ActionMode.POPUP }); |
622 | + |
623 | + entry.menu = new EntryMenu(entry); |
624 | + entry.menu.isPassword = params.isPassword; |
625 | +- entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry }); |
626 | ++ entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry }, |
627 | ++ { actionMode: params.actionMode }); |
628 | + entry._menuManager.addMenu(entry.menu); |
629 | + |
630 | + // Add an event handler to both the entry and its clutter_text; the former |
631 | diff --git a/debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch b/debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch |
632 | index 96b2cf0..6645cf9 100644 |
633 | --- a/debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch |
634 | +++ b/debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch |
635 | @@ -1,5 +1,9 @@ |
636 | From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net> |
637 | +<<<<<<< debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch |
638 | Date: Wed, 18 Oct 2017 05:32:22 -0500 |
639 | +======= |
640 | +Date: Wed, 18 Oct 2017 12:32:22 +0200 |
641 | +>>>>>>> debian/patches/StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch |
642 | Subject: StIcon: only compute shadow pipeline when the texture is properly |
643 | allocated |
644 | |
645 | diff --git a/debian/patches/dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch b/debian/patches/dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch |
646 | new file mode 100644 |
647 | index 0000000..9f1787e |
648 | --- /dev/null |
649 | +++ b/debian/patches/dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch |
650 | @@ -0,0 +1,40 @@ |
651 | +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net> |
652 | +Date: Fri, 3 May 2019 15:27:13 -0500 |
653 | +Subject: dialog: Really set ellipsize mode in subtitle and body |
654 | + |
655 | +Dialog's subtitle or body could not be properly wrapped, while it's ellipsized |
656 | +when the text's width doesn't exceed the container size. |
657 | + |
658 | +Clutter text has an `ellipsize` property, however in dialog's subtitle and body |
659 | +we have been setting the `ellipsize-mode` property to Pango.EllipsizeMode.NONE |
660 | +that is not present in the underlying GObject. |
661 | + |
662 | +Not being an error in javascript, gjs didn't warn us about this, while at the |
663 | +same time the St.Label's default Pango.EllipsizeMode.END was used. |
664 | + |
665 | +Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/922 |
666 | + |
667 | +https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/531 |
668 | + |
669 | +(cherry picked from commit 3121c9aa29406ad85e949b697e90092f1fa6fc2e) |
670 | + |
671 | +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/5703a25e |
672 | +Bug-Ubuntu: https://bugs.launchpad.net/oem-priority/+bug/1809788 |
673 | +Applied: 3.28.4 |
674 | +--- |
675 | + js/ui/dialog.js | 2 +- |
676 | + 1 file changed, 1 insertion(+), 1 deletion(-) |
677 | + |
678 | +diff --git a/js/ui/dialog.js b/js/ui/dialog.js |
679 | +index 89db963..3377957 100644 |
680 | +--- a/js/ui/dialog.js |
681 | ++++ b/js/ui/dialog.js |
682 | +@@ -185,7 +185,7 @@ var MessageDialogContent = new Lang.Class({ |
683 | + this[`_${prop}`].add_style_class_name(`message-dialog-${prop}`); |
684 | + }); |
685 | + |
686 | +- let textProps = { ellipsize_mode: Pango.EllipsizeMode.NONE, |
687 | ++ let textProps = { ellipsize: Pango.EllipsizeMode.NONE, |
688 | + line_wrap: true }; |
689 | + Object.assign(this._subtitle.clutter_text, textProps); |
690 | + Object.assign(this._body.clutter_text, textProps); |
691 | diff --git a/debian/patches/dnd-Only-handle-touch-events-in-wayland.patch b/debian/patches/dnd-Only-handle-touch-events-in-wayland.patch |
692 | new file mode 100644 |
693 | index 0000000..adb0ad8 |
694 | --- /dev/null |
695 | +++ b/debian/patches/dnd-Only-handle-touch-events-in-wayland.patch |
696 | @@ -0,0 +1,40 @@ |
697 | +From: Andrea Azzarone <andrea.azzarone@canonical.com> |
698 | +Date: Mon, 4 Mar 2019 16:14:22 +0000 |
699 | +Subject: dnd: Only handle touch events in wayland |
700 | + |
701 | +There are serveral issues around touch passive grab and touch/pointer doubly |
702 | +handling to use these on X11, so we stick to single-touch/pointer there. |
703 | + |
704 | +Cherry picked from commit 60ccdc2deb746c0d96b0268ee5034b65478ce779 |
705 | + |
706 | +Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1015 |
707 | + |
708 | +Ubuntu-Bug: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1817020 |
709 | +GNOME-Bug: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1015 |
710 | +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/457 |
711 | +Applied-Upstream: 3.28.4 |
712 | +--- |
713 | + js/ui/dnd.js | 10 ++++++++++ |
714 | + 1 file changed, 10 insertions(+) |
715 | + |
716 | +diff --git a/js/ui/dnd.js b/js/ui/dnd.js |
717 | +index 9e961a1..af7a27a 100644 |
718 | +--- a/js/ui/dnd.js |
719 | ++++ b/js/ui/dnd.js |
720 | +@@ -132,6 +132,16 @@ var _Draggable = new Lang.Class({ |
721 | + }, |
722 | + |
723 | + _onTouchEvent(actor, event) { |
724 | ++ // Here we only handle touch events on wayland. On X11 |
725 | ++ // we do get emulated pointer events, which already works |
726 | ++ // for single-touch cases. Besides, the X11 passive touch grab |
727 | ++ // set up by Mutter will make us see first the touch events |
728 | ++ // and later the pointer events, so it will look like two |
729 | ++ // unrelated series of events, we want to avoid double handling |
730 | ++ // in these cases. |
731 | ++ if (!Meta.is_wayland_compositor()) |
732 | ++ return Clutter.EVENT_PROPAGATE; |
733 | ++ |
734 | + if (event.type() != Clutter.EventType.TOUCH_BEGIN || |
735 | + !global.display.is_pointer_emulating_sequence(event.get_event_sequence())) |
736 | + return Clutter.EVENT_PROPAGATE; |
737 | diff --git a/debian/patches/js-fix-invalid-access-errors.patch b/debian/patches/js-fix-invalid-access-errors.patch |
738 | index dec3a60..5f3dbff 100644 |
739 | --- a/debian/patches/js-fix-invalid-access-errors.patch |
740 | +++ b/debian/patches/js-fix-invalid-access-errors.patch |
741 | @@ -1,5 +1,9 @@ |
742 | From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net> |
743 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
744 | Date: Mon, 4 Dec 2017 19:41:50 -0600 |
745 | +======= |
746 | +Date: Tue, 5 Dec 2017 02:41:50 +0100 |
747 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
748 | Subject: js: fix invalid-access errors |
749 | |
750 | tweener: Save handlers on target and remove them on destroy |
751 | @@ -24,6 +28,7 @@ Remove duplicated handler on 'destroy' and just use a generic one. |
752 | |
753 | https://bugzilla.gnome.org/show_bug.cgi?id=791233 |
754 | |
755 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
756 | workspaceThumbnail: Disconnect from window signals on destruction |
757 | |
758 | Avoid to try to destroy the window clone content more than once |
759 | @@ -68,10 +73,13 @@ good practice). |
760 | |
761 | https://bugzilla.gnome.org/show_bug.cgi?id=791233 |
762 | |
763 | +======= |
764 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
765 | Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=791233 |
766 | Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/bionic/+source/gnome-shell/+bug/1747566 |
767 | Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/4 |
768 | --- |
769 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
770 | js/ui/dnd.js | 65 +++++++++++++++++++++++++++------------------ |
771 | js/ui/tweener.js | 64 +++++++++++++++++++++++++++++++++++--------- |
772 | js/ui/workspace.js | 35 +++++++++++++++++------- |
773 | @@ -80,6 +88,14 @@ Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/4 |
774 | |
775 | diff --git a/js/ui/dnd.js b/js/ui/dnd.js |
776 | index a38607c..431c60d 100644 |
777 | +======= |
778 | + js/ui/dnd.js | 65 +++++++++++++++++++++++++++++++++----------------------- |
779 | + js/ui/tweener.js | 63 ++++++++++++++++++++++++++++++++++++++++++------------ |
780 | + 2 files changed, 89 insertions(+), 39 deletions(-) |
781 | + |
782 | +diff --git a/js/ui/dnd.js b/js/ui/dnd.js |
783 | +index ec1ba1d..9e961a1 100644 |
784 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
785 | --- a/js/ui/dnd.js |
786 | +++ b/js/ui/dnd.js |
787 | @@ -27,6 +27,12 @@ var DragMotionResult = { |
788 | @@ -175,7 +191,11 @@ index a38607c..431c60d 100644 |
789 | this._dragOrigOpacity = this._dragActor.opacity; |
790 | if (this._dragActorOpacity != undefined) |
791 | this._dragActor.opacity = this._dragActorOpacity; |
792 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
793 | @@ -500,7 +515,7 @@ var _Draggable = new Lang.Class({ |
794 | +======= |
795 | +@@ -518,7 +533,7 @@ var _Draggable = new Lang.Class({ |
796 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
797 | event.get_time())) { |
798 | // If it accepted the drop without taking the actor, |
799 | // handle it ourselves. |
800 | @@ -184,7 +204,11 @@ index a38607c..431c60d 100644 |
801 | if (this._restoreOnSuccess) { |
802 | this._restoreDragActor(event.get_time()); |
803 | return true; |
804 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
805 | @@ -508,7 +523,7 @@ var _Draggable = new Lang.Class({ |
806 | +======= |
807 | +@@ -526,7 +541,7 @@ var _Draggable = new Lang.Class({ |
808 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
809 | this._dragActor.destroy(); |
810 | } |
811 | |
812 | @@ -193,7 +217,11 @@ index a38607c..431c60d 100644 |
813 | global.screen.set_cursor(Meta.Cursor.DEFAULT); |
814 | this.emit('drag-end', event.get_time(), true); |
815 | this._dragComplete(); |
816 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
817 | @@ -557,20 +572,22 @@ var _Draggable = new Lang.Class({ |
818 | +======= |
819 | +@@ -575,20 +590,22 @@ var _Draggable = new Lang.Class({ |
820 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
821 | |
822 | _cancelDrag(eventTime) { |
823 | this.emit('drag-cancelled', eventTime); |
824 | @@ -220,7 +248,11 @@ index a38607c..431c60d 100644 |
825 | this._animateDragEnd(eventTime, |
826 | { x: snapBackX, |
827 | y: snapBackY, |
828 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
829 | @@ -581,7 +598,7 @@ var _Draggable = new Lang.Class({ |
830 | +======= |
831 | +@@ -599,7 +616,7 @@ var _Draggable = new Lang.Class({ |
832 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
833 | }, |
834 | |
835 | _restoreDragActor(eventTime) { |
836 | @@ -229,7 +261,11 @@ index a38607c..431c60d 100644 |
837 | let [restoreX, restoreY, restoreScale] = this._getRestoreLocation(); |
838 | |
839 | // fade the actor back in at its original location |
840 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
841 | @@ -596,12 +613,6 @@ var _Draggable = new Lang.Class({ |
842 | +======= |
843 | +@@ -614,12 +631,6 @@ var _Draggable = new Lang.Class({ |
844 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
845 | _animateDragEnd(eventTime, params) { |
846 | this._animationInProgress = true; |
847 | |
848 | @@ -242,7 +278,11 @@ index a38607c..431c60d 100644 |
849 | params['opacity'] = this._dragOrigOpacity; |
850 | params['transition'] = 'easeOutQuad'; |
851 | params['onComplete'] = this._onAnimationComplete; |
852 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
853 | @@ -624,9 +635,6 @@ var _Draggable = new Lang.Class({ |
854 | +======= |
855 | +@@ -642,9 +653,6 @@ var _Draggable = new Lang.Class({ |
856 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
857 | }, |
858 | |
859 | _onAnimationComplete(dragActor, eventTime) { |
860 | @@ -252,7 +292,11 @@ index a38607c..431c60d 100644 |
861 | if (this._dragOrigParent) { |
862 | Main.uiGroup.remove_child(this._dragActor); |
863 | this._dragOrigParent.add_actor(this._dragActor); |
864 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
865 | @@ -641,7 +649,7 @@ var _Draggable = new Lang.Class({ |
866 | +======= |
867 | +@@ -659,7 +667,7 @@ var _Draggable = new Lang.Class({ |
868 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
869 | }, |
870 | |
871 | _dragComplete() { |
872 | @@ -261,7 +305,11 @@ index a38607c..431c60d 100644 |
873 | Shell.util_set_hidden_from_pick(this._dragActor, false); |
874 | |
875 | this._ungrabEvents(); |
876 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
877 | @@ -652,7 +660,12 @@ var _Draggable = new Lang.Class({ |
878 | +======= |
879 | +@@ -670,7 +678,12 @@ var _Draggable = new Lang.Class({ |
880 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
881 | this._updateHoverId = 0; |
882 | } |
883 | |
884 | @@ -276,10 +324,17 @@ index a38607c..431c60d 100644 |
885 | } |
886 | }); |
887 | diff --git a/js/ui/tweener.js b/js/ui/tweener.js |
888 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
889 | index 1a85e2f..663b97b 100644 |
890 | --- a/js/ui/tweener.js |
891 | +++ b/js/ui/tweener.js |
892 | @@ -69,30 +69,68 @@ function _getTweenState(target) { |
893 | +======= |
894 | +index 1a85e2f..22818ba 100644 |
895 | +--- a/js/ui/tweener.js |
896 | ++++ b/js/ui/tweener.js |
897 | +@@ -69,30 +69,67 @@ function _getTweenState(target) { |
898 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
899 | return target.__ShellTweenerState; |
900 | } |
901 | |
902 | @@ -320,8 +375,12 @@ index 1a85e2f..663b97b 100644 |
903 | + let wrapperNeeded = false; |
904 | + let tweenerHandlers = _ensureHandlers(target); |
905 | + |
906 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
907 | + if (!(name in tweenerHandlers)) |
908 | + { |
909 | +======= |
910 | ++ if (!(name in tweenerHandlers)) { |
911 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
912 | + tweenerHandlers[name] = []; |
913 | + wrapperNeeded = true; |
914 | + } |
915 | @@ -361,6 +420,7 @@ index 1a85e2f..663b97b 100644 |
916 | } |
917 | |
918 | function _actorDestroyed(target) { |
919 | +<<<<<<< debian/patches/js-fix-invalid-access-errors.patch |
920 | diff --git a/js/ui/workspace.js b/js/ui/workspace.js |
921 | index 1e121b7..8836537 100644 |
922 | --- a/js/ui/workspace.js |
923 | @@ -562,3 +622,5 @@ index c1b4bdd..0c72e74 100644 |
924 | |
925 | return clone; |
926 | }, |
927 | +======= |
928 | +>>>>>>> debian/patches/js-fix-invalid-access-errors.patch |
929 | diff --git a/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch b/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
930 | index 1402949..79767a4 100644 |
931 | --- a/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
932 | +++ b/debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
933 | @@ -1,5 +1,9 @@ |
934 | From: Daniel van Vugt <daniel.van.vugt@canonical.com> |
935 | +<<<<<<< debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
936 | Date: Fri, 6 Apr 2018 05:26:58 -0500 |
937 | +======= |
938 | +Date: Fri, 6 Apr 2018 12:26:58 +0200 |
939 | +>>>>>>> debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
940 | Subject: js/ui: Choose some actors to cache on the GPU |
941 | |
942 | Adds a wrapper function to flag actors that are good candidates for |
943 | @@ -64,10 +68,17 @@ index 47f718a..602646a 100644 |
944 | this._container.connect('get-preferred-height', this._getPreferredHeight.bind(this)); |
945 | this._container.connect('allocate', this._allocate.bind(this)); |
946 | diff --git a/js/ui/dash.js b/js/ui/dash.js |
947 | +<<<<<<< debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
948 | index 5ee2476..14864f1 100644 |
949 | --- a/js/ui/dash.js |
950 | +++ b/js/ui/dash.js |
951 | @@ -402,6 +402,7 @@ var Dash = new Lang.Class({ |
952 | +======= |
953 | +index d75af65..4d3fe73 100644 |
954 | +--- a/js/ui/dash.js |
955 | ++++ b/js/ui/dash.js |
956 | +@@ -404,6 +404,7 @@ var Dash = new Lang.Class({ |
957 | +>>>>>>> debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
958 | clip_to_allocation: true }); |
959 | this._box._delegate = this; |
960 | this._container.add_actor(this._box); |
961 | @@ -96,10 +107,17 @@ index cfa192d..89db963 100644 |
962 | this.contentLayout = new St.BoxLayout({ vertical: true, |
963 | style_class: "modal-dialog-content-box" }); |
964 | diff --git a/js/ui/main.js b/js/ui/main.js |
965 | +<<<<<<< debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
966 | index d86cf9e..5277cf7 100644 |
967 | --- a/js/ui/main.js |
968 | +++ b/js/ui/main.js |
969 | @@ -716,3 +716,19 @@ function showRestartMessage(message) { |
970 | +======= |
971 | +index 2c54bb6..baca1c2 100644 |
972 | +--- a/js/ui/main.js |
973 | ++++ b/js/ui/main.js |
974 | +@@ -719,3 +719,19 @@ function showRestartMessage(message) { |
975 | +>>>>>>> debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
976 | let restartMessage = new RestartMessage(message); |
977 | restartMessage.open(); |
978 | } |
979 | @@ -120,7 +138,11 @@ index d86cf9e..5277cf7 100644 |
980 | + actor.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); |
981 | +} |
982 | diff --git a/js/ui/panel.js b/js/ui/panel.js |
983 | +<<<<<<< debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
984 | index 2f59324..2237ead 100644 |
985 | +======= |
986 | +index ef14ddf..a76916b 100644 |
987 | +>>>>>>> debian/patches/js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
988 | --- a/js/ui/panel.js |
989 | +++ b/js/ui/panel.js |
990 | @@ -772,6 +772,7 @@ var Panel = new Lang.Class({ |
991 | diff --git a/debian/patches/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch b/debian/patches/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch |
992 | new file mode 100644 |
993 | index 0000000..a694dce |
994 | --- /dev/null |
995 | +++ b/debian/patches/keyboard-Filter-redundant-FocusTracker-position-changed-s.patch |
996 | @@ -0,0 +1,38 @@ |
997 | +From: Carlos Garnacho <carlosg@gnome.org> |
998 | +Date: Mon, 17 Sep 2018 21:04:48 +0200 |
999 | +Subject: keyboard: Filter redundant FocusTracker::position-changed signals |
1000 | + |
1001 | +Just emit the signal if it did actually change. |
1002 | + |
1003 | +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1812735 |
1004 | +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/239 |
1005 | +--- |
1006 | + js/ui/keyboard.js | 8 ++++++++ |
1007 | + 1 file changed, 8 insertions(+) |
1008 | + |
1009 | +diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js |
1010 | +index 4413846..4a923ad 100644 |
1011 | +--- a/js/ui/keyboard.js |
1012 | ++++ b/js/ui/keyboard.js |
1013 | +@@ -491,6 +491,7 @@ var FocusTracker = new Lang.Class({ |
1014 | + _init() { |
1015 | + this._currentWindow = null; |
1016 | + this._currentWindowPositionId = 0; |
1017 | ++ this._rect = null; |
1018 | + |
1019 | + global.screen.get_display().connect('notify::focus-window', () => { |
1020 | + this._setCurrentWindow(global.screen.get_display().focus_window); |
1021 | +@@ -539,6 +540,13 @@ var FocusTracker = new Lang.Class({ |
1022 | + rect.y -= frameRect.y; |
1023 | + } |
1024 | + |
1025 | ++ if (this._rect && |
1026 | ++ this._rect.x == rect.x && |
1027 | ++ this._rect.y == rect.y && |
1028 | ++ this._rect.width == rect.width && |
1029 | ++ this._rect.height == rect.height) |
1030 | ++ return; |
1031 | ++ |
1032 | + this._rect = rect; |
1033 | + this.emit('position-changed'); |
1034 | + }, |
1035 | diff --git a/debian/patches/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch b/debian/patches/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch |
1036 | new file mode 100644 |
1037 | index 0000000..0f4122f |
1038 | --- /dev/null |
1039 | +++ b/debian/patches/keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch |
1040 | @@ -0,0 +1,65 @@ |
1041 | +From: Carlos Garnacho <carlosg@gnome.org> |
1042 | +Date: Tue, 18 Sep 2018 12:54:29 +0200 |
1043 | +Subject: keyboard: Listen to IbusPanelService::focus-in/out to track focus |
1044 | + changes |
1045 | + |
1046 | +In X11 there's no input panel state requests, so restore the previous behavior |
1047 | +that focused entries would always toggle the OSK on there. |
1048 | + |
1049 | +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1760399 |
1050 | +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/239 |
1051 | +--- |
1052 | + js/misc/ibusManager.js | 5 +++++ |
1053 | + js/ui/keyboard.js | 16 ++++++++++++++++ |
1054 | + 2 files changed, 21 insertions(+) |
1055 | + |
1056 | +diff --git a/js/misc/ibusManager.js b/js/misc/ibusManager.js |
1057 | +index ad2e0fc..33ad877 100644 |
1058 | +--- a/js/misc/ibusManager.js |
1059 | ++++ b/js/misc/ibusManager.js |
1060 | +@@ -119,6 +119,11 @@ var IBusManager = new Lang.Class({ |
1061 | + let cursorLocation = { x, y, width: w, height: h }; |
1062 | + this.emit('set-cursor-location', cursorLocation); |
1063 | + }); |
1064 | ++ this._panelService.connect('focus-in', (panel, path) => { |
1065 | ++ if (!GLib.str_has_suffix(path, '/InputContext_1')) |
1066 | ++ this.emit ('focus-in'); |
1067 | ++ }); |
1068 | ++ this._panelService.connect('focus-out', () => { this.emit('focus-out'); }); |
1069 | + |
1070 | + try { |
1071 | + // IBus versions older than 1.5.10 have a bug which |
1072 | +diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js |
1073 | +index 4a923ad..7dba1a8 100644 |
1074 | +--- a/js/ui/keyboard.js |
1075 | ++++ b/js/ui/keyboard.js |
1076 | +@@ -512,6 +512,12 @@ var FocusTracker = new Lang.Class({ |
1077 | + |
1078 | + this._setCurrentRect(rect); |
1079 | + }); |
1080 | ++ this._ibusManager.connect('focus-in', () => { |
1081 | ++ this.emit('focus-changed', true); |
1082 | ++ }); |
1083 | ++ this._ibusManager.connect('focus-out', () => { |
1084 | ++ this.emit('focus-changed', false); |
1085 | ++ }); |
1086 | + }, |
1087 | + |
1088 | + get currentWindow() { |
1089 | +@@ -594,6 +600,16 @@ var Keyboard = new Lang.Class({ |
1090 | + this._animFocusedWindow = null; |
1091 | + this._oskFocusWindow = null; |
1092 | + }); |
1093 | ++ this._focusTracker.connect('focus-changed', (tracker, focused) => { |
1094 | ++ // Valid only for X11 |
1095 | ++ if (Meta.is_wayland_compositor()) |
1096 | ++ return; |
1097 | ++ |
1098 | ++ if (focused) |
1099 | ++ this.show(Main.layoutManager.focusIndex); |
1100 | ++ else |
1101 | ++ this.hide(); |
1102 | ++ }); |
1103 | + |
1104 | + Meta.get_backend().connect('last-device-changed', |
1105 | + (backend, deviceId) => { |
1106 | diff --git a/debian/patches/optional-hot-corner.patch b/debian/patches/optional-hot-corner.patch |
1107 | index 0ae5f0f..484a5da 100644 |
1108 | --- a/debian/patches/optional-hot-corner.patch |
1109 | +++ b/debian/patches/optional-hot-corner.patch |
1110 | @@ -1,5 +1,9 @@ |
1111 | +<<<<<<< debian/patches/optional-hot-corner.patch |
1112 | From 9d7ad6b631470b28efcdb49d24ca4a835d3df17d Mon Sep 17 00:00:00 2001 |
1113 | From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org> |
1114 | +======= |
1115 | +From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org> |
1116 | +>>>>>>> debian/patches/optional-hot-corner.patch |
1117 | Date: Thu, 8 Jun 2017 17:07:56 +0200 |
1118 | Subject: [PATCH] layout: Make the hot corner optional |
1119 | |
1120 | @@ -14,10 +18,17 @@ https://bugzilla.gnome.org/show_bug.cgi?id=688320 |
1121 | js/ui/layout.js | 8 ++++++++ |
1122 | 2 files changed, 16 insertions(+) |
1123 | |
1124 | +<<<<<<< debian/patches/optional-hot-corner.patch |
1125 | Index: gnome-shell-3.27.91/data/org.gnome.shell.gschema.xml.in |
1126 | =================================================================== |
1127 | --- gnome-shell-3.27.91.orig/data/org.gnome.shell.gschema.xml.in |
1128 | +++ gnome-shell-3.27.91/data/org.gnome.shell.gschema.xml.in |
1129 | +======= |
1130 | +diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in |
1131 | +index 63a1903..8ec1d26 100644 |
1132 | +--- a/data/org.gnome.shell.gschema.xml.in |
1133 | ++++ b/data/org.gnome.shell.gschema.xml.in |
1134 | +>>>>>>> debian/patches/optional-hot-corner.patch |
1135 | @@ -38,6 +38,14 @@ |
1136 | load all extensions regardless of the versions they claim to support. |
1137 | </description> |
1138 | @@ -33,11 +44,19 @@ Index: gnome-shell-3.27.91/data/org.gnome.shell.gschema.xml.in |
1139 | <key name="favorite-apps" type="as"> |
1140 | <default>[ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default> |
1141 | <summary>List of desktop file IDs for favorite applications</summary> |
1142 | +<<<<<<< debian/patches/optional-hot-corner.patch |
1143 | Index: gnome-shell-3.27.91/js/ui/layout.js |
1144 | =================================================================== |
1145 | --- gnome-shell-3.27.91.orig/js/ui/layout.js |
1146 | +++ gnome-shell-3.27.91/js/ui/layout.js |
1147 | @@ -268,6 +268,9 @@ var LayoutManager = new Lang.Class({ |
1148 | +======= |
1149 | +diff --git a/js/ui/layout.js b/js/ui/layout.js |
1150 | +index e615e56..fa21ef8 100644 |
1151 | +--- a/js/ui/layout.js |
1152 | ++++ b/js/ui/layout.js |
1153 | +@@ -269,6 +269,9 @@ var LayoutManager = new Lang.Class({ |
1154 | +>>>>>>> debian/patches/optional-hot-corner.patch |
1155 | this._backgroundGroup.lower_bottom(); |
1156 | this._bgManagers = []; |
1157 | |
1158 | @@ -47,7 +66,11 @@ Index: gnome-shell-3.27.91/js/ui/layout.js |
1159 | // Need to update struts on new workspaces when they are added |
1160 | global.screen.connect('notify::n-workspaces', |
1161 | this._queueUpdateRegions.bind(this)); |
1162 | +<<<<<<< debian/patches/optional-hot-corner.patch |
1163 | @@ -364,6 +367,11 @@ var LayoutManager = new Lang.Class({ |
1164 | +======= |
1165 | +@@ -365,6 +368,11 @@ var LayoutManager = new Lang.Class({ |
1166 | +>>>>>>> debian/patches/optional-hot-corner.patch |
1167 | }); |
1168 | this.hotCorners = []; |
1169 | |
1170 | diff --git a/debian/patches/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch b/debian/patches/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch |
1171 | new file mode 100644 |
1172 | index 0000000..d74b23c |
1173 | --- /dev/null |
1174 | +++ b/debian/patches/power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch |
1175 | @@ -0,0 +1,212 @@ |
1176 | +From: =?utf-8?q?Jo=C3=A3o_Paulo_Rechi_Vita?= <jprvita@endlessm.com> |
1177 | +Date: Fri, 2 Nov 2018 21:51:33 +0100 |
1178 | +Subject: power: Label the PENDING_CHARGE state as "Not Charging" |
1179 | + |
1180 | +The pending-charge state means AC power is on but the battery is not |
1181 | +being charged. This can happen because its charge is above a certain |
1182 | +threshold, to avoid short charging cycles and prolong the battery's |
1183 | +life, or because the PSU is not powerful enough to charge the batteries. |
1184 | + |
1185 | +Instead of lying to the user about something being estimated, we should |
1186 | +simply tell the truth and set the label to "Not Charging". |
1187 | + |
1188 | +Closes: #701. |
1189 | + |
1190 | +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1745032 |
1191 | +Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/701 |
1192 | +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/52c59ac0dd7ddbe064 |
1193 | +--- |
1194 | + js/ui/status/power.js | 4 +++- |
1195 | + po/ca.po | 4 ++++ |
1196 | + po/de.po | 4 ++++ |
1197 | + po/el.po | 4 ++++ |
1198 | + po/eo.po | 4 ++++ |
1199 | + po/es.po | 4 ++++ |
1200 | + po/fur.po | 4 ++++ |
1201 | + po/it.po | 4 ++++ |
1202 | + po/ja.po | 4 ++++ |
1203 | + po/sl.po | 4 ++++ |
1204 | + po/sv.po | 4 ++++ |
1205 | + po/tr.po | 4 ++++ |
1206 | + 12 files changed, 47 insertions(+), 1 deletion(-) |
1207 | + |
1208 | +diff --git a/js/ui/status/power.js b/js/ui/status/power.js |
1209 | +index a2bfd75..bfd0de5 100644 |
1210 | +--- a/js/ui/status/power.js |
1211 | ++++ b/js/ui/status/power.js |
1212 | +@@ -79,7 +79,9 @@ var Indicator = new Lang.Class({ |
1213 | + seconds = this._proxy.TimeToFull; |
1214 | + else if (this._proxy.State == UPower.DeviceState.DISCHARGING) |
1215 | + seconds = this._proxy.TimeToEmpty; |
1216 | +- // state is one of PENDING_CHARGING, PENDING_DISCHARGING |
1217 | ++ else if (this._proxy.State == UPower.DeviceState.PENDING_CHARGE) |
1218 | ++ return _("Not Charging"); |
1219 | ++ // state is PENDING_DISCHARGE |
1220 | + else |
1221 | + return _("Estimating…"); |
1222 | + |
1223 | +diff --git a/po/ca.po b/po/ca.po |
1224 | +index 5858f87..0bd69fd 100644 |
1225 | +--- a/po/ca.po |
1226 | ++++ b/po/ca.po |
1227 | +@@ -1922,6 +1922,10 @@ msgstr "Paràmetres d'energia" |
1228 | + msgid "Fully Charged" |
1229 | + msgstr "Totalment carregada" |
1230 | + |
1231 | ++#: js/ui/status/power.js:74 |
1232 | ++msgid "Not Charging" |
1233 | ++msgstr "" |
1234 | ++ |
1235 | + #. 0 is reported when UPower does not have enough data |
1236 | + #. to estimate battery life |
1237 | + #: js/ui/status/power.js:84 js/ui/status/power.js:90 |
1238 | +diff --git a/po/de.po b/po/de.po |
1239 | +index bb83a6e..5565f9e 100644 |
1240 | +--- a/po/de.po |
1241 | ++++ b/po/de.po |
1242 | +@@ -1935,6 +1935,10 @@ msgstr "Energieeinstellungen" |
1243 | + msgid "Fully Charged" |
1244 | + msgstr "Vollständig geladen" |
1245 | + |
1246 | ++#: js/ui/status/power.js:74 |
1247 | ++msgid "Not Charging" |
1248 | ++msgstr "Lädt nicht" |
1249 | ++ |
1250 | + #. 0 is reported when UPower does not have enough data |
1251 | + #. to estimate battery life |
1252 | + #: js/ui/status/power.js:84 js/ui/status/power.js:90 |
1253 | +diff --git a/po/el.po b/po/el.po |
1254 | +index c822608..2061c24 100644 |
1255 | +--- a/po/el.po |
1256 | ++++ b/po/el.po |
1257 | +@@ -1795,6 +1795,10 @@ msgstr "Ρυθμίσεις τροφοδοσίας" |
1258 | + msgid "Fully Charged" |
1259 | + msgstr "Πλήρως φορτισμένη" |
1260 | + |
1261 | ++#: js/ui/status/power.js:74 |
1262 | ++msgid "Not Charging" |
1263 | ++msgstr "Δεν φορτίζεται" |
1264 | ++ |
1265 | + #. 0 is reported when UPower does not have enough data |
1266 | + #. to estimate battery life |
1267 | + #: js/ui/status/power.js:84 js/ui/status/power.js:90 |
1268 | +diff --git a/po/eo.po b/po/eo.po |
1269 | +index 4ee0b5e..1d7278b 100644 |
1270 | +--- a/po/eo.po |
1271 | ++++ b/po/eo.po |
1272 | +@@ -1527,6 +1527,10 @@ msgstr "Energiagordoj" |
1273 | + msgid "Fully Charged" |
1274 | + msgstr "Plene ŝargita" |
1275 | + |
1276 | ++#: js/ui/status/power.js:74 |
1277 | ++msgid "Not Charging" |
1278 | ++msgstr "Ne ŝargante" |
1279 | ++ |
1280 | + #. 0 is reported when UPower does not have enough data |
1281 | + #. to estimate battery life |
1282 | + #: ../js/ui/status/power.js:84 ../js/ui/status/power.js:90 |
1283 | +diff --git a/po/es.po b/po/es.po |
1284 | +index e2c935c..28dd56c 100644 |
1285 | +--- a/po/es.po |
1286 | ++++ b/po/es.po |
1287 | +@@ -1914,6 +1914,10 @@ msgstr "Configuración de energía" |
1288 | + msgid "Fully Charged" |
1289 | + msgstr "Cargada completamente" |
1290 | + |
1291 | ++#: js/ui/status/power.js:74 |
1292 | ++msgid "Not Charging" |
1293 | ++msgstr "No está cargando" |
1294 | ++ |
1295 | + #. 0 is reported when UPower does not have enough data |
1296 | + #. to estimate battery life |
1297 | + #: js/ui/status/power.js:84 js/ui/status/power.js:90 |
1298 | +diff --git a/po/fur.po b/po/fur.po |
1299 | +index f416ed0..6e485a8 100644 |
1300 | +--- a/po/fur.po |
1301 | ++++ b/po/fur.po |
1302 | +@@ -1910,6 +1910,10 @@ msgstr "Impostazions di alimentazion" |
1303 | + msgid "Fully Charged" |
1304 | + msgstr "Cjarie" |
1305 | + |
1306 | ++#: js/ui/status/power.js:74 |
1307 | ++msgid "Not Charging" |
1308 | ++msgstr "Nol sta cjariant" |
1309 | ++ |
1310 | + #. 0 is reported when UPower does not have enough data |
1311 | + #. to estimate battery life |
1312 | + #: js/ui/status/power.js:84 js/ui/status/power.js:90 |
1313 | +diff --git a/po/it.po b/po/it.po |
1314 | +index ab18794..bcc2438 100644 |
1315 | +--- a/po/it.po |
1316 | ++++ b/po/it.po |
1317 | +@@ -1931,6 +1931,10 @@ msgstr "Impostazioni alimentazione" |
1318 | + msgid "Fully Charged" |
1319 | + msgstr "Carica" |
1320 | + |
1321 | ++#: js/ui/status/power.js:74 |
1322 | ++msgid "Not Charging" |
1323 | ++msgstr "Non in carica" |
1324 | ++ |
1325 | + #. 0 is reported when UPower does not have enough data |
1326 | + #. to estimate battery life |
1327 | + #: js/ui/status/power.js:84 js/ui/status/power.js:90 |
1328 | +diff --git a/po/ja.po b/po/ja.po |
1329 | +index 0264e97..e6ef9a6 100644 |
1330 | +--- a/po/ja.po |
1331 | ++++ b/po/ja.po |
1332 | +@@ -1800,6 +1800,10 @@ msgstr "電源設定" |
1333 | + msgid "Fully Charged" |
1334 | + msgstr "充電完了" |
1335 | + |
1336 | ++#: js/ui/status/power.js:74 |
1337 | ++msgid "Not Charging" |
1338 | ++msgstr "放電中" |
1339 | ++ |
1340 | + #. 0 is reported when UPower does not have enough data |
1341 | + #. to estimate battery life |
1342 | + #: js/ui/status/power.js:84 js/ui/status/power.js:90 |
1343 | +diff --git a/po/sl.po b/po/sl.po |
1344 | +index b7e9798..75b7b62 100644 |
1345 | +--- a/po/sl.po |
1346 | ++++ b/po/sl.po |
1347 | +@@ -1937,6 +1937,10 @@ msgstr "Upravljanje napajanja" |
1348 | + msgid "Fully Charged" |
1349 | + msgstr "Polno napolnjeno" |
1350 | + |
1351 | ++#: js/ui/status/power.js:74 |
1352 | ++msgid "Not Charging" |
1353 | ++msgstr "Naprava se ne polni" |
1354 | ++ |
1355 | + #. 0 is reported when UPower does not have enough data |
1356 | + #. to estimate battery life |
1357 | + #: js/ui/status/power.js:84 js/ui/status/power.js:90 |
1358 | +diff --git a/po/sv.po b/po/sv.po |
1359 | +index 5345657..edd66ff 100644 |
1360 | +--- a/po/sv.po |
1361 | ++++ b/po/sv.po |
1362 | +@@ -1899,6 +1899,10 @@ msgstr "Ströminställningar" |
1363 | + msgid "Fully Charged" |
1364 | + msgstr "Fulladdad" |
1365 | + |
1366 | ++#: js/ui/status/power.js:74 |
1367 | ++msgid "Not Charging" |
1368 | ++msgstr "Laddar inte" |
1369 | ++ |
1370 | + #. 0 is reported when UPower does not have enough data |
1371 | + #. to estimate battery life |
1372 | + #: js/ui/status/power.js:84 js/ui/status/power.js:90 |
1373 | +diff --git a/po/tr.po b/po/tr.po |
1374 | +index 0304eb8..409362e 100644 |
1375 | +--- a/po/tr.po |
1376 | ++++ b/po/tr.po |
1377 | +@@ -1889,6 +1889,10 @@ msgstr "Güç Ayarları" |
1378 | + msgid "Fully Charged" |
1379 | + msgstr "Tümüyle Dolu" |
1380 | + |
1381 | ++#: js/ui/status/power.js:74 |
1382 | ++msgid "Not Charging" |
1383 | ++msgstr "Şarj Olmuyor" |
1384 | ++ |
1385 | + #. 0 is reported when UPower does not have enough data |
1386 | + #. to estimate battery life |
1387 | + #: js/ui/status/power.js:84 js/ui/status/power.js:90 |
1388 | diff --git a/debian/patches/series b/debian/patches/series |
1389 | index aaf1b09..deee978 100644 |
1390 | --- a/debian/patches/series |
1391 | +++ b/debian/patches/series |
1392 | @@ -1,4 +1,7 @@ |
1393 | +<<<<<<< debian/patches/series |
1394 | #30-remoteMenu-Prevent-the-shell-from-becoming-unrespons.patch |
1395 | +======= |
1396 | +>>>>>>> debian/patches/series |
1397 | 41-handle-logind-fail.patch |
1398 | 50_add_ubuntu_desktop_detect.patch |
1399 | 70_allow_sound_above_100.patch |
1400 | @@ -11,6 +14,7 @@ ubuntu_gdm.patch |
1401 | ubuntu_background_login.patch |
1402 | ubuntu_gdm_alternatives.patch |
1403 | ubuntu_block_mode_extension_update.patch |
1404 | +<<<<<<< debian/patches/series |
1405 | # Cherry picks from upstream |
1406 | ui-Theme-lookup-should-respect-XDG_DATA_DIRS.patch |
1407 | workspaceThumbnail-only-update-_porthole-if-the-overview-.patch |
1408 | @@ -28,3 +32,24 @@ workspace-fix-repositioned-windows-in-activities.patch |
1409 | st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1410 | st-texture-cache-Don-t-add-NULL-textures-to-cache.patch |
1411 | js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
1412 | +======= |
1413 | +volume-Add-back-sound-feedback-on-scroll.patch |
1414 | +workaround_crasher_fractional_scaling.patch |
1415 | +StIcon-only-compute-shadow-pipeline-when-the-texture-is-p.patch |
1416 | +js-fix-invalid-access-errors.patch |
1417 | +st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1418 | +js-ui-Choose-some-actors-to-cache-on-the-GPU.patch |
1419 | +st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch |
1420 | +st-scroll-view-Remove-scrollbars-references-on-dispose.patch |
1421 | +keyboard-Filter-redundant-FocusTracker-position-changed-s.patch |
1422 | +keyboard-Listen-to-IbusPanelService-focus-in-out-to-track.patch |
1423 | +power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch |
1424 | +CVE-2019-3820-1.patch |
1425 | +CVE-2019-3820-2.patch |
1426 | +switchMonitor-switch-to-next-config-upon-initial-keypress.patch |
1427 | +dnd-Only-handle-touch-events-in-wayland.patch |
1428 | +st-widget-Add-missing-g_return_val_if_fail.patch |
1429 | +windowManager-listen-actively-to-windows-being-destroyed-.patch |
1430 | +dialog-Really-set-ellipsize-mode-in-subtitle-and-body.patch |
1431 | +st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch |
1432 | +>>>>>>> debian/patches/series |
1433 | diff --git a/debian/patches/st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch b/debian/patches/st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch |
1434 | new file mode 100644 |
1435 | index 0000000..65a15de |
1436 | --- /dev/null |
1437 | +++ b/debian/patches/st-adjustment-Mark-all-properties-as-EXPLICIT_NOTIFY.patch |
1438 | @@ -0,0 +1,85 @@ |
1439 | +From: Carlos Garnacho <carlosg@gnome.org> |
1440 | +Date: Thu, 28 Jun 2018 20:22:40 +0200 |
1441 | +Subject: st-adjustment: Mark all properties as EXPLICIT_NOTIFY |
1442 | + |
1443 | +All adjustment setter functions take good care of avoiding emission of |
1444 | +notify:: when it's not needed. The set_property() implementation already |
1445 | +calls into the setter functions, so mark the properties as EXPLICITY_NOTIFY |
1446 | +in order to optimize notify:: emission away through g_object_set (rather |
1447 | +common from JS code). |
1448 | + |
1449 | +(cherry picked from commit b1b455ff1a0e856149142747e77fb1c98df34c03) |
1450 | + |
1451 | +Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1270 |
1452 | + |
1453 | +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/8702d66 |
1454 | +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1827284 |
1455 | +Applied-Upstream: 3.28.4 |
1456 | +--- |
1457 | + src/st/st-adjustment.c | 18 ++++++++++++------ |
1458 | + 1 file changed, 12 insertions(+), 6 deletions(-) |
1459 | + |
1460 | +diff --git a/src/st/st-adjustment.c b/src/st/st-adjustment.c |
1461 | +index 005c6eb..598df4e 100644 |
1462 | +--- a/src/st/st-adjustment.c |
1463 | ++++ b/src/st/st-adjustment.c |
1464 | +@@ -205,7 +205,8 @@ st_adjustment_class_init (StAdjustmentClass *klass) |
1465 | + G_MAXDOUBLE, |
1466 | + 0.0, |
1467 | + ST_PARAM_READWRITE | |
1468 | +- G_PARAM_CONSTRUCT)); |
1469 | ++ G_PARAM_CONSTRUCT | |
1470 | ++ G_PARAM_EXPLICIT_NOTIFY)); |
1471 | + g_object_class_install_property (object_class, |
1472 | + PROP_UPPER, |
1473 | + g_param_spec_double ("upper", |
1474 | +@@ -215,7 +216,8 @@ st_adjustment_class_init (StAdjustmentClass *klass) |
1475 | + G_MAXDOUBLE, |
1476 | + 0.0, |
1477 | + ST_PARAM_READWRITE | |
1478 | +- G_PARAM_CONSTRUCT)); |
1479 | ++ G_PARAM_CONSTRUCT | |
1480 | ++ G_PARAM_EXPLICIT_NOTIFY)); |
1481 | + g_object_class_install_property (object_class, |
1482 | + PROP_VALUE, |
1483 | + g_param_spec_double ("value", |
1484 | +@@ -225,7 +227,8 @@ st_adjustment_class_init (StAdjustmentClass *klass) |
1485 | + G_MAXDOUBLE, |
1486 | + 0.0, |
1487 | + ST_PARAM_READWRITE | |
1488 | +- G_PARAM_CONSTRUCT)); |
1489 | ++ G_PARAM_CONSTRUCT | |
1490 | ++ G_PARAM_EXPLICIT_NOTIFY)); |
1491 | + g_object_class_install_property (object_class, |
1492 | + PROP_STEP_INC, |
1493 | + g_param_spec_double ("step-increment", |
1494 | +@@ -235,7 +238,8 @@ st_adjustment_class_init (StAdjustmentClass *klass) |
1495 | + G_MAXDOUBLE, |
1496 | + 0.0, |
1497 | + ST_PARAM_READWRITE | |
1498 | +- G_PARAM_CONSTRUCT)); |
1499 | ++ G_PARAM_CONSTRUCT | |
1500 | ++ G_PARAM_EXPLICIT_NOTIFY)); |
1501 | + g_object_class_install_property (object_class, |
1502 | + PROP_PAGE_INC, |
1503 | + g_param_spec_double ("page-increment", |
1504 | +@@ -245,7 +249,8 @@ st_adjustment_class_init (StAdjustmentClass *klass) |
1505 | + G_MAXDOUBLE, |
1506 | + 0.0, |
1507 | + ST_PARAM_READWRITE | |
1508 | +- G_PARAM_CONSTRUCT)); |
1509 | ++ G_PARAM_CONSTRUCT | |
1510 | ++ G_PARAM_EXPLICIT_NOTIFY)); |
1511 | + g_object_class_install_property (object_class, |
1512 | + PROP_PAGE_SIZE, |
1513 | + g_param_spec_double ("page-size", |
1514 | +@@ -255,7 +260,8 @@ st_adjustment_class_init (StAdjustmentClass *klass) |
1515 | + G_MAXDOUBLE, |
1516 | + 0.0, |
1517 | + ST_PARAM_READWRITE | |
1518 | +- G_PARAM_CONSTRUCT)); |
1519 | ++ G_PARAM_CONSTRUCT | |
1520 | ++ G_PARAM_EXPLICIT_NOTIFY)); |
1521 | + /** |
1522 | + * StAdjustment::changed: |
1523 | + * @self: the #StAdjustment |
1524 | diff --git a/debian/patches/st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch b/debian/patches/st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch |
1525 | new file mode 100644 |
1526 | index 0000000..0c5e93d |
1527 | --- /dev/null |
1528 | +++ b/debian/patches/st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch |
1529 | @@ -0,0 +1,38 @@ |
1530 | +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net> |
1531 | +Date: Fri, 3 Aug 2018 18:51:24 +0200 |
1532 | +Subject: st/scroll-view: Handle the case where scrollbars are NULL |
1533 | + |
1534 | +The scrollbars actors in a scroll view can be NULL, in case they get removed |
1535 | +with a call to `clutter_actor_remove_child` on a scroll-view (and this is |
1536 | +implemented in st_scroll_view_remove). |
1537 | + |
1538 | +So, we should support the case where `priv->{h,v}scroll` are NULL, not to crash |
1539 | +in `st_widget_style_changed`. |
1540 | + |
1541 | +Fixes #467 |
1542 | + |
1543 | +Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/467 |
1544 | +BUG-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1725312 |
1545 | +Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/190 |
1546 | +--- |
1547 | + src/st/st-scroll-view.c | 7 +++++-- |
1548 | + 1 file changed, 5 insertions(+), 2 deletions(-) |
1549 | + |
1550 | +diff --git a/src/st/st-scroll-view.c b/src/st/st-scroll-view.c |
1551 | +index fc0db1c..a8b6d2e 100644 |
1552 | +--- a/src/st/st-scroll-view.c |
1553 | ++++ b/src/st/st-scroll-view.c |
1554 | +@@ -741,8 +741,11 @@ st_scroll_view_style_changed (StWidget *widget) |
1555 | + gdouble hfade_offset = st_theme_node_get_length (theme_node, "-st-hfade-offset"); |
1556 | + st_scroll_view_update_fade_effect (self, vfade_offset, hfade_offset); |
1557 | + |
1558 | +- st_widget_style_changed (ST_WIDGET (priv->hscroll)); |
1559 | +- st_widget_style_changed (ST_WIDGET (priv->vscroll)); |
1560 | ++ if (priv->hscroll) |
1561 | ++ st_widget_style_changed (ST_WIDGET (priv->hscroll)); |
1562 | ++ |
1563 | ++ if (priv->vscroll) |
1564 | ++ st_widget_style_changed (ST_WIDGET (priv->vscroll)); |
1565 | + |
1566 | + ST_WIDGET_CLASS (st_scroll_view_parent_class)->style_changed (widget); |
1567 | + } |
1568 | diff --git a/debian/patches/st-scroll-view-Remove-scrollbars-references-on-dispose.patch b/debian/patches/st-scroll-view-Remove-scrollbars-references-on-dispose.patch |
1569 | new file mode 100644 |
1570 | index 0000000..f5f49be |
1571 | --- /dev/null |
1572 | +++ b/debian/patches/st-scroll-view-Remove-scrollbars-references-on-dispose.patch |
1573 | @@ -0,0 +1,33 @@ |
1574 | +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net> |
1575 | +Date: Fri, 3 Aug 2018 19:06:47 +0200 |
1576 | +Subject: st/scroll-view: Remove scrollbars references on dispose |
1577 | + |
1578 | +As we're destroying the scrollbars on destruction, we should remove any |
1579 | +reference of it, not to cause multiple-calls to disposal to unreference them |
1580 | +again. |
1581 | + |
1582 | +Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/467 |
1583 | +BUG-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1725312 |
1584 | +Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/190 |
1585 | +--- |
1586 | + src/st/st-scroll-view.c | 7 ++----- |
1587 | + 1 file changed, 2 insertions(+), 5 deletions(-) |
1588 | + |
1589 | +diff --git a/src/st/st-scroll-view.c b/src/st/st-scroll-view.c |
1590 | +index a8b6d2e..cb38aef 100644 |
1591 | +--- a/src/st/st-scroll-view.c |
1592 | ++++ b/src/st/st-scroll-view.c |
1593 | +@@ -244,11 +244,8 @@ st_scroll_view_dispose (GObject *object) |
1594 | + priv->fade_effect = NULL; |
1595 | + } |
1596 | + |
1597 | +- if (priv->vscroll) |
1598 | +- clutter_actor_destroy (priv->vscroll); |
1599 | +- |
1600 | +- if (priv->hscroll) |
1601 | +- clutter_actor_destroy (priv->hscroll); |
1602 | ++ g_clear_pointer (&priv->vscroll, clutter_actor_destroy); |
1603 | ++ g_clear_pointer (&priv->hscroll, clutter_actor_destroy); |
1604 | + |
1605 | + /* For most reliable freeing of memory, an object with signals |
1606 | + * like StAdjustment should be explicitly disposed. Since we own |
1607 | diff --git a/debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch b/debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1608 | index 0ff18f9..4c361e7 100644 |
1609 | --- a/debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1610 | +++ b/debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1611 | @@ -1,5 +1,9 @@ |
1612 | From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net> |
1613 | +<<<<<<< debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1614 | Date: Wed, 29 Nov 2017 19:48:02 -0600 |
1615 | +======= |
1616 | +Date: Thu, 30 Nov 2017 02:48:02 +0100 |
1617 | +>>>>>>> debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1618 | Subject: st-texture-cache: Cancel sliced image loading on target actor |
1619 | destroy |
1620 | |
1621 | @@ -19,10 +23,17 @@ Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/5 |
1622 | 1 file changed, 26 insertions(+), 4 deletions(-) |
1623 | |
1624 | diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c |
1625 | +<<<<<<< debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1626 | index e8a832d..13b019e 100644 |
1627 | --- a/src/st/st-texture-cache.c |
1628 | +++ b/src/st/st-texture-cache.c |
1629 | @@ -1019,6 +1019,7 @@ typedef struct { |
1630 | +======= |
1631 | +index 6219071..fc81189 100644 |
1632 | +--- a/src/st/st-texture-cache.c |
1633 | ++++ b/src/st/st-texture-cache.c |
1634 | +@@ -1027,6 +1027,7 @@ typedef struct { |
1635 | +>>>>>>> debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1636 | gint grid_width, grid_height; |
1637 | gint scale_factor; |
1638 | ClutterActor *actor; |
1639 | @@ -30,7 +41,11 @@ index e8a832d..13b019e 100644 |
1640 | GFunc load_callback; |
1641 | gpointer load_callback_data; |
1642 | } AsyncImageData; |
1643 | +<<<<<<< debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1644 | @@ -1029,10 +1030,21 @@ on_data_destroy (gpointer data) |
1645 | +======= |
1646 | +@@ -1037,9 +1038,20 @@ on_data_destroy (gpointer data) |
1647 | +>>>>>>> debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1648 | AsyncImageData *d = (AsyncImageData *)data; |
1649 | g_object_unref (d->gfile); |
1650 | g_object_unref (d->actor); |
1651 | @@ -38,7 +53,11 @@ index e8a832d..13b019e 100644 |
1652 | g_free (d); |
1653 | } |
1654 | |
1655 | +<<<<<<< debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1656 | static void |
1657 | +======= |
1658 | ++static void |
1659 | +>>>>>>> debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1660 | +on_sliced_image_actor_destroyed (ClutterActor *actor, |
1661 | + gpointer data) |
1662 | +{ |
1663 | @@ -48,11 +67,18 @@ index e8a832d..13b019e 100644 |
1664 | + g_cancellable_cancel (cancellable); |
1665 | +} |
1666 | + |
1667 | +<<<<<<< debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1668 | +static void |
1669 | on_sliced_image_loaded (GObject *source_object, |
1670 | GAsyncResult *res, |
1671 | gpointer user_data) |
1672 | @@ -1042,7 +1054,7 @@ on_sliced_image_loaded (GObject *source_object, |
1673 | +======= |
1674 | + static void |
1675 | + on_sliced_image_loaded (GObject *source_object, |
1676 | + GAsyncResult *res, |
1677 | +@@ -1050,7 +1062,7 @@ on_sliced_image_loaded (GObject *source_object, |
1678 | +>>>>>>> debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1679 | GTask *task = G_TASK (res); |
1680 | GList *list, *pixbufs; |
1681 | |
1682 | @@ -61,7 +87,11 @@ index e8a832d..13b019e 100644 |
1683 | return; |
1684 | |
1685 | pixbufs = g_task_propagate_pointer (task, NULL); |
1686 | +<<<<<<< debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1687 | @@ -1056,6 +1068,10 @@ on_sliced_image_loaded (GObject *source_object, |
1688 | +======= |
1689 | +@@ -1064,6 +1076,10 @@ on_sliced_image_loaded (GObject *source_object, |
1690 | +>>>>>>> debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1691 | |
1692 | g_list_free_full (pixbufs, g_object_unref); |
1693 | |
1694 | @@ -72,7 +102,11 @@ index e8a832d..13b019e 100644 |
1695 | if (data->load_callback != NULL) |
1696 | data->load_callback (cache, data->load_callback_data); |
1697 | } |
1698 | +<<<<<<< debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1699 | @@ -1093,7 +1109,7 @@ load_sliced_image (GTask *result, |
1700 | +======= |
1701 | +@@ -1101,7 +1117,7 @@ load_sliced_image (GTask *result, |
1702 | +>>>>>>> debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1703 | gchar *buffer = NULL; |
1704 | gsize length; |
1705 | |
1706 | @@ -81,7 +115,11 @@ index e8a832d..13b019e 100644 |
1707 | |
1708 | data = task_data; |
1709 | g_assert (data); |
1710 | +<<<<<<< debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1711 | @@ -1101,7 +1117,7 @@ load_sliced_image (GTask *result, |
1712 | +======= |
1713 | +@@ -1109,7 +1125,7 @@ load_sliced_image (GTask *result, |
1714 | +>>>>>>> debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1715 | loader = gdk_pixbuf_loader_new (); |
1716 | g_signal_connect (loader, "size-prepared", G_CALLBACK (on_loader_size_prepared), data); |
1717 | |
1718 | @@ -90,7 +128,11 @@ index e8a832d..13b019e 100644 |
1719 | { |
1720 | g_warning ("Failed to open sliced image: %s", error->message); |
1721 | goto out; |
1722 | +<<<<<<< debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1723 | @@ -1169,6 +1185,7 @@ st_texture_cache_load_sliced_image (StTextureCache *cache, |
1724 | +======= |
1725 | +@@ -1177,6 +1193,7 @@ st_texture_cache_load_sliced_image (StTextureCache *cache, |
1726 | +>>>>>>> debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1727 | AsyncImageData *data; |
1728 | GTask *result; |
1729 | ClutterActor *actor = clutter_actor_new (); |
1730 | @@ -98,7 +140,11 @@ index e8a832d..13b019e 100644 |
1731 | |
1732 | data = g_new0 (AsyncImageData, 1); |
1733 | data->grid_width = grid_width; |
1734 | +<<<<<<< debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1735 | @@ -1176,11 +1193,16 @@ st_texture_cache_load_sliced_image (StTextureCache *cache, |
1736 | +======= |
1737 | +@@ -1184,11 +1201,16 @@ st_texture_cache_load_sliced_image (StTextureCache *cache, |
1738 | +>>>>>>> debian/patches/st-texture-cache-Cancel-sliced-image-loading-on-target-ac.patch |
1739 | data->scale_factor = scale; |
1740 | data->gfile = g_object_ref (file); |
1741 | data->actor = actor; |
1742 | diff --git a/debian/patches/st-widget-Add-missing-g_return_val_if_fail.patch b/debian/patches/st-widget-Add-missing-g_return_val_if_fail.patch |
1743 | new file mode 100644 |
1744 | index 0000000..4af9547 |
1745 | --- /dev/null |
1746 | +++ b/debian/patches/st-widget-Add-missing-g_return_val_if_fail.patch |
1747 | @@ -0,0 +1,32 @@ |
1748 | +From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org> |
1749 | +Date: Tue, 5 Mar 2019 19:42:01 +0100 |
1750 | +Subject: st-widget: Add missing g_return_val_if_fail() |
1751 | + |
1752 | +It's a public function, so it's good practice to sanity-check its |
1753 | +input (unless disabled at compile time of course). |
1754 | + |
1755 | +https://gitlab.gnome.org/GNOME/gnome-shell/issues/1018 |
1756 | + |
1757 | +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/438 |
1758 | +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1796606 |
1759 | +--- |
1760 | + src/st/st-widget.c | 6 +++++- |
1761 | + 1 file changed, 5 insertions(+), 1 deletion(-) |
1762 | + |
1763 | +diff --git a/src/st/st-widget.c b/src/st/st-widget.c |
1764 | +index 7c39b35..09a06e7 100644 |
1765 | +--- a/src/st/st-widget.c |
1766 | ++++ b/src/st/st-widget.c |
1767 | +@@ -571,7 +571,11 @@ get_root_theme_node (ClutterStage *stage) |
1768 | + StThemeNode * |
1769 | + st_widget_get_theme_node (StWidget *widget) |
1770 | + { |
1771 | +- StWidgetPrivate *priv = st_widget_get_instance_private (widget); |
1772 | ++ StWidgetPrivate *priv; |
1773 | ++ |
1774 | ++ g_return_val_if_fail (ST_IS_WIDGET (widget), NULL); |
1775 | ++ |
1776 | ++ priv = st_widget_get_instance_private (widget); |
1777 | + |
1778 | + if (priv->theme_node == NULL) |
1779 | + { |
1780 | diff --git a/debian/patches/switchMonitor-switch-to-next-config-upon-initial-keypress.patch b/debian/patches/switchMonitor-switch-to-next-config-upon-initial-keypress.patch |
1781 | new file mode 100644 |
1782 | index 0000000..4f9a217 |
1783 | --- /dev/null |
1784 | +++ b/debian/patches/switchMonitor-switch-to-next-config-upon-initial-keypress.patch |
1785 | @@ -0,0 +1,58 @@ |
1786 | +From: Daniel Drake <drake@endlessm.com> |
1787 | +Date: Mon, 30 Jul 2018 21:17:44 -0300 |
1788 | +Subject: switchMonitor: switch to next config upon initial keypress |
1789 | + |
1790 | +In GNOME-3.24, pressing Super+P or a similar function key would cause |
1791 | +a switch to the next available monitor configuration. |
1792 | + |
1793 | +However, in GNOME-3.26, this was reimplemented in mutter and gnome-shell |
1794 | +and the behaviour is now different: pressing Super+P and releasing will |
1795 | +cause no change in montor configuration[1]. In this new design you have |
1796 | +to press Super+P and keep holding Super in order to keep the switcher |
1797 | +open, then press P again (or use the arrow keys or mouse) to |
1798 | +select the next one in the list. |
1799 | + |
1800 | +This is incompatible with many Asus products such as Asus X530UN, where |
1801 | +pressing the presentation mode media key (Fn+F8) actually generates |
1802 | +the following keypress events from the keyboard controller: |
1803 | + |
1804 | +Fn pressed: nothing |
1805 | +F8 pressed: nothing |
1806 | +F8 released: Super press, p press, p release, Super release (quick burst) |
1807 | +Fn released: nothing |
1808 | + |
1809 | +With this firmware behaviour it's not possible to hold the keys and have |
1810 | +the dialog come up so that you can select another new mode. |
1811 | + |
1812 | +To solve this, when the switcher is opened, select the next available |
1813 | +display config by default, which is more similar to the pre-GNOME-3.26 |
1814 | +behaviour. Now pressing Fn+F8 on this laptop will result in the display |
1815 | +mode switch taking place. |
1816 | + |
1817 | +[1]: The mentioned desired behaviour will at least happen after |
1818 | +https://gitlab.gnome.org/GNOME/mutter/issues/281 has been fixed |
1819 | + |
1820 | +https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/208 |
1821 | + |
1822 | +Ubuntu-Bug: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1772811 |
1823 | +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/208 |
1824 | +Applied-Upstream: yes, 3.30.1 |
1825 | +--- |
1826 | + js/ui/switchMonitor.js | 4 ++-- |
1827 | + 1 file changed, 2 insertions(+), 2 deletions(-) |
1828 | + |
1829 | +diff --git a/js/ui/switchMonitor.js b/js/ui/switchMonitor.js |
1830 | +index 96fb854..31b4f33 100644 |
1831 | +--- a/js/ui/switchMonitor.js |
1832 | ++++ b/js/ui/switchMonitor.js |
1833 | +@@ -49,8 +49,8 @@ var SwitchMonitorPopup = new Lang.Class({ |
1834 | + |
1835 | + _initialSelection() { |
1836 | + let currentConfig = Meta.MonitorManager.get().get_switch_config(); |
1837 | +- currentConfig %= Meta.MonitorSwitchConfigType.UNKNOWN; |
1838 | +- this._select(currentConfig); |
1839 | ++ let selectConfig = (currentConfig + 1) % Meta.MonitorSwitchConfigType.UNKNOWN; |
1840 | ++ this._select(selectConfig); |
1841 | + }, |
1842 | + |
1843 | + _keyPressHandler(keysym, action) { |
1844 | diff --git a/debian/patches/ubuntu-lightdm-user-switching.patch b/debian/patches/ubuntu-lightdm-user-switching.patch |
1845 | index b8a7d09..9186134 100644 |
1846 | --- a/debian/patches/ubuntu-lightdm-user-switching.patch |
1847 | +++ b/debian/patches/ubuntu-lightdm-user-switching.patch |
1848 | @@ -1,4 +1,7 @@ |
1849 | +<<<<<<< debian/patches/ubuntu-lightdm-user-switching.patch |
1850 | From b043396a553e047178fd2bc5e3b69870963580fc Mon Sep 17 00:00:00 2001 |
1851 | +======= |
1852 | +>>>>>>> debian/patches/ubuntu-lightdm-user-switching.patch |
1853 | From: Tim Lunn <tim@feathertop.org> |
1854 | Date: Tue, 9 Oct 2012 20:18:28 +1100 |
1855 | Subject: [PATCH] userMenu: allow user switching when using lightdm |
1856 | @@ -9,6 +12,7 @@ switch to the lightdm greeter. |
1857 | |
1858 | https://bugzilla.gnome.org/show_bug.cgi?id=685794 |
1859 | --- |
1860 | +<<<<<<< debian/patches/ubuntu-lightdm-user-switching.patch |
1861 | js/misc/systemActions.js | 38 ++++++++++++++++++++++++++++++-------- |
1862 | 1 file changed, 30 insertions(+), 8 deletions(-) |
1863 | |
1864 | @@ -16,6 +20,15 @@ Index: gnome-shell-3.27.91/js/misc/systemActions.js |
1865 | =================================================================== |
1866 | --- gnome-shell-3.27.91.orig/js/misc/systemActions.js |
1867 | +++ gnome-shell-3.27.91/js/misc/systemActions.js |
1868 | +======= |
1869 | + js/misc/systemActions.js | 34 +++++++++++++++++++++++++++------- |
1870 | + 1 file changed, 27 insertions(+), 7 deletions(-) |
1871 | + |
1872 | +diff --git a/js/misc/systemActions.js b/js/misc/systemActions.js |
1873 | +index bf8b460..fffa567 100644 |
1874 | +--- a/js/misc/systemActions.js |
1875 | ++++ b/js/misc/systemActions.js |
1876 | +>>>>>>> debian/patches/ubuntu-lightdm-user-switching.patch |
1877 | @@ -218,6 +218,21 @@ const SystemActions = new Lang.Class({ |
1878 | return this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName; |
1879 | }, |
1880 | diff --git a/debian/patches/ubuntu_background_login.patch b/debian/patches/ubuntu_background_login.patch |
1881 | index e35797e..285c101 100644 |
1882 | --- a/debian/patches/ubuntu_background_login.patch |
1883 | +++ b/debian/patches/ubuntu_background_login.patch |
1884 | @@ -1,3 +1,4 @@ |
1885 | +<<<<<<< debian/patches/ubuntu_background_login.patch |
1886 | Description: Change default background color based on session. |
1887 | We changed default GDM color for our ubuntu session. Change it as well here, |
1888 | still applying the background noise loading. |
1889 | @@ -8,6 +9,25 @@ Index: gnome-shell-3.25.91/js/ui/background.js |
1890 | =================================================================== |
1891 | --- gnome-shell-3.25.91.orig/js/ui/background.js |
1892 | +++ gnome-shell-3.25.91/js/ui/background.js |
1893 | +======= |
1894 | +From: Didier Roche <didrocks@ubuntu.com> |
1895 | +Date: Wed, 20 Jun 2018 19:22:06 +0200 |
1896 | +Subject: Change default background color based on session. |
1897 | + |
1898 | +We changed default GDM color for our ubuntu session. Change it as well here, |
1899 | +still applying the background noise loading. |
1900 | +This screen is appearing for a slip second when the Shell is loading. |
1901 | +Forwarded: not-needed |
1902 | +=================================================================== |
1903 | +--- |
1904 | + js/ui/background.js | 3 ++- |
1905 | + 1 file changed, 2 insertions(+), 1 deletion(-) |
1906 | + |
1907 | +diff --git a/js/ui/background.js b/js/ui/background.js |
1908 | +index b24f825..9b0a4c1 100644 |
1909 | +--- a/js/ui/background.js |
1910 | ++++ b/js/ui/background.js |
1911 | +>>>>>>> debian/patches/ubuntu_background_login.patch |
1912 | @@ -102,12 +102,13 @@ const Lang = imports.lang; |
1913 | const Meta = imports.gi.Meta; |
1914 | const Signals = imports.signals; |
1915 | diff --git a/debian/patches/ubuntu_block_mode_extension_update.patch b/debian/patches/ubuntu_block_mode_extension_update.patch |
1916 | index e42705c..3abc62a 100644 |
1917 | --- a/debian/patches/ubuntu_block_mode_extension_update.patch |
1918 | +++ b/debian/patches/ubuntu_block_mode_extension_update.patch |
1919 | @@ -1,4 +1,11 @@ |
1920 | +<<<<<<< debian/patches/ubuntu_block_mode_extension_update.patch |
1921 | Description: Don't allow ubuntu mode extension to update |
1922 | +======= |
1923 | +From: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> |
1924 | +Date: Wed, 20 Jun 2018 19:22:06 +0200 |
1925 | +Subject: Don't allow ubuntu mode extension to update |
1926 | + |
1927 | +>>>>>>> debian/patches/ubuntu_block_mode_extension_update.patch |
1928 | Ensure that no update is proposed or loaded if sideloaded (always |
1929 | prefer system version) on the ubuntu session. |
1930 | We want to ensure that the default code running is going through |
1931 | @@ -13,11 +20,24 @@ The patch set is too large otherwise to keep it maintainable as a distro |
1932 | patch. |
1933 | Origin: ubuntu |
1934 | Forwarded: https://bugzilla.gnome.org/show_bug.cgi?id=789852 |
1935 | +<<<<<<< debian/patches/ubuntu_block_mode_extension_update.patch |
1936 | |
1937 | Index: gnome-shell-3.27.91/js/misc/desktop.js |
1938 | =================================================================== |
1939 | --- gnome-shell-3.27.91.orig/js/misc/desktop.js |
1940 | +++ gnome-shell-3.27.91/js/misc/desktop.js |
1941 | +======= |
1942 | +--- |
1943 | + js/misc/desktop.js | 13 +++++++++++++ |
1944 | + js/misc/extensionUtils.js | 7 +++++++ |
1945 | + js/ui/extensionDownloader.js | 13 +++++++++++++ |
1946 | + 3 files changed, 33 insertions(+) |
1947 | + |
1948 | +diff --git a/js/misc/desktop.js b/js/misc/desktop.js |
1949 | +index 3b0d128..82da582 100644 |
1950 | +--- a/js/misc/desktop.js |
1951 | ++++ b/js/misc/desktop.js |
1952 | +>>>>>>> debian/patches/ubuntu_block_mode_extension_update.patch |
1953 | @@ -6,6 +6,8 @@ const GLib = imports.gi.GLib; |
1954 | // the env variable. It's safe to cache matching result |
1955 | let _currentDesktopsMatches = {}; |
1956 | @@ -42,10 +62,17 @@ Index: gnome-shell-3.27.91/js/misc/desktop.js |
1957 | + |
1958 | + return ubuntuModeExtensions.indexOf(uuid) !== -1; |
1959 | +} |
1960 | +<<<<<<< debian/patches/ubuntu_block_mode_extension_update.patch |
1961 | Index: gnome-shell-3.27.91/js/misc/extensionUtils.js |
1962 | =================================================================== |
1963 | --- gnome-shell-3.27.91.orig/js/misc/extensionUtils.js |
1964 | +++ gnome-shell-3.27.91/js/misc/extensionUtils.js |
1965 | +======= |
1966 | +diff --git a/js/misc/extensionUtils.js b/js/misc/extensionUtils.js |
1967 | +index 9f77b4c..685b98b 100644 |
1968 | +--- a/js/misc/extensionUtils.js |
1969 | ++++ b/js/misc/extensionUtils.js |
1970 | +>>>>>>> debian/patches/ubuntu_block_mode_extension_update.patch |
1971 | @@ -9,6 +9,7 @@ const Signals = imports.signals; |
1972 | const Gio = imports.gi.Gio; |
1973 | |
1974 | @@ -67,10 +94,17 @@ Index: gnome-shell-3.27.91/js/misc/extensionUtils.js |
1975 | try { |
1976 | extension = createExtensionObject(uuid, extensionDir, type); |
1977 | } catch(e) { |
1978 | +<<<<<<< debian/patches/ubuntu_block_mode_extension_update.patch |
1979 | Index: gnome-shell-3.27.91/js/ui/extensionDownloader.js |
1980 | =================================================================== |
1981 | --- gnome-shell-3.27.91.orig/js/ui/extensionDownloader.js |
1982 | +++ gnome-shell-3.27.91/js/ui/extensionDownloader.js |
1983 | +======= |
1984 | +diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js |
1985 | +index 9b6f7a3..034f964 100644 |
1986 | +--- a/js/ui/extensionDownloader.js |
1987 | ++++ b/js/ui/extensionDownloader.js |
1988 | +>>>>>>> debian/patches/ubuntu_block_mode_extension_update.patch |
1989 | @@ -10,9 +10,11 @@ const St = imports.gi.St; |
1990 | const Shell = imports.gi.Shell; |
1991 | |
1992 | @@ -83,7 +117,11 @@ Index: gnome-shell-3.27.91/js/ui/extensionDownloader.js |
1993 | const ModalDialog = imports.ui.modalDialog; |
1994 | |
1995 | const _signals = ExtensionSystem._signals; |
1996 | +<<<<<<< debian/patches/ubuntu_block_mode_extension_update.patch |
1997 | @@ -28,6 +30,14 @@ function installExtension(uuid, invocati |
1998 | +======= |
1999 | +@@ -28,6 +30,14 @@ function installExtension(uuid, invocation) { |
2000 | +>>>>>>> debian/patches/ubuntu_block_mode_extension_update.patch |
2001 | let params = { uuid: uuid, |
2002 | shell_version: Config.PACKAGE_VERSION }; |
2003 | |
2004 | diff --git a/debian/patches/ubuntu_gdm.patch b/debian/patches/ubuntu_gdm.patch |
2005 | index 77af4a4..22d85a9 100644 |
2006 | --- a/debian/patches/ubuntu_gdm.patch |
2007 | +++ b/debian/patches/ubuntu_gdm.patch |
2008 | @@ -1,3 +1,4 @@ |
2009 | +<<<<<<< debian/patches/ubuntu_gdm.patch |
2010 | Description: Ensure gdm has an ubuntu styling by default. |
2011 | As it's system-wide and not user-wide, use the ubuntu.css stylesheet |
2012 | for the gdm mode of GNOME Shell. This doesn't impact the aNOME |
2013 | @@ -8,6 +9,25 @@ Index: gnome-shell-3.27.91/js/ui/sessionMode.js |
2014 | =================================================================== |
2015 | --- gnome-shell-3.27.91.orig/js/ui/sessionMode.js |
2016 | +++ gnome-shell-3.27.91/js/ui/sessionMode.js |
2017 | +======= |
2018 | +From: Didier Roche <didrocks@ubuntu.com> |
2019 | +Date: Wed, 20 Jun 2018 19:22:06 +0200 |
2020 | +Subject: Ensure gdm has an ubuntu styling by default. |
2021 | + |
2022 | +As it's system-wide and not user-wide, use the ubuntu.css stylesheet |
2023 | +for the gdm mode of GNOME Shell. This doesn't impact the aNOME |
2024 | +user session though. |
2025 | +Forwarded: not-needed |
2026 | +=================================================================== |
2027 | +--- |
2028 | + js/ui/sessionMode.js | 1 + |
2029 | + 1 file changed, 1 insertion(+) |
2030 | + |
2031 | +diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js |
2032 | +index aac29ae..97118dc 100644 |
2033 | +--- a/js/ui/sessionMode.js |
2034 | ++++ b/js/ui/sessionMode.js |
2035 | +>>>>>>> debian/patches/ubuntu_gdm.patch |
2036 | @@ -42,6 +42,7 @@ const _modes = { |
2037 | |
2038 | 'gdm': { |
2039 | diff --git a/debian/patches/ubuntu_gdm_alternatives.patch b/debian/patches/ubuntu_gdm_alternatives.patch |
2040 | index 4a6026f..b7052ca 100644 |
2041 | --- a/debian/patches/ubuntu_gdm_alternatives.patch |
2042 | +++ b/debian/patches/ubuntu_gdm_alternatives.patch |
2043 | @@ -1,15 +1,33 @@ |
2044 | +<<<<<<< debian/patches/ubuntu_gdm_alternatives.patch |
2045 | Description: Add support for GDM3 theme alternatives |
2046 | GNOME vanilla and systemd76 derivative ships their own GDM theme. |
2047 | Author: Jeremy Soller <jeremy@system76.com> |
2048 | +======= |
2049 | +From: Jeremy Soller <jeremy@system76.com> |
2050 | +Date: Wed, 20 Jun 2018 19:22:06 +0200 |
2051 | +Subject: Add support for GDM3 theme alternatives |
2052 | + |
2053 | + GNOME vanilla and systemd76 derivative ships their own GDM theme. |
2054 | +>>>>>>> debian/patches/ubuntu_gdm_alternatives.patch |
2055 | Bug: https://bugzilla.gnome.org/show_bug.cgi?id=787454 |
2056 | Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1715722 |
2057 | Last-Update: 2017-09-08 |
2058 | --- |
2059 | +<<<<<<< debian/patches/ubuntu_gdm_alternatives.patch |
2060 | This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ |
2061 | Index: gnome-shell-3.25.91/js/ui/sessionMode.js |
2062 | =================================================================== |
2063 | --- gnome-shell-3.25.91.orig/js/ui/sessionMode.js |
2064 | +++ gnome-shell-3.25.91/js/ui/sessionMode.js |
2065 | +======= |
2066 | + js/ui/sessionMode.js | 2 +- |
2067 | + 1 file changed, 1 insertion(+), 1 deletion(-) |
2068 | + |
2069 | +diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js |
2070 | +index 97118dc..9ac12d6 100644 |
2071 | +--- a/js/ui/sessionMode.js |
2072 | ++++ b/js/ui/sessionMode.js |
2073 | +>>>>>>> debian/patches/ubuntu_gdm_alternatives.patch |
2074 | @@ -42,7 +42,7 @@ const _modes = { |
2075 | |
2076 | 'gdm': { |
2077 | diff --git a/debian/patches/ubuntu_lock_on_suspend.patch b/debian/patches/ubuntu_lock_on_suspend.patch |
2078 | index 1ce5584..6d51766 100644 |
2079 | --- a/debian/patches/ubuntu_lock_on_suspend.patch |
2080 | +++ b/debian/patches/ubuntu_lock_on_suspend.patch |
2081 | @@ -1,3 +1,4 @@ |
2082 | +<<<<<<< debian/patches/ubuntu_lock_on_suspend.patch |
2083 | Description: add support for the ubuntu lock on suspend option |
2084 | Author: Tim Lunn <tim@feathertop.org> |
2085 | Bug-Ubuntu: https://bugs.launchpad.net/bugs/1063110 |
2086 | @@ -11,6 +12,21 @@ Index: gnome-shell-3.27.91/js/ui/screenShield.js |
2087 | =================================================================== |
2088 | --- gnome-shell-3.27.91.orig/js/ui/screenShield.js |
2089 | +++ gnome-shell-3.27.91/js/ui/screenShield.js |
2090 | +======= |
2091 | +From: Tim Lunn <tim@feathertop.org> |
2092 | +Date: Wed, 20 Jun 2018 19:22:06 +0200 |
2093 | +Subject: add support for the ubuntu lock on suspend option |
2094 | + |
2095 | +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1063110 |
2096 | +--- |
2097 | + js/ui/screenShield.js | 7 +++++-- |
2098 | + 1 file changed, 5 insertions(+), 2 deletions(-) |
2099 | + |
2100 | +diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js |
2101 | +index 2d8d9b3..5ceb993 100644 |
2102 | +--- a/js/ui/screenShield.js |
2103 | ++++ b/js/ui/screenShield.js |
2104 | +>>>>>>> debian/patches/ubuntu_lock_on_suspend.patch |
2105 | @@ -32,6 +32,7 @@ const Util = imports.misc.util; |
2106 | const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver'; |
2107 | const LOCK_ENABLED_KEY = 'lock-enabled'; |
2108 | @@ -19,7 +35,29 @@ Index: gnome-shell-3.27.91/js/ui/screenShield.js |
2109 | |
2110 | const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown'; |
2111 | const DISABLE_LOCK_KEY = 'disable-lock-screen'; |
2112 | +<<<<<<< debian/patches/ubuntu_lock_on_suspend.patch |
2113 | @@ -727,7 +728,7 @@ var ScreenShield = new Lang.Class({ |
2114 | +======= |
2115 | +@@ -543,6 +544,7 @@ var ScreenShield = new Lang.Class({ |
2116 | + |
2117 | + this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA }); |
2118 | + this._settings.connect('changed::' + LOCK_ENABLED_KEY, this._syncInhibitor.bind(this)); |
2119 | ++ this._settings.connect('changed::' + SUSPEND_LOCK_ENABLED_KEY, this._syncInhibitor.bind(this)); |
2120 | + |
2121 | + this._lockSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA }); |
2122 | + this._lockSettings.connect('changed::' + DISABLE_LOCK_KEY, this._syncInhibitor.bind(this)); |
2123 | +@@ -707,7 +709,8 @@ var ScreenShield = new Lang.Class({ |
2124 | + }, |
2125 | + |
2126 | + _syncInhibitor() { |
2127 | +- let lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY); |
2128 | ++ let lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY) || |
2129 | ++ this._settings.get_boolean(SUSPEND_LOCK_ENABLED_KEY); |
2130 | + let lockLocked = this._lockSettings.get_boolean(DISABLE_LOCK_KEY); |
2131 | + let inhibit = (this._loginSession && this._loginSession.Active && |
2132 | + !this._isActive && lockEnabled && !lockLocked); |
2133 | +@@ -727,7 +730,7 @@ var ScreenShield = new Lang.Class({ |
2134 | +>>>>>>> debian/patches/ubuntu_lock_on_suspend.patch |
2135 | |
2136 | _prepareForSleep(loginManager, aboutToSuspend) { |
2137 | if (aboutToSuspend) { |
2138 | diff --git a/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch b/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2139 | index f6ea268..633e9f1 100644 |
2140 | --- a/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2141 | +++ b/debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2142 | @@ -1,5 +1,9 @@ |
2143 | From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org> |
2144 | +<<<<<<< debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2145 | Date: Fri, 23 Feb 2018 16:58:22 -0600 |
2146 | +======= |
2147 | +Date: Fri, 23 Feb 2018 23:58:22 +0100 |
2148 | +>>>>>>> debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2149 | Subject: volume: Add back sound feedback on scroll |
2150 | |
2151 | Commit 8d4855f1008 accidentally removed the volume change feedback |
2152 | @@ -34,8 +38,13 @@ Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/53 |
2153 | Forwarded: yes, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/51 |
2154 | --- |
2155 | js/ui/slider.js | 2 -- |
2156 | +<<<<<<< debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2157 | js/ui/status/volume.js | 19 ++++++++++++++++++- |
2158 | 2 files changed, 18 insertions(+), 3 deletions(-) |
2159 | +======= |
2160 | + js/ui/status/volume.js | 20 +++++++++++++++++++- |
2161 | + 2 files changed, 19 insertions(+), 3 deletions(-) |
2162 | +>>>>>>> debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2163 | |
2164 | diff --git a/js/ui/slider.js b/js/ui/slider.js |
2165 | index 9853929..30295b4 100644 |
2166 | @@ -52,18 +61,33 @@ index 9853929..30295b4 100644 |
2167 | } |
2168 | return Clutter.EVENT_PROPAGATE; |
2169 | diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js |
2170 | +<<<<<<< debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2171 | index 65c4c42..c0f9cf3 100644 |
2172 | --- a/js/ui/status/volume.js |
2173 | +++ b/js/ui/status/volume.js |
2174 | @@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter; |
2175 | const Lang = imports.lang; |
2176 | const Gio = imports.gi.Gio; |
2177 | +======= |
2178 | +index 65c4c42..de5f188 100644 |
2179 | +--- a/js/ui/status/volume.js |
2180 | ++++ b/js/ui/status/volume.js |
2181 | +@@ -3,7 +3,9 @@ |
2182 | + const Clutter = imports.gi.Clutter; |
2183 | + const Lang = imports.lang; |
2184 | + const Gio = imports.gi.Gio; |
2185 | ++const GLib = imports.gi.GLib; |
2186 | +>>>>>>> debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2187 | const Gvc = imports.gi.Gvc; |
2188 | +const Mainloop = imports.mainloop; |
2189 | const St = imports.gi.St; |
2190 | const Signals = imports.signals; |
2191 | |
2192 | +<<<<<<< debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2193 | @@ -36,9 +37,16 @@ var StreamSlider = new Lang.Class({ |
2194 | +======= |
2195 | +@@ -36,9 +38,16 @@ var StreamSlider = new Lang.Class({ |
2196 | +>>>>>>> debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2197 | |
2198 | this.item = new PopupMenu.PopupBaseMenuItem({ activate: false }); |
2199 | |
2200 | @@ -81,7 +105,11 @@ index 65c4c42..c0f9cf3 100644 |
2201 | |
2202 | this._icon = new St.Icon({ style_class: 'popup-menu-icon' }); |
2203 | this.item.actor.add(this._icon); |
2204 | +<<<<<<< debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2205 | @@ -135,6 +143,7 @@ var StreamSlider = new Lang.Class({ |
2206 | +======= |
2207 | +@@ -135,6 +144,7 @@ var StreamSlider = new Lang.Class({ |
2208 | +>>>>>>> debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2209 | |
2210 | let volume = value * this._get_control_max_volume(); |
2211 | let prevMuted = this._stream.is_muted; |
2212 | @@ -89,7 +117,11 @@ index 65c4c42..c0f9cf3 100644 |
2213 | if (volume < 1) { |
2214 | this._stream.volume = 0; |
2215 | if (!prevMuted) |
2216 | +<<<<<<< debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2217 | @@ -145,6 +154,14 @@ var StreamSlider = new Lang.Class({ |
2218 | +======= |
2219 | +@@ -145,6 +155,14 @@ var StreamSlider = new Lang.Class({ |
2220 | +>>>>>>> debian/patches/volume-Add-back-sound-feedback-on-scroll.patch |
2221 | this._stream.change_is_muted(false); |
2222 | } |
2223 | this._stream.push_volume(); |
2224 | diff --git a/debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch b/debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch |
2225 | new file mode 100644 |
2226 | index 0000000..76cbcf0 |
2227 | --- /dev/null |
2228 | +++ b/debian/patches/windowManager-listen-actively-to-windows-being-destroyed-.patch |
2229 | @@ -0,0 +1,47 @@ |
2230 | +From: Carlos Garnacho <carlosg@gnome.org> |
2231 | +Date: Thu, 6 Sep 2018 21:50:21 +0200 |
2232 | +Subject: windowManager: listen actively to windows being destroyed during WS |
2233 | + switch |
2234 | + |
2235 | +Prevents gjs from dealing with already dispose()d objects. |
2236 | + |
2237 | +Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/539 |
2238 | + |
2239 | +(cherry-picked from b087752b5539a8cbb1d61979cb069aef8a3475be) |
2240 | + |
2241 | +Origin: https://gitlab.gnome.org/GNOME/gnome-shell/commit/b087752b |
2242 | +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1812527 |
2243 | +--- |
2244 | + js/ui/windowManager.js | 12 ++++++++++-- |
2245 | + 1 file changed, 10 insertions(+), 2 deletions(-) |
2246 | + |
2247 | +diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js |
2248 | +index 8e7e7a6..49d7035 100644 |
2249 | +--- a/js/ui/windowManager.js |
2250 | ++++ b/js/ui/windowManager.js |
2251 | +@@ -1763,6 +1763,14 @@ var WindowManager = new Lang.Class({ |
2252 | + } |
2253 | + } |
2254 | + |
2255 | ++ for (let i = 0; i < switchData.windows.length; i++) { |
2256 | ++ let w = switchData.windows[i]; |
2257 | ++ |
2258 | ++ w.windowDestroyId = w.window.connect('destroy', () => { |
2259 | ++ switchData.windows.splice(switchData.windows.indexOf(w), 1); |
2260 | ++ }); |
2261 | ++ } |
2262 | ++ |
2263 | + switchData.inGroup.set_position(-xDest, -yDest); |
2264 | + switchData.inGroup.raise_top(); |
2265 | + |
2266 | +@@ -1793,8 +1801,8 @@ var WindowManager = new Lang.Class({ |
2267 | + |
2268 | + for (let i = 0; i < switchData.windows.length; i++) { |
2269 | + let w = switchData.windows[i]; |
2270 | +- if (w.window.is_destroyed()) // Window gone |
2271 | +- continue; |
2272 | ++ w.window.disconnect(w.windowDestroyId); |
2273 | ++ |
2274 | + if (w.window.get_parent() == switchData.outGroup) { |
2275 | + w.window.reparent(w.parent); |
2276 | + w.window.hide(); |
2277 | diff --git a/debian/patches/workaround_crasher_fractional_scaling.patch b/debian/patches/workaround_crasher_fractional_scaling.patch |
2278 | index 1421031..68cc306 100644 |
2279 | --- a/debian/patches/workaround_crasher_fractional_scaling.patch |
2280 | +++ b/debian/patches/workaround_crasher_fractional_scaling.patch |
2281 | @@ -1,3 +1,4 @@ |
2282 | +<<<<<<< debian/patches/workaround_crasher_fractional_scaling.patch |
2283 | Description: Avoid crashing if width or height are NaNs. |
2284 | This is a temporary workaround that avoid a crash if width or height are NaNs. |
2285 | The true fix would be to avoid width and height to get NaN values. |
2286 | @@ -8,6 +9,26 @@ Bug: https://bugzilla.gnome.org/show_bug.cgi?id=788316 |
2287 | --- a/src/st/st-theme-node-drawing.c |
2288 | +++ b/src/st/st-theme-node-drawing.c |
2289 | @@ -2505,7 +2505,7 @@ |
2290 | +======= |
2291 | +From: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> |
2292 | +Date: Wed, 20 Jun 2018 19:22:06 +0200 |
2293 | +Subject: Avoid crashing if width or height are NaNs. |
2294 | + |
2295 | +This is a temporary workaround that avoid a crash if width or height are NaNs. |
2296 | +The true fix would be to avoid width and height to get NaN values. |
2297 | +Origin: ubuntu |
2298 | +Bug-Ubuntu: https://launchpad.net/bugs/1714542 |
2299 | +Bug: https://bugzilla.gnome.org/show_bug.cgi?id=788316 |
2300 | +--- |
2301 | + src/st/st-theme-node-drawing.c | 2 +- |
2302 | + 1 file changed, 1 insertion(+), 1 deletion(-) |
2303 | + |
2304 | +diff --git a/src/st/st-theme-node-drawing.c b/src/st/st-theme-node-drawing.c |
2305 | +index 0637d97..7342c6c 100644 |
2306 | +--- a/src/st/st-theme-node-drawing.c |
2307 | ++++ b/src/st/st-theme-node-drawing.c |
2308 | +@@ -2531,7 +2531,7 @@ st_theme_node_paint (StThemeNode *node, |
2309 | +>>>>>>> debian/patches/workaround_crasher_fractional_scaling.patch |
2310 | allocation.x2 = width; |
2311 | allocation.y2 = height; |
2312 | |
2313 | @@ -16,4 +37,7 @@ Bug: https://bugzilla.gnome.org/show_bug.cgi?id=788316 |
2314 | return; |
2315 | |
2316 | /* Check whether we need to recreate the textures of the paint |
2317 | +<<<<<<< debian/patches/workaround_crasher_fractional_scaling.patch |
2318 | |
2319 | +======= |
2320 | +>>>>>>> debian/patches/workaround_crasher_fractional_scaling.patch |
2321 | diff --git a/debian/ubuntu-session-mods/ubuntu.css b/debian/ubuntu-session-mods/ubuntu.css |
2322 | index da34f04..1a17b4f 100644 |
2323 | --- a/debian/ubuntu-session-mods/ubuntu.css |
2324 | +++ b/debian/ubuntu-session-mods/ubuntu.css |
2325 | @@ -519,7 +519,11 @@ StScrollBar { |
2326 | height: 1px; |
2327 | margin: 6px 64px; |
2328 | background-color: transparent; |
2329 | +<<<<<<< debian/ubuntu-session-mods/ubuntu.css |
2330 | border-color: #3a3a34; |
2331 | +======= |
2332 | + border-color: #2c2c28; |
2333 | +>>>>>>> debian/ubuntu-session-mods/ubuntu.css |
2334 | border-bottom-width: 1px; |
2335 | border-bottom-style: solid; } |
2336 | |
2337 | @@ -1911,6 +1915,14 @@ stage { |
2338 | font-family: Ubuntu, Cantarell, Sans-Serif; |
2339 | } |
2340 | |
2341 | +<<<<<<< debian/ubuntu-session-mods/ubuntu.css |
2342 | +======= |
2343 | +/* Set minimum height as per Ubuntu font usage, fixes password entries (LP: #1743058) */ |
2344 | +StEntry { |
2345 | + min-height: 19px; |
2346 | +} |
2347 | + |
2348 | +>>>>>>> debian/ubuntu-session-mods/ubuntu.css |
2349 | /* switch colors */ |
2350 | .toggle-switch-us:checked { |
2351 | background-image: url("ubuntu-toggle-on-us.svg"); |
2352 | diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js |
2353 | index 481cd3a..1bd9b02 100644 |
2354 | --- a/js/gdm/authPrompt.js |
2355 | +++ b/js/gdm/authPrompt.js |
2356 | @@ -242,11 +242,19 @@ var AuthPrompt = new Lang.Class({ |
2357 | this.emit('prompted'); |
2358 | }, |
2359 | |
2360 | +<<<<<<< js/gdm/authPrompt.js |
2361 | _onVerificationFailed() { |
2362 | this._queryingService = null; |
2363 | this.clear(); |
2364 | |
2365 | this.updateSensitivity(true); |
2366 | +======= |
2367 | + _onVerificationFailed(userVerifier, canRetry) { |
2368 | + this._queryingService = null; |
2369 | + this.clear(); |
2370 | + |
2371 | + this.updateSensitivity(canRetry); |
2372 | +>>>>>>> js/gdm/authPrompt.js |
2373 | this.setActorInDefaultButtonWell(null); |
2374 | this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED; |
2375 | }, |
2376 | @@ -439,6 +447,10 @@ var AuthPrompt = new Lang.Class({ |
2377 | this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; |
2378 | this.cancelButton.reactive = true; |
2379 | this.nextButton.label = _("Next"); |
2380 | +<<<<<<< js/gdm/authPrompt.js |
2381 | +======= |
2382 | + this._preemptiveAnswer = null; |
2383 | +>>>>>>> js/gdm/authPrompt.js |
2384 | |
2385 | if (this._userVerifier) |
2386 | this._userVerifier.cancel(); |
2387 | diff --git a/js/gdm/util.js b/js/gdm/util.js |
2388 | index 261e1e4..082b680 100644 |
2389 | --- a/js/gdm/util.js |
2390 | +++ b/js/gdm/util.js |
2391 | @@ -534,12 +534,22 @@ var ShellUserVerifier = new Lang.Class({ |
2392 | _verificationFailed(retry) { |
2393 | // For Not Listed / enterprise logins, immediately reset |
2394 | // the dialog |
2395 | +<<<<<<< js/gdm/util.js |
2396 | // Otherwise, we allow ALLOWED_FAILURES attempts. After that, we |
2397 | // go back to the welcome screen. |
2398 | |
2399 | this._failCounter++; |
2400 | let canRetry = retry && this._userName && |
2401 | this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY); |
2402 | +======= |
2403 | + // Otherwise, when in login mode we allow ALLOWED_FAILURES attempts. |
2404 | + // After that, we go back to the welcome screen. |
2405 | + |
2406 | + this._failCounter++; |
2407 | + let canRetry = retry && this._userName && |
2408 | + (this._reauthOnly || |
2409 | + this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY)); |
2410 | +>>>>>>> js/gdm/util.js |
2411 | |
2412 | if (canRetry) { |
2413 | if (!this.hasPendingMessages) { |
2414 | @@ -562,7 +572,11 @@ var ShellUserVerifier = new Lang.Class({ |
2415 | } |
2416 | } |
2417 | |
2418 | +<<<<<<< js/gdm/util.js |
2419 | this.emit('verification-failed'); |
2420 | +======= |
2421 | + this.emit('verification-failed', canRetry); |
2422 | +>>>>>>> js/gdm/util.js |
2423 | }, |
2424 | |
2425 | _onConversationStopped(client, serviceName) { |
2426 | diff --git a/js/misc/ibusManager.js b/js/misc/ibusManager.js |
2427 | index 782b9ad..f943db2 100644 |
2428 | --- a/js/misc/ibusManager.js |
2429 | +++ b/js/misc/ibusManager.js |
2430 | @@ -115,6 +115,14 @@ var IBusManager = new Lang.Class({ |
2431 | object_path: IBus.PATH_PANEL }); |
2432 | this._candidatePopup.setPanelService(this._panelService); |
2433 | this._panelService.connect('update-property', this._updateProperty.bind(this)); |
2434 | +<<<<<<< js/misc/ibusManager.js |
2435 | +======= |
2436 | + this._panelService.connect('set-cursor-location', (ps, x, y, w, h) => { |
2437 | + let cursorLocation = { x, y, width: w, height: h }; |
2438 | + this.emit('set-cursor-location', cursorLocation); |
2439 | + }); |
2440 | + |
2441 | +>>>>>>> js/misc/ibusManager.js |
2442 | try { |
2443 | // IBus versions older than 1.5.10 have a bug which |
2444 | // causes spurious set-content-type emissions when |
2445 | @@ -200,7 +208,11 @@ var IBusManager = new Lang.Class({ |
2446 | } |
2447 | |
2448 | this._ibus.set_global_engine_async(id, this._MAX_INPUT_SOURCE_ACTIVATION_TIME, |
2449 | +<<<<<<< js/misc/ibusManager.js |
2450 | null, callback); |
2451 | +======= |
2452 | + null, callback || null); |
2453 | +>>>>>>> js/misc/ibusManager.js |
2454 | }, |
2455 | |
2456 | preloadEngines(ids) { |
2457 | diff --git a/js/misc/keyboardManager.js b/js/misc/keyboardManager.js |
2458 | index b8984fe..c0c6560 100644 |
2459 | --- a/js/misc/keyboardManager.js |
2460 | +++ b/js/misc/keyboardManager.js |
2461 | @@ -89,6 +89,11 @@ var KeyboardManager = new Lang.Class({ |
2462 | }, |
2463 | |
2464 | setUserLayouts(ids) { |
2465 | +<<<<<<< js/misc/keyboardManager.js |
2466 | +======= |
2467 | + let currentId = this._current ? this._current.id : null; |
2468 | + let currentGroupIndex = this._current ? this._current.groupIndex : null; |
2469 | +>>>>>>> js/misc/keyboardManager.js |
2470 | this._current = null; |
2471 | this._layoutInfos = {}; |
2472 | |
2473 | @@ -115,6 +120,12 @@ var KeyboardManager = new Lang.Class({ |
2474 | info.group = group; |
2475 | info.groupIndex = groupIndex; |
2476 | |
2477 | +<<<<<<< js/misc/keyboardManager.js |
2478 | +======= |
2479 | + if (currentId == id && currentGroupIndex == groupIndex) |
2480 | + this._current = info; |
2481 | + |
2482 | +>>>>>>> js/misc/keyboardManager.js |
2483 | i += 1; |
2484 | } |
2485 | }, |
2486 | diff --git a/js/misc/objectManager.js b/js/misc/objectManager.js |
2487 | index 1ce4f83..7bffc23 100644 |
2488 | --- a/js/misc/objectManager.js |
2489 | +++ b/js/misc/objectManager.js |
2490 | @@ -236,11 +236,20 @@ var ObjectManager = new Lang.Class({ |
2491 | _onNameVanished() { |
2492 | let objectPaths = Object.keys(this._objects); |
2493 | for (let i = 0; i < objectPaths.length; i++) { |
2494 | +<<<<<<< js/misc/objectManager.js |
2495 | let object = this._objects[objectPaths]; |
2496 | |
2497 | let interfaceNames = Object.keys(object); |
2498 | for (let j = 0; i < interfaceNames.length; i++) { |
2499 | let interfaceName = interfaceNames[i]; |
2500 | +======= |
2501 | + let objectPath = objectPaths[i]; |
2502 | + let object = this._objects[objectPath]; |
2503 | + |
2504 | + let interfaceNames = Object.keys(object); |
2505 | + for (let j = 0; j < interfaceNames.length; j++) { |
2506 | + let interfaceName = interfaceNames[j]; |
2507 | +>>>>>>> js/misc/objectManager.js |
2508 | |
2509 | if (object[interfaceName]) |
2510 | this._removeInterface(objectPath, interfaceName); |
2511 | diff --git a/js/ui/calendar.js b/js/ui/calendar.js |
2512 | index a46017a..486f5f8 100644 |
2513 | --- a/js/ui/calendar.js |
2514 | +++ b/js/ui/calendar.js |
2515 | @@ -802,6 +802,11 @@ var NotificationMessage = new Lang.Class({ |
2516 | }, |
2517 | |
2518 | _onDestroy() { |
2519 | +<<<<<<< js/ui/calendar.js |
2520 | +======= |
2521 | + this.parent(); |
2522 | + |
2523 | +>>>>>>> js/ui/calendar.js |
2524 | if (this._updatedId) |
2525 | this.notification.disconnect(this._updatedId); |
2526 | this._updatedId = 0; |
2527 | @@ -821,6 +826,11 @@ var EventsSection = new Lang.Class({ |
2528 | this._desktopSettings.connect('changed', this._reloadEvents.bind(this)); |
2529 | this._eventSource = new EmptyEventSource(); |
2530 | |
2531 | +<<<<<<< js/ui/calendar.js |
2532 | +======= |
2533 | + this._messageById = new Map(); |
2534 | + |
2535 | +>>>>>>> js/ui/calendar.js |
2536 | this.parent(); |
2537 | |
2538 | this._title = new St.Button({ style_class: 'events-section-title', |
2539 | @@ -875,12 +885,16 @@ var EventsSection = new Lang.Class({ |
2540 | |
2541 | this._reloading = true; |
2542 | |
2543 | +<<<<<<< js/ui/calendar.js |
2544 | this._list.destroy_all_children(); |
2545 | |
2546 | +======= |
2547 | +>>>>>>> js/ui/calendar.js |
2548 | let periodBegin = _getBeginningOfDay(this._date); |
2549 | let periodEnd = _getEndOfDay(this._date); |
2550 | let events = this._eventSource.getEvents(periodBegin, periodEnd); |
2551 | |
2552 | +<<<<<<< js/ui/calendar.js |
2553 | for (let i = 0; i < events.length; i++) { |
2554 | let event = events[i]; |
2555 | |
2556 | @@ -889,6 +903,30 @@ var EventsSection = new Lang.Class({ |
2557 | this._ignoreEvent(event); |
2558 | }); |
2559 | this.addMessage(message, false); |
2560 | +======= |
2561 | + let ids = events.map(e => e.id); |
2562 | + this._messageById.forEach((message, id) => { |
2563 | + if (ids.includes(id)) |
2564 | + return; |
2565 | + this._messageById.delete(id); |
2566 | + this.removeMessage(message); |
2567 | + }); |
2568 | + |
2569 | + for (let i = 0; i < events.length; i++) { |
2570 | + let event = events[i]; |
2571 | + |
2572 | + let message = this._messageById.get(event.id); |
2573 | + if (!message) { |
2574 | + message = new EventMessage(event, this._date); |
2575 | + message.connect('close', () => { |
2576 | + this._ignoreEvent(event); |
2577 | + }); |
2578 | + this._messageById.set(event.id, message); |
2579 | + this.addMessage(message, false); |
2580 | + } else { |
2581 | + this.moveMessage(message, i, false); |
2582 | + } |
2583 | +>>>>>>> js/ui/calendar.js |
2584 | } |
2585 | |
2586 | this._reloading = false; |
2587 | diff --git a/js/ui/components/automountManager.js b/js/ui/components/automountManager.js |
2588 | index 2d8f3f8..cfd19db 100644 |
2589 | --- a/js/ui/components/automountManager.js |
2590 | +++ b/js/ui/components/automountManager.js |
2591 | @@ -210,6 +210,13 @@ var AutomountManager = new Lang.Class({ |
2592 | }, |
2593 | |
2594 | _onVolumeRemoved(monitor, volume) { |
2595 | +<<<<<<< js/ui/components/automountManager.js |
2596 | +======= |
2597 | + if (volume._allowAutorunExpireId && volume._allowAutorunExpireId > 0) { |
2598 | + Mainloop.source_remove(volume._allowAutorunExpireId); |
2599 | + delete volume._allowAutorunExpireId; |
2600 | + } |
2601 | +>>>>>>> js/ui/components/automountManager.js |
2602 | this._volumeQueue = |
2603 | this._volumeQueue.filter(element => (element != volume)); |
2604 | }, |
2605 | @@ -234,8 +241,15 @@ var AutomountManager = new Lang.Class({ |
2606 | _allowAutorunExpire(volume) { |
2607 | let id = Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, () => { |
2608 | volume.allowAutorun = false; |
2609 | +<<<<<<< js/ui/components/automountManager.js |
2610 | + return GLib.SOURCE_REMOVE; |
2611 | + }); |
2612 | +======= |
2613 | + delete volume._allowAutorunExpireId; |
2614 | return GLib.SOURCE_REMOVE; |
2615 | }); |
2616 | + volume._allowAutorunExpireId = id; |
2617 | +>>>>>>> js/ui/components/automountManager.js |
2618 | GLib.Source.set_name_by_id(id, '[gnome-shell] volume.allowAutorun'); |
2619 | } |
2620 | }); |
2621 | diff --git a/js/ui/components/networkAgent.js b/js/ui/components/networkAgent.js |
2622 | index 75f4203..447fb55 100644 |
2623 | --- a/js/ui/components/networkAgent.js |
2624 | +++ b/js/ui/components/networkAgent.js |
2625 | @@ -655,7 +655,11 @@ var NetworkAgent = new Lang.Class({ |
2626 | switch (connectionType) { |
2627 | case '802-11-wireless': |
2628 | let wirelessSetting = connection.get_setting_wireless(); |
2629 | +<<<<<<< js/ui/components/networkAgent.js |
2630 | let ssid = NM.utils_ssid_to_utf8(wirelessSetting.get_ssid()); |
2631 | +======= |
2632 | + let ssid = NM.utils_ssid_to_utf8(wirelessSetting.get_ssid().get_data()); |
2633 | +>>>>>>> js/ui/components/networkAgent.js |
2634 | title = _("Authentication required by wireless network"); |
2635 | body = _("Passwords or encryption keys are required to access the wireless network “%s”.").format(ssid); |
2636 | break; |
2637 | diff --git a/js/ui/components/polkitAgent.js b/js/ui/components/polkitAgent.js |
2638 | index 316bc2a..9180266 100644 |
2639 | --- a/js/ui/components/polkitAgent.js |
2640 | +++ b/js/ui/components/polkitAgent.js |
2641 | @@ -201,7 +201,13 @@ var AuthenticationDialog = new Lang.Class({ |
2642 | close(timestamp) { |
2643 | this.parent(timestamp); |
2644 | |
2645 | +<<<<<<< js/ui/components/polkitAgent.js |
2646 | Main.sessionMode.disconnect(this._sessionUpdatedId); |
2647 | +======= |
2648 | + if (this._sessionUpdatedId) |
2649 | + Main.sessionMode.disconnect(this._sessionUpdatedId); |
2650 | + this._sessionUpdatedId = 0; |
2651 | +>>>>>>> js/ui/components/polkitAgent.js |
2652 | }, |
2653 | |
2654 | _ensureOpen() { |
2655 | diff --git a/js/ui/dash.js b/js/ui/dash.js |
2656 | index 5ee2476..83e73ce 100644 |
2657 | --- a/js/ui/dash.js |
2658 | +++ b/js/ui/dash.js |
2659 | @@ -52,6 +52,11 @@ var DashItemContainer = new Lang.Class({ |
2660 | this.animatingOut = false; |
2661 | |
2662 | this.connect('destroy', () => { |
2663 | +<<<<<<< js/ui/dash.js |
2664 | +======= |
2665 | + if (this.child != null) |
2666 | + this.child.destroy(); |
2667 | +>>>>>>> js/ui/dash.js |
2668 | this.label.destroy(); |
2669 | }); |
2670 | }, |
2671 | diff --git a/js/ui/dnd.js b/js/ui/dnd.js |
2672 | index a38607c..25ae400 100644 |
2673 | --- a/js/ui/dnd.js |
2674 | +++ b/js/ui/dnd.js |
2675 | @@ -396,10 +396,22 @@ var _Draggable = new Lang.Class({ |
2676 | return true; |
2677 | }, |
2678 | |
2679 | +<<<<<<< js/ui/dnd.js |
2680 | _updateDragHover() { |
2681 | this._updateHoverId = 0; |
2682 | let target = this._dragActor.get_stage().get_actor_at_pos(Clutter.PickMode.ALL, |
2683 | this._dragX, this._dragY); |
2684 | +======= |
2685 | + _pickTargetActor() { |
2686 | + return this._dragActor.get_stage().get_actor_at_pos(Clutter.PickMode.ALL, |
2687 | + this._dragX, this._dragY); |
2688 | + }, |
2689 | + |
2690 | + _updateDragHover() { |
2691 | + this._updateHoverId = 0; |
2692 | + let target = this._pickTargetActor(); |
2693 | + |
2694 | +>>>>>>> js/ui/dnd.js |
2695 | let dragEvent = { |
2696 | x: this._dragX, |
2697 | y: this._dragY, |
2698 | @@ -407,6 +419,21 @@ var _Draggable = new Lang.Class({ |
2699 | source: this.actor._delegate, |
2700 | targetActor: target |
2701 | }; |
2702 | +<<<<<<< js/ui/dnd.js |
2703 | +======= |
2704 | + |
2705 | + let targetActorDestroyHandlerId; |
2706 | + let handleTargetActorDestroyClosure; |
2707 | + handleTargetActorDestroyClosure = () => { |
2708 | + target = this._pickTargetActor(); |
2709 | + dragEvent.targetActor = target; |
2710 | + targetActorDestroyHandlerId = |
2711 | + target.connect('destroy', handleTargetActorDestroyClosure); |
2712 | + }; |
2713 | + targetActorDestroyHandlerId = |
2714 | + target.connect('destroy', handleTargetActorDestroyClosure); |
2715 | + |
2716 | +>>>>>>> js/ui/dnd.js |
2717 | for (let i = 0; i < dragMonitors.length; i++) { |
2718 | let motionFunc = dragMonitors[i].dragMotion; |
2719 | if (motionFunc) { |
2720 | @@ -417,6 +444,10 @@ var _Draggable = new Lang.Class({ |
2721 | } |
2722 | } |
2723 | } |
2724 | +<<<<<<< js/ui/dnd.js |
2725 | +======= |
2726 | + dragEvent.targetActor.disconnect(targetActorDestroyHandlerId); |
2727 | +>>>>>>> js/ui/dnd.js |
2728 | |
2729 | while (target) { |
2730 | if (target._delegate && target._delegate.handleDragOver) { |
2731 | diff --git a/js/ui/endSessionDialog.js b/js/ui/endSessionDialog.js |
2732 | index 7d18d0b..e0fe505 100644 |
2733 | --- a/js/ui/endSessionDialog.js |
2734 | +++ b/js/ui/endSessionDialog.js |
2735 | @@ -760,7 +760,11 @@ var EndSessionDialog = new Lang.Class({ |
2736 | let updatePrepared = this._pkOfflineProxy.UpdatePrepared; |
2737 | let updatesAllowed = this._updatesPermission && this._updatesPermission.allowed; |
2738 | |
2739 | +<<<<<<< js/ui/endSessionDialog.js |
2740 | _setCheckBoxLabel(this._checkBox, dialogContent.checkBoxText); |
2741 | +======= |
2742 | + _setCheckBoxLabel(this._checkBox, dialogContent.checkBoxText || ''); |
2743 | +>>>>>>> js/ui/endSessionDialog.js |
2744 | this._checkBox.actor.visible = (dialogContent.checkBoxText && updatePrepared && updatesAllowed); |
2745 | this._checkBox.actor.checked = (updatePrepared && updateTriggered); |
2746 | |
2747 | diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js |
2748 | index e35c01a..36fbf92 100644 |
2749 | --- a/js/ui/extensionSystem.js |
2750 | +++ b/js/ui/extensionSystem.js |
2751 | @@ -76,6 +76,10 @@ function disableExtension(uuid) { |
2752 | if (extension.stylesheet) { |
2753 | let theme = St.ThemeContext.get_for_stage(global.stage).get_theme(); |
2754 | theme.unload_stylesheet(extension.stylesheet); |
2755 | +<<<<<<< js/ui/extensionSystem.js |
2756 | +======= |
2757 | + delete extension.stylesheet; |
2758 | +>>>>>>> js/ui/extensionSystem.js |
2759 | } |
2760 | |
2761 | try { |
2762 | @@ -115,6 +119,7 @@ function enableExtension(uuid) { |
2763 | extensionOrder.push(uuid); |
2764 | |
2765 | let stylesheetNames = [global.session_mode + '.css', 'stylesheet.css']; |
2766 | +<<<<<<< js/ui/extensionSystem.js |
2767 | for (let i = 0; i < stylesheetNames.length; i++) { |
2768 | let stylesheetFile = extension.dir.get_child(stylesheetNames[i]); |
2769 | if (stylesheetFile.query_exists(null)) { |
2770 | @@ -122,6 +127,20 @@ function enableExtension(uuid) { |
2771 | theme.load_stylesheet(stylesheetFile); |
2772 | extension.stylesheet = stylesheetFile; |
2773 | break; |
2774 | +======= |
2775 | + let theme = St.ThemeContext.get_for_stage(global.stage).get_theme(); |
2776 | + for (let i = 0; i < stylesheetNames.length; i++) { |
2777 | + try { |
2778 | + let stylesheetFile = extension.dir.get_child(stylesheetNames[i]); |
2779 | + theme.load_stylesheet(stylesheetFile); |
2780 | + extension.stylesheet = stylesheetFile; |
2781 | + break; |
2782 | + } catch (e) { |
2783 | + if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) |
2784 | + continue; // not an error |
2785 | + log(`Failed to load stylesheet for extension ${uuid}: ${e.message}`); |
2786 | + return; |
2787 | +>>>>>>> js/ui/extensionSystem.js |
2788 | } |
2789 | } |
2790 | |
2791 | @@ -131,6 +150,13 @@ function enableExtension(uuid) { |
2792 | _signals.emit('extension-state-changed', extension); |
2793 | return; |
2794 | } catch(e) { |
2795 | +<<<<<<< js/ui/extensionSystem.js |
2796 | +======= |
2797 | + if (extension.stylesheet) { |
2798 | + theme.unload_stylesheet(extension.stylesheet); |
2799 | + delete extension.stylesheet; |
2800 | + } |
2801 | +>>>>>>> js/ui/extensionSystem.js |
2802 | logExtensionError(uuid, e); |
2803 | return; |
2804 | } |
2805 | diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js |
2806 | index 60f2653..2b2afae 100644 |
2807 | --- a/js/ui/iconGrid.js |
2808 | +++ b/js/ui/iconGrid.js |
2809 | @@ -418,6 +418,14 @@ var IconGrid = new Lang.Class({ |
2810 | }, |
2811 | |
2812 | _animationDone() { |
2813 | +<<<<<<< js/ui/iconGrid.js |
2814 | +======= |
2815 | + this._clonesAnimating.forEach(clone => { |
2816 | + clone.source.reactive = true; |
2817 | + clone.source.opacity = 255; |
2818 | + clone.destroy(); |
2819 | + }); |
2820 | +>>>>>>> js/ui/iconGrid.js |
2821 | this._clonesAnimating = []; |
2822 | this.emit('animation-done'); |
2823 | }, |
2824 | @@ -538,10 +546,13 @@ var IconGrid = new Lang.Class({ |
2825 | onComplete: () => { |
2826 | if (isLastItem) |
2827 | this._animationDone(); |
2828 | +<<<<<<< js/ui/iconGrid.js |
2829 | |
2830 | actor.opacity = 255; |
2831 | actor.reactive = true; |
2832 | actorClone.destroy(); |
2833 | +======= |
2834 | +>>>>>>> js/ui/iconGrid.js |
2835 | }}; |
2836 | fadeParams = { time: ANIMATION_FADE_IN_TIME_FOR_ITEM, |
2837 | transition: 'easeInOutQuad', |
2838 | @@ -562,12 +573,17 @@ var IconGrid = new Lang.Class({ |
2839 | scale_x: scaleX, |
2840 | scale_y: scaleY, |
2841 | onComplete: () => { |
2842 | +<<<<<<< js/ui/iconGrid.js |
2843 | if (isLastItem) { |
2844 | this._animationDone(); |
2845 | this._restoreItemsOpacity(); |
2846 | } |
2847 | actor.reactive = true; |
2848 | actorClone.destroy(); |
2849 | +======= |
2850 | + if (isLastItem) |
2851 | + this._animationDone(); |
2852 | +>>>>>>> js/ui/iconGrid.js |
2853 | }}; |
2854 | fadeParams = { time: ANIMATION_FADE_IN_TIME_FOR_ITEM, |
2855 | transition: 'easeInOutQuad', |
2856 | @@ -581,12 +597,15 @@ var IconGrid = new Lang.Class({ |
2857 | } |
2858 | }, |
2859 | |
2860 | +<<<<<<< js/ui/iconGrid.js |
2861 | _restoreItemsOpacity() { |
2862 | for (let index = 0; index < this._items.length; index++) { |
2863 | this._items[index].actor.opacity = 255; |
2864 | } |
2865 | }, |
2866 | |
2867 | +======= |
2868 | +>>>>>>> js/ui/iconGrid.js |
2869 | _getAllocatedChildSizeAndSpacing(child) { |
2870 | let [,, natWidth, natHeight] = child.get_preferred_size(); |
2871 | let width = Math.min(this._getHItemSize(), natWidth); |
2872 | diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js |
2873 | index e13c7b7..543c5a9 100644 |
2874 | --- a/js/ui/keyboard.js |
2875 | +++ b/js/ui/keyboard.js |
2876 | @@ -1,6 +1,9 @@ |
2877 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2878 | |
2879 | +<<<<<<< js/ui/keyboard.js |
2880 | const FocusCaretTracker = imports.ui.focusCaretTracker; |
2881 | +======= |
2882 | +>>>>>>> js/ui/keyboard.js |
2883 | const Atspi = imports.gi.Atspi; |
2884 | const Clutter = imports.gi.Clutter; |
2885 | const Gdk = imports.gi.Gdk; |
2886 | @@ -13,6 +16,10 @@ const Signals = imports.signals; |
2887 | const St = imports.gi.St; |
2888 | const InputSourceManager = imports.ui.status.keyboard; |
2889 | |
2890 | +<<<<<<< js/ui/keyboard.js |
2891 | +======= |
2892 | +const IBusManager = imports.misc.ibusManager; |
2893 | +>>>>>>> js/ui/keyboard.js |
2894 | const BoxPointer = imports.ui.boxpointer; |
2895 | const Layout = imports.ui.layout; |
2896 | const Main = imports.ui.main; |
2897 | @@ -261,6 +268,10 @@ var Key = new Lang.Class({ |
2898 | this._extended_keyboard = null; |
2899 | this._pressTimeoutId = 0; |
2900 | this._capturedPress = false; |
2901 | +<<<<<<< js/ui/keyboard.js |
2902 | +======= |
2903 | + |
2904 | +>>>>>>> js/ui/keyboard.js |
2905 | this._capturedEventId = 0; |
2906 | this._unmapId = 0; |
2907 | this._longPress = false; |
2908 | @@ -484,6 +495,82 @@ var KeyboardModel = new Lang.Class({ |
2909 | } |
2910 | }); |
2911 | |
2912 | +<<<<<<< js/ui/keyboard.js |
2913 | +======= |
2914 | +var FocusTracker = new Lang.Class({ |
2915 | + Name: 'FocusTracker', |
2916 | + |
2917 | + _init() { |
2918 | + this._currentWindow = null; |
2919 | + this._currentWindowPositionId = 0; |
2920 | + |
2921 | + global.screen.get_display().connect('notify::focus-window', () => { |
2922 | + this._setCurrentWindow(global.screen.get_display().focus_window); |
2923 | + this.emit('window-changed', this._currentWindow); |
2924 | + }); |
2925 | + |
2926 | + /* Valid for wayland clients */ |
2927 | + Main.inputMethod.connect('cursor-location-changed', (o, rect) => { |
2928 | + let newRect = { x: rect.get_x(), y: rect.get_y(), width: rect.get_width(), height: rect.get_height() }; |
2929 | + this._setCurrentRect(newRect); |
2930 | + }); |
2931 | + |
2932 | + this._ibusManager = IBusManager.getIBusManager(); |
2933 | + this._ibusManager.connect('set-cursor-location', (manager, rect) => { |
2934 | + /* Valid for X11 clients only */ |
2935 | + if (Main.inputMethod.currentFocus) |
2936 | + return; |
2937 | + |
2938 | + this._setCurrentRect(rect); |
2939 | + }); |
2940 | + }, |
2941 | + |
2942 | + get currentWindow() { |
2943 | + return this._currentWindow; |
2944 | + }, |
2945 | + |
2946 | + _setCurrentWindow(window) { |
2947 | + if (this._currentWindow) |
2948 | + this._currentWindow.disconnect(this._currentWindowPositionId); |
2949 | + |
2950 | + this._currentWindow = window; |
2951 | + if (window) { |
2952 | + this._currentWindowPositionId = this._currentWindow.connect('position-changed', () => { |
2953 | + if (global.display.get_grab_op() == Meta.GrabOp.NONE) |
2954 | + this.emit('position-changed'); |
2955 | + else |
2956 | + this.emit('reset'); |
2957 | + }); |
2958 | + } |
2959 | + }, |
2960 | + |
2961 | + _setCurrentRect(rect) { |
2962 | + if (this._currentWindow) { |
2963 | + let frameRect = this._currentWindow.get_frame_rect(); |
2964 | + rect.x -= frameRect.x; |
2965 | + rect.y -= frameRect.y; |
2966 | + } |
2967 | + |
2968 | + this._rect = rect; |
2969 | + this.emit('position-changed'); |
2970 | + }, |
2971 | + |
2972 | + getCurrentRect() { |
2973 | + let rect = { x: this._rect.x, y: this._rect.y, |
2974 | + width: this._rect.width, height: this._rect.height }; |
2975 | + |
2976 | + if (this._currentWindow) { |
2977 | + let frameRect = this._currentWindow.get_frame_rect(); |
2978 | + rect.x += frameRect.x; |
2979 | + rect.y += frameRect.y; |
2980 | + } |
2981 | + |
2982 | + return rect; |
2983 | + } |
2984 | +}); |
2985 | +Signals.addSignalMethods(FocusTracker.prototype); |
2986 | + |
2987 | +>>>>>>> js/ui/keyboard.js |
2988 | var Keyboard = new Lang.Class({ |
2989 | Name: 'Keyboard', |
2990 | |
2991 | @@ -491,6 +578,7 @@ var Keyboard = new Lang.Class({ |
2992 | this.actor = null; |
2993 | this._focusInExtendedKeys = false; |
2994 | |
2995 | +<<<<<<< js/ui/keyboard.js |
2996 | this._focusCaretTracker = new FocusCaretTracker.FocusCaretTracker(); |
2997 | this._focusCaretTracker.connect('focus-changed', this._onFocusChanged.bind(this)); |
2998 | this._focusCaretTracker.connect('caret-moved', this._onCaretMoved.bind(this)); |
2999 | @@ -500,6 +588,12 @@ var Keyboard = new Lang.Class({ |
3000 | this._updateCaretPositionId = 0; |
3001 | this._currentFocusWindow = null; |
3002 | this._originalWindowY = null; |
3003 | +======= |
3004 | + this._languagePopup = null; |
3005 | + this._currentFocusWindow = null; |
3006 | + this._animFocusedWindow = null; |
3007 | + this._delayedAnimFocusWindow = null; |
3008 | +>>>>>>> js/ui/keyboard.js |
3009 | |
3010 | this._enableKeyboard = false; // a11y settings value |
3011 | this._enabled = false; // enabled state (by setting or device type) |
3012 | @@ -510,6 +604,17 @@ var Keyboard = new Lang.Class({ |
3013 | this._lastDeviceId = null; |
3014 | this._suggestions = null; |
3015 | |
3016 | +<<<<<<< js/ui/keyboard.js |
3017 | +======= |
3018 | + this._focusTracker = new FocusTracker(); |
3019 | + this._focusTracker.connect('position-changed', this._onFocusPositionChanged.bind(this)); |
3020 | + this._focusTracker.connect('reset', () => { |
3021 | + this._delayedAnimFocusWindow = null; |
3022 | + this._animFocusedWindow = null; |
3023 | + this._oskFocusWindow = null; |
3024 | + }); |
3025 | + |
3026 | +>>>>>>> js/ui/keyboard.js |
3027 | Meta.get_backend().connect('last-device-changed', |
3028 | (backend, deviceId) => { |
3029 | let manager = Clutter.DeviceManager.get_default(); |
3030 | @@ -532,6 +637,7 @@ var Keyboard = new Lang.Class({ |
3031 | this._keyboardRestingId = 0; |
3032 | |
3033 | Main.layoutManager.connect('monitors-changed', this._relayout.bind(this)); |
3034 | +<<<<<<< js/ui/keyboard.js |
3035 | //Main.inputMethod.connect('cursor-location-changed', (o, rect) => { |
3036 | // if (this._keyboardVisible) { |
3037 | // let currentWindow = global.screen.get_display().focus_window; |
3038 | @@ -539,12 +645,15 @@ var Keyboard = new Lang.Class({ |
3039 | // rect.get_width(), rect.get_height()); |
3040 | // } |
3041 | //}); |
3042 | +======= |
3043 | +>>>>>>> js/ui/keyboard.js |
3044 | }, |
3045 | |
3046 | get visible() { |
3047 | return this._keyboardVisible; |
3048 | }, |
3049 | |
3050 | +<<<<<<< js/ui/keyboard.js |
3051 | _setCaretTrackerEnabled(enabled) { |
3052 | if (this._caretTrackingEnabled == enabled) |
3053 | return; |
3054 | @@ -628,6 +737,11 @@ var Keyboard = new Lang.Class({ |
3055 | let accessible = event.source; |
3056 | if (this._currentAccessible == accessible) |
3057 | this._updateCaretPosition(accessible); |
3058 | +======= |
3059 | + _onFocusPositionChanged(focusTracker) { |
3060 | + let rect = focusTracker.getCurrentRect(); |
3061 | + this.setCursorLocation(focusTracker.currentWindow, rect.x, rect.y, rect.width, rect.height); |
3062 | +>>>>>>> js/ui/keyboard.js |
3063 | }, |
3064 | |
3065 | _lastDeviceIsTouchscreen() { |
3066 | @@ -650,8 +764,11 @@ var Keyboard = new Lang.Class({ |
3067 | if (!this._enabled && !this._keyboardController) |
3068 | return; |
3069 | |
3070 | +<<<<<<< js/ui/keyboard.js |
3071 | this._setCaretTrackerEnabled(this._enabled); |
3072 | |
3073 | +======= |
3074 | +>>>>>>> js/ui/keyboard.js |
3075 | if (this._enabled && !this._keyboardController) |
3076 | this._setupKeyboard(); |
3077 | else if (!this._enabled) |
3078 | @@ -936,9 +1053,17 @@ var Keyboard = new Lang.Class({ |
3079 | }, |
3080 | |
3081 | _relayout() { |
3082 | +<<<<<<< js/ui/keyboard.js |
3083 | if (this.actor == null) |
3084 | return; |
3085 | let monitor = Main.layoutManager.keyboardMonitor; |
3086 | +======= |
3087 | + let monitor = Main.layoutManager.keyboardMonitor; |
3088 | + |
3089 | + if (this.actor == null || monitor == null) |
3090 | + return; |
3091 | + |
3092 | +>>>>>>> js/ui/keyboard.js |
3093 | let maxHeight = monitor.height / 3; |
3094 | this.actor.width = monitor.width; |
3095 | this.actor.height = maxHeight; |
3096 | @@ -1027,11 +1152,22 @@ var Keyboard = new Lang.Class({ |
3097 | if (!this._keyboardRequested) |
3098 | return; |
3099 | |
3100 | +<<<<<<< js/ui/keyboard.js |
3101 | if (this._currentAccessible) |
3102 | this._updateCaretPosition(this._currentAccessible); |
3103 | Main.layoutManager.keyboardIndex = monitor; |
3104 | this._relayout(); |
3105 | Main.layoutManager.showKeyboard(); |
3106 | +======= |
3107 | + Main.layoutManager.keyboardIndex = monitor; |
3108 | + this._relayout(); |
3109 | + Main.layoutManager.showKeyboard(); |
3110 | + |
3111 | + if (this._delayedAnimFocusWindow) { |
3112 | + this._setAnimationWindow(this._delayedAnimFocusWindow); |
3113 | + this._delayedAnimFocusWindow = null; |
3114 | + } |
3115 | +>>>>>>> js/ui/keyboard.js |
3116 | }, |
3117 | |
3118 | hide() { |
3119 | @@ -1102,8 +1238,14 @@ var Keyboard = new Lang.Class({ |
3120 | window.move_frame(true, frameRect.x, frameRect.y); |
3121 | }, |
3122 | |
3123 | +<<<<<<< js/ui/keyboard.js |
3124 | _animateWindow(window, show, deltaY) { |
3125 | let windowActor = window.get_compositor_private(); |
3126 | +======= |
3127 | + _animateWindow(window, show) { |
3128 | + let windowActor = window.get_compositor_private(); |
3129 | + let deltaY = Main.layoutManager.keyboardBox.height; |
3130 | +>>>>>>> js/ui/keyboard.js |
3131 | if (!windowActor) |
3132 | return; |
3133 | |
3134 | @@ -1124,6 +1266,7 @@ var Keyboard = new Lang.Class({ |
3135 | } |
3136 | }, |
3137 | |
3138 | +<<<<<<< js/ui/keyboard.js |
3139 | setCursorLocation(window, x, y , w, h) { |
3140 | if (window == this._oskFocusWindow) |
3141 | return; |
3142 | @@ -1153,6 +1296,41 @@ var Keyboard = new Lang.Class({ |
3143 | this._oskFocusWindow = window; |
3144 | this._oskFocusWindowDelta = delta; |
3145 | } |
3146 | +======= |
3147 | + _setAnimationWindow(window) { |
3148 | + if (this._animFocusedWindow == window) |
3149 | + return; |
3150 | + |
3151 | + if (this._animFocusedWindow) |
3152 | + this._animateWindow(this._animFocusedWindow, false); |
3153 | + if (window) |
3154 | + this._animateWindow(window, true); |
3155 | + |
3156 | + this._animFocusedWindow = window; |
3157 | + }, |
3158 | + |
3159 | + setCursorLocation(window, x, y , w, h) { |
3160 | + let monitor = Main.layoutManager.keyboardMonitor; |
3161 | + |
3162 | + if (window && monitor) { |
3163 | + let keyboardHeight = Main.layoutManager.keyboardBox.height; |
3164 | + let focusObscured = false; |
3165 | + |
3166 | + if (y + h >= monitor.y + monitor.height - keyboardHeight) { |
3167 | + if (this._keyboardVisible) |
3168 | + this._setAnimationWindow(window); |
3169 | + else |
3170 | + this._delayedAnimFocusWindow = window; |
3171 | + } else if (y < keyboardHeight) { |
3172 | + this._delayedAnimFocusWindow = null; |
3173 | + this._setAnimationWindow(null); |
3174 | + } |
3175 | + } else { |
3176 | + this._setAnimationWindow(null); |
3177 | + } |
3178 | + |
3179 | + this._oskFocusWindow = window; |
3180 | +>>>>>>> js/ui/keyboard.js |
3181 | }, |
3182 | }); |
3183 | |
3184 | diff --git a/js/ui/layout.js b/js/ui/layout.js |
3185 | index 6f81039..e4e5e9e 100644 |
3186 | --- a/js/ui/layout.js |
3187 | +++ b/js/ui/layout.js |
3188 | @@ -203,6 +203,10 @@ var LayoutManager = new Lang.Class({ |
3189 | |
3190 | // Set up stage hierarchy to group all UI actors under one container. |
3191 | this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' }); |
3192 | +<<<<<<< js/ui/layout.js |
3193 | +======= |
3194 | + this.uiGroup.set_flags(Clutter.ActorFlags.NO_LAYOUT); |
3195 | +>>>>>>> js/ui/layout.js |
3196 | this.uiGroup.connect('allocate', (actor, box, flags) => { |
3197 | let children = actor.get_children(); |
3198 | for (let i = 0; i < children.length; i++) |
3199 | @@ -557,6 +561,11 @@ var LayoutManager = new Lang.Class({ |
3200 | }, |
3201 | |
3202 | get focusMonitor() { |
3203 | +<<<<<<< js/ui/layout.js |
3204 | +======= |
3205 | + if (this.focusIndex < 0) |
3206 | + return null; |
3207 | +>>>>>>> js/ui/layout.js |
3208 | return this.monitors[this.focusIndex]; |
3209 | }, |
3210 | |
3211 | diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js |
3212 | index b752b12..68511e7 100644 |
3213 | --- a/js/ui/magnifier.js |
3214 | +++ b/js/ui/magnifier.js |
3215 | @@ -19,7 +19,10 @@ const MagnifierDBus = imports.ui.magnifierDBus; |
3216 | const Params = imports.misc.params; |
3217 | const PointerWatcher = imports.ui.pointerWatcher; |
3218 | |
3219 | +<<<<<<< js/ui/magnifier.js |
3220 | var MOUSE_POLL_FREQUENCY = 50; |
3221 | +======= |
3222 | +>>>>>>> js/ui/magnifier.js |
3223 | var CROSSHAIRS_CLIP_SIZE = [100, 100]; |
3224 | var NO_CHANGE = 0.0; |
3225 | |
3226 | @@ -152,8 +155,15 @@ var Magnifier = new Lang.Class({ |
3227 | * Turn on mouse tracking, if not already doing so. |
3228 | */ |
3229 | startTrackingMouse() { |
3230 | +<<<<<<< js/ui/magnifier.js |
3231 | if (!this._pointerWatch) |
3232 | this._pointerWatch = PointerWatcher.getPointerWatcher().addWatch(MOUSE_POLL_FREQUENCY, this.scrollToMousePos.bind(this)); |
3233 | +======= |
3234 | + if (!this._pointerWatch) { |
3235 | + let interval = 1000 / Clutter.get_default_frame_rate(); |
3236 | + this._pointerWatch = PointerWatcher.getPointerWatcher().addWatch(interval, this.scrollToMousePos.bind(this)); |
3237 | + } |
3238 | +>>>>>>> js/ui/magnifier.js |
3239 | }, |
3240 | |
3241 | /** |
3242 | diff --git a/js/ui/main.js b/js/ui/main.js |
3243 | index 2cfe941..d7742ee 100644 |
3244 | --- a/js/ui/main.js |
3245 | +++ b/js/ui/main.js |
3246 | @@ -256,6 +256,17 @@ function _getStylesheet(name) { |
3247 | if (stylesheet.query_exists(null)) |
3248 | return stylesheet; |
3249 | |
3250 | +<<<<<<< js/ui/main.js |
3251 | +======= |
3252 | + let dataDirs = GLib.get_system_data_dirs(); |
3253 | + for (let i = 0; i < dataDirs.length; i++) { |
3254 | + let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', 'theme', name]); |
3255 | + let stylesheet = Gio.file_new_for_path(path); |
3256 | + if (stylesheet.query_exists(null)) |
3257 | + return stylesheet; |
3258 | + } |
3259 | + |
3260 | +>>>>>>> js/ui/main.js |
3261 | stylesheet = Gio.File.new_for_path(global.datadir + '/theme/' + name); |
3262 | if (stylesheet.query_exists(null)) |
3263 | return stylesheet; |
3264 | @@ -335,6 +346,12 @@ function loadTheme() { |
3265 | let theme = new St.Theme ({ application_stylesheet: _cssStylesheet, |
3266 | default_stylesheet: _defaultCssStylesheet }); |
3267 | |
3268 | +<<<<<<< js/ui/main.js |
3269 | +======= |
3270 | + if (theme.default_stylesheet == null) |
3271 | + throw new Error("No valid stylesheet found for '%s'".format(sessionMode.stylesheetName)); |
3272 | + |
3273 | +>>>>>>> js/ui/main.js |
3274 | if (previousTheme) { |
3275 | let customStylesheets = previousTheme.get_custom_stylesheets(); |
3276 | |
3277 | diff --git a/js/ui/messageList.js b/js/ui/messageList.js |
3278 | index aff201e..285d14a 100644 |
3279 | --- a/js/ui/messageList.js |
3280 | +++ b/js/ui/messageList.js |
3281 | @@ -362,7 +362,12 @@ var Message = new Lang.Class({ |
3282 | this.setBody(body); |
3283 | |
3284 | this._closeButton.connect('clicked', this.close.bind(this)); |
3285 | +<<<<<<< js/ui/messageList.js |
3286 | this.actor.connect('notify::hover', this._sync.bind(this)); |
3287 | +======= |
3288 | + let actorHoverId = this.actor.connect('notify::hover', this._sync.bind(this)); |
3289 | + this._closeButton.connect('destroy', this.actor.disconnect.bind(this.actor, actorHoverId)); |
3290 | +>>>>>>> js/ui/messageList.js |
3291 | this.actor.connect('clicked', this._onClicked.bind(this)); |
3292 | this.actor.connect('destroy', this._onDestroy.bind(this)); |
3293 | this._sync(); |
3294 | diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js |
3295 | index 9ce5b44..20b635a 100644 |
3296 | --- a/js/ui/messageTray.js |
3297 | +++ b/js/ui/messageTray.js |
3298 | @@ -1320,6 +1320,10 @@ var MessageTray = new Lang.Class({ |
3299 | this._bannerBin.y = -this._banner.actor.height; |
3300 | this.actor.show(); |
3301 | |
3302 | +<<<<<<< js/ui/messageTray.js |
3303 | +======= |
3304 | + Meta.disable_unredirect_for_screen(global.screen); |
3305 | +>>>>>>> js/ui/messageTray.js |
3306 | this._updateShowingNotification(); |
3307 | |
3308 | let [x, y, mods] = global.get_pointer(); |
3309 | @@ -1457,6 +1461,10 @@ var MessageTray = new Lang.Class({ |
3310 | |
3311 | this._pointerInNotification = false; |
3312 | this._notificationRemoved = false; |
3313 | +<<<<<<< js/ui/messageTray.js |
3314 | +======= |
3315 | + Meta.enable_unredirect_for_screen(global.screen); |
3316 | +>>>>>>> js/ui/messageTray.js |
3317 | |
3318 | this._banner.actor.destroy(); |
3319 | this._banner = null; |
3320 | diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js |
3321 | index 9f08562..61dc4b3 100644 |
3322 | --- a/js/ui/notificationDaemon.js |
3323 | +++ b/js/ui/notificationDaemon.js |
3324 | @@ -117,10 +117,15 @@ var FdoNotificationDaemon = new Lang.Class({ |
3325 | bitsPerSample, nChannels, data] = hints['image-data']; |
3326 | return Shell.util_create_pixbuf_from_data(data, GdkPixbuf.Colorspace.RGB, hasAlpha, |
3327 | bitsPerSample, width, height, rowStride); |
3328 | +<<<<<<< js/ui/notificationDaemon.js |
3329 | } else if (hints['image-path']) { |
3330 | return new Gio.FileIcon({ file: Gio.File.new_for_path(hints['image-path']) }); |
3331 | } |
3332 | return null; |
3333 | +======= |
3334 | + } |
3335 | + return this._iconForNotificationData(hints['image-path']); |
3336 | +>>>>>>> js/ui/notificationDaemon.js |
3337 | }, |
3338 | |
3339 | _fallbackIconForNotificationData(hints) { |
3340 | diff --git a/js/ui/osdWindow.js b/js/ui/osdWindow.js |
3341 | index f27f489..83d77f1 100644 |
3342 | --- a/js/ui/osdWindow.js |
3343 | +++ b/js/ui/osdWindow.js |
3344 | @@ -108,15 +108,41 @@ var OsdWindow = new Lang.Class({ |
3345 | this._hideTimeoutId = 0; |
3346 | this._reset(); |
3347 | |
3348 | +<<<<<<< js/ui/osdWindow.js |
3349 | Main.layoutManager.connect('monitors-changed', |
3350 | this._relayout.bind(this)); |
3351 | let themeContext = St.ThemeContext.get_for_stage(global.stage); |
3352 | themeContext.connect('notify::scale-factor', |
3353 | this._relayout.bind(this)); |
3354 | +======= |
3355 | + this.actor.connect('destroy', this._onDestroy.bind(this)); |
3356 | + |
3357 | + this._monitorsChangedId = |
3358 | + Main.layoutManager.connect('monitors-changed', |
3359 | + this._relayout.bind(this)); |
3360 | + let themeContext = St.ThemeContext.get_for_stage(global.stage); |
3361 | + this._scaleChangedId = |
3362 | + themeContext.connect('notify::scale-factor', |
3363 | + this._relayout.bind(this)); |
3364 | +>>>>>>> js/ui/osdWindow.js |
3365 | this._relayout(); |
3366 | Main.uiGroup.add_child(this.actor); |
3367 | }, |
3368 | |
3369 | +<<<<<<< js/ui/osdWindow.js |
3370 | +======= |
3371 | + _onDestroy() { |
3372 | + if (this._monitorsChangedId) |
3373 | + Main.layoutManager.disconnect(this._monitorsChangedId); |
3374 | + this._monitorsChangedId = 0; |
3375 | + |
3376 | + let themeContext = St.ThemeContext.get_for_stage(global.stage); |
3377 | + if (this._scaleChangedId) |
3378 | + themeContext.disconnect(this._scaleChangedId); |
3379 | + this._scaleChangedId = 0; |
3380 | + }, |
3381 | + |
3382 | +>>>>>>> js/ui/osdWindow.js |
3383 | setIcon(icon) { |
3384 | this._icon.gicon = icon; |
3385 | }, |
3386 | @@ -204,7 +230,11 @@ var OsdWindow = new Lang.Class({ |
3387 | |
3388 | let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; |
3389 | this._icon.icon_size = popupSize / (2 * scaleFactor); |
3390 | +<<<<<<< js/ui/osdWindow.js |
3391 | this._box.translation_y = monitor.height / 4; |
3392 | +======= |
3393 | + this._box.translation_y = Math.round(monitor.height / 4); |
3394 | +>>>>>>> js/ui/osdWindow.js |
3395 | this._boxConstraint.minSize = popupSize; |
3396 | } |
3397 | }); |
3398 | diff --git a/js/ui/overview.js b/js/ui/overview.js |
3399 | index 2240576..8ee8de3 100644 |
3400 | --- a/js/ui/overview.js |
3401 | +++ b/js/ui/overview.js |
3402 | @@ -393,10 +393,15 @@ var Overview = new Lang.Class({ |
3403 | if (!Main.layoutManager.primaryMonitor) |
3404 | return; |
3405 | |
3406 | +<<<<<<< js/ui/overview.js |
3407 | let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex); |
3408 | |
3409 | this._coverPane.set_position(0, workArea.y); |
3410 | this._coverPane.set_size(workArea.width, workArea.height); |
3411 | +======= |
3412 | + this._coverPane.set_position(0, 0); |
3413 | + this._coverPane.set_size(global.screen_width, global.screen_height); |
3414 | +>>>>>>> js/ui/overview.js |
3415 | |
3416 | this._updateBackgrounds(); |
3417 | }, |
3418 | diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js |
3419 | index a2905ab..6ff9a0b 100644 |
3420 | --- a/js/ui/overviewControls.js |
3421 | +++ b/js/ui/overviewControls.js |
3422 | @@ -284,6 +284,14 @@ var ThumbnailsSlider = new Lang.Class({ |
3423 | return child.get_theme_node().get_length('visible-width'); |
3424 | }, |
3425 | |
3426 | +<<<<<<< js/ui/overviewControls.js |
3427 | +======= |
3428 | + _onDragEnd() { |
3429 | + this.actor.sync_hover(); |
3430 | + this.parent(); |
3431 | + }, |
3432 | + |
3433 | +>>>>>>> js/ui/overviewControls.js |
3434 | _getSlide() { |
3435 | if (!this._visible) |
3436 | return 0; |
3437 | diff --git a/js/ui/panel.js b/js/ui/panel.js |
3438 | index 2f59324..e02cf35 100644 |
3439 | --- a/js/ui/panel.js |
3440 | +++ b/js/ui/panel.js |
3441 | @@ -796,6 +796,10 @@ var Panel = new Lang.Class({ |
3442 | this.actor.connect('get-preferred-height', this._getPreferredHeight.bind(this)); |
3443 | this.actor.connect('allocate', this._allocate.bind(this)); |
3444 | this.actor.connect('button-press-event', this._onButtonPress.bind(this)); |
3445 | +<<<<<<< js/ui/panel.js |
3446 | +======= |
3447 | + this.actor.connect('touch-event', this._onButtonPress.bind(this)); |
3448 | +>>>>>>> js/ui/panel.js |
3449 | this.actor.connect('key-press-event', this._onKeyPress.bind(this)); |
3450 | |
3451 | Main.overview.connect('showing', () => { |
3452 | @@ -939,8 +943,18 @@ var Panel = new Lang.Class({ |
3453 | if (event.get_source() != actor) |
3454 | return Clutter.EVENT_PROPAGATE; |
3455 | |
3456 | +<<<<<<< js/ui/panel.js |
3457 | let button = event.get_button(); |
3458 | if (button != 1) |
3459 | +======= |
3460 | + let type = event.type(); |
3461 | + let isPress = type == Clutter.EventType.BUTTON_PRESS; |
3462 | + if (!isPress && type != Clutter.EventType.TOUCH_BEGIN) |
3463 | + return Clutter.EVENT_PROPAGATE; |
3464 | + |
3465 | + let button = isPress ? event.get_button() : -1; |
3466 | + if (isPress && button != 1) |
3467 | +>>>>>>> js/ui/panel.js |
3468 | return Clutter.EVENT_PROPAGATE; |
3469 | |
3470 | let focusWindow = global.display.focus_window; |
3471 | @@ -1079,6 +1093,10 @@ var Panel = new Lang.Class({ |
3472 | let windows = activeWorkspace.list_windows().filter(metaWindow => { |
3473 | return metaWindow.is_on_primary_monitor() && |
3474 | metaWindow.showing_on_its_workspace() && |
3475 | +<<<<<<< js/ui/panel.js |
3476 | +======= |
3477 | + !metaWindow.is_hidden() && |
3478 | +>>>>>>> js/ui/panel.js |
3479 | metaWindow.get_window_type() != Meta.WindowType.DESKTOP; |
3480 | }); |
3481 | |
3482 | diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js |
3483 | index 67b928c..b161441 100644 |
3484 | --- a/js/ui/popupMenu.js |
3485 | +++ b/js/ui/popupMenu.js |
3486 | @@ -141,8 +141,22 @@ var PopupBaseMenuItem = new Lang.Class({ |
3487 | }, |
3488 | |
3489 | _onKeyPressEvent(actor, event) { |
3490 | +<<<<<<< js/ui/popupMenu.js |
3491 | let symbol = event.get_key_symbol(); |
3492 | |
3493 | +======= |
3494 | + let state = event.get_state(); |
3495 | + |
3496 | + // if user has a modifier down (except capslock) |
3497 | + // then don't handle the key press here |
3498 | + state &= ~Clutter.ModifierType.LOCK_MASK; |
3499 | + state &= Clutter.ModifierType.MODIFIER_MASK; |
3500 | + |
3501 | + if (state) |
3502 | + return Clutter.EVENT_PROPAGATE; |
3503 | + |
3504 | + let symbol = event.get_key_symbol(); |
3505 | +>>>>>>> js/ui/popupMenu.js |
3506 | if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) { |
3507 | this.activate(event); |
3508 | return Clutter.EVENT_STOP; |
3509 | @@ -394,8 +408,14 @@ var PopupImageMenuItem = new Lang.Class({ |
3510 | _init(text, icon, params) { |
3511 | this.parent(params); |
3512 | |
3513 | +<<<<<<< js/ui/popupMenu.js |
3514 | this._icon = new St.Icon({ style_class: 'popup-menu-icon' }); |
3515 | this.actor.add_child(this._icon, { align: St.Align.END }); |
3516 | +======= |
3517 | + this._icon = new St.Icon({ style_class: 'popup-menu-icon', |
3518 | + x_align: Clutter.ActorAlign.END }); |
3519 | + this.actor.add_child(this._icon); |
3520 | +>>>>>>> js/ui/popupMenu.js |
3521 | this.label = new St.Label({ text: text }); |
3522 | this.actor.add_child(this.label); |
3523 | this.actor.label_actor = this.label; |
3524 | diff --git a/js/ui/remoteSearch.js b/js/ui/remoteSearch.js |
3525 | index 1e8e6c9..89c5e4c 100644 |
3526 | --- a/js/ui/remoteSearch.js |
3527 | +++ b/js/ui/remoteSearch.js |
3528 | @@ -295,7 +295,11 @@ var RemoteSearchProvider = new Lang.Class({ |
3529 | name: metas[i]['name'], |
3530 | description: metas[i]['description'], |
3531 | createIcon: size => { |
3532 | +<<<<<<< js/ui/remoteSearch.js |
3533 | this.createIcon(size, metas[i]); |
3534 | +======= |
3535 | + return this.createIcon(size, metas[i]); |
3536 | +>>>>>>> js/ui/remoteSearch.js |
3537 | }, |
3538 | clipboardText: metas[i]['clipboardText'] }); |
3539 | } |
3540 | diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js |
3541 | index 82deab5..0a0218d 100644 |
3542 | --- a/js/ui/runDialog.js |
3543 | +++ b/js/ui/runDialog.js |
3544 | @@ -114,6 +114,7 @@ var RunDialog = new Lang.Class({ |
3545 | |
3546 | this._history = new History.HistoryManager({ gsettingsKey: HISTORY_KEY, |
3547 | entry: this._entryText }); |
3548 | +<<<<<<< js/ui/runDialog.js |
3549 | this._entryText.connect('key-press-event', (o, e) => { |
3550 | let symbol = e.get_key_symbol(); |
3551 | if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) { |
3552 | @@ -126,6 +127,18 @@ var RunDialog = new Lang.Class({ |
3553 | |
3554 | return Clutter.EVENT_STOP; |
3555 | } |
3556 | +======= |
3557 | + this._entryText.connect('activate', (o) => { |
3558 | + this.popModal(); |
3559 | + this._run(o.get_text(), |
3560 | + Clutter.get_current_event().get_state() & Clutter.ModifierType.CONTROL_MASK); |
3561 | + if (!this._commandError || |
3562 | + !this.pushModal()) |
3563 | + this.close(); |
3564 | + }); |
3565 | + this._entryText.connect('key-press-event', (o, e) => { |
3566 | + let symbol = e.get_key_symbol(); |
3567 | +>>>>>>> js/ui/runDialog.js |
3568 | if (symbol == Clutter.Tab) { |
3569 | let text = o.get_text(); |
3570 | let prefix; |
3571 | diff --git a/js/ui/search.js b/js/ui/search.js |
3572 | index 1fb54b4..59a4a11 100644 |
3573 | --- a/js/ui/search.js |
3574 | +++ b/js/ui/search.js |
3575 | @@ -192,6 +192,10 @@ var SearchResultsBase = new Lang.Class({ |
3576 | }, |
3577 | |
3578 | clear() { |
3579 | +<<<<<<< js/ui/search.js |
3580 | +======= |
3581 | + this._cancellable.cancel(); |
3582 | +>>>>>>> js/ui/search.js |
3583 | for (let resultId in this._resultDisplays) |
3584 | this._resultDisplays[resultId].actor.destroy(); |
3585 | this._resultDisplays = {}; |
3586 | @@ -225,6 +229,15 @@ var SearchResultsBase = new Lang.Class({ |
3587 | this._cancellable.reset(); |
3588 | |
3589 | this.provider.getResultMetas(metasNeeded, metas => { |
3590 | +<<<<<<< js/ui/search.js |
3591 | +======= |
3592 | + if (this._cancellable.is_cancelled()) { |
3593 | + if (metas.length > 0) |
3594 | + log(`Search provider ${this.provider.id} returned results after the request was canceled`); |
3595 | + callback(false); |
3596 | + return; |
3597 | + } |
3598 | +>>>>>>> js/ui/search.js |
3599 | if (metas.length != metasNeeded.length) { |
3600 | log('Wrong number of result metas returned by search provider ' + this.provider.id + |
3601 | ': expected ' + metasNeeded.length + ' but got ' + metas.length); |
3602 | diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js |
3603 | index 3dce2c9..184a5cf 100644 |
3604 | --- a/js/ui/status/keyboard.js |
3605 | +++ b/js/ui/status/keyboard.js |
3606 | @@ -360,11 +360,22 @@ var InputSourceManager = new Lang.Class({ |
3607 | this._settings.connect('per-window-changed', this._sourcesPerWindowChanged.bind(this)); |
3608 | this._sourcesPerWindowChanged(); |
3609 | this._disableIBus = false; |
3610 | +<<<<<<< js/ui/status/keyboard.js |
3611 | }, |
3612 | |
3613 | reload() { |
3614 | this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions); |
3615 | this._inputSourcesChanged(); |
3616 | +======= |
3617 | + this._reloading = false; |
3618 | + }, |
3619 | + |
3620 | + reload() { |
3621 | + this._reloading = true; |
3622 | + this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions); |
3623 | + this._inputSourcesChanged(); |
3624 | + this._reloading = false; |
3625 | +>>>>>>> js/ui/status/keyboard.js |
3626 | }, |
3627 | |
3628 | _ibusReadyCallback(im, ready) { |
3629 | @@ -458,7 +469,19 @@ var InputSourceManager = new Lang.Class({ |
3630 | }, |
3631 | |
3632 | activateInputSource(is, interactive) { |
3633 | +<<<<<<< js/ui/status/keyboard.js |
3634 | KeyboardManager.holdKeyboard(); |
3635 | +======= |
3636 | + // The focus changes during holdKeyboard/releaseKeyboard may trick |
3637 | + // the client into hiding UI containing the currently focused entry. |
3638 | + // So holdKeyboard/releaseKeyboard are not called when |
3639 | + // 'set-content-type' signal is received. |
3640 | + // E.g. Focusing on a password entry in a popup in Xorg Firefox |
3641 | + // will emit 'set-content-type' signal. |
3642 | + // https://gitlab.gnome.org/GNOME/gnome-shell/issues/391 |
3643 | + if (!this._reloading) |
3644 | + KeyboardManager.holdKeyboard(); |
3645 | +>>>>>>> js/ui/status/keyboard.js |
3646 | this._keyboardManager.apply(is.xkbId); |
3647 | |
3648 | // All the "xkb:..." IBus engines simply "echo" back symbols, |
3649 | @@ -473,7 +496,14 @@ var InputSourceManager = new Lang.Class({ |
3650 | else |
3651 | engine = 'xkb:us::eng'; |
3652 | |
3653 | +<<<<<<< js/ui/status/keyboard.js |
3654 | this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard); |
3655 | +======= |
3656 | + if (!this._reloading) |
3657 | + this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard); |
3658 | + else |
3659 | + this._ibusManager.setEngine(engine); |
3660 | +>>>>>>> js/ui/status/keyboard.js |
3661 | this._currentInputSourceChanged(is); |
3662 | |
3663 | if (interactive) |
3664 | diff --git a/js/ui/status/network.js b/js/ui/status/network.js |
3665 | index 54ed5ca..53a5c2e 100644 |
3666 | --- a/js/ui/status/network.js |
3667 | +++ b/js/ui/status/network.js |
3668 | @@ -419,12 +419,23 @@ var NMConnectionDevice = new Lang.Class({ |
3669 | this._deactivateItem.actor.visible = this._device.state > NM.DeviceState.DISCONNECTED; |
3670 | |
3671 | if (this._activeConnection == null) { |
3672 | +<<<<<<< js/ui/status/network.js |
3673 | this._activeConnection = this._device.active_connection; |
3674 | |
3675 | if (this._activeConnection) { |
3676 | ensureActiveConnectionProps(this._activeConnection, this._client); |
3677 | let item = this._connectionItems.get(this._activeConnection.connection.get_uuid()); |
3678 | item.setActiveConnection(this._activeConnection); |
3679 | +======= |
3680 | + let activeConnection = this._device.active_connection; |
3681 | + if (activeConnection && activeConnection.connection) { |
3682 | + let item = this._connectionItems.get(activeConnection.connection.get_uuid()); |
3683 | + if (item) { |
3684 | + this._activeConnection = activeConnection; |
3685 | + ensureActiveConnectionProps(this._activeConnection, this._client); |
3686 | + item.setActiveConnection(this._activeConnection); |
3687 | + } |
3688 | +>>>>>>> js/ui/status/network.js |
3689 | } |
3690 | } |
3691 | |
3692 | @@ -1944,6 +1955,10 @@ var NMApplet = new Lang.Class({ |
3693 | this.indicators.visible = this._client.nm_running; |
3694 | this.menu.actor.visible = this._client.networking_enabled; |
3695 | |
3696 | +<<<<<<< js/ui/status/network.js |
3697 | +======= |
3698 | + this._updateIcon(); |
3699 | +>>>>>>> js/ui/status/network.js |
3700 | this._syncConnectivity(); |
3701 | }, |
3702 | |
3703 | diff --git a/js/ui/status/system.js b/js/ui/status/system.js |
3704 | index 68a0b4b..c1c92e8 100644 |
3705 | --- a/js/ui/status/system.js |
3706 | +++ b/js/ui/status/system.js |
3707 | @@ -58,6 +58,12 @@ var AltSwitcher = new Lang.Class({ |
3708 | childToShow = this._standard; |
3709 | } else if (this._alternate.visible) { |
3710 | childToShow = this._alternate; |
3711 | +<<<<<<< js/ui/status/system.js |
3712 | +======= |
3713 | + } else { |
3714 | + this.actor.hide(); |
3715 | + return; |
3716 | +>>>>>>> js/ui/status/system.js |
3717 | } |
3718 | |
3719 | let childShown = this.actor.get_child(); |
3720 | @@ -79,7 +85,11 @@ var AltSwitcher = new Lang.Class({ |
3721 | global.sync_pointer(); |
3722 | } |
3723 | |
3724 | +<<<<<<< js/ui/status/system.js |
3725 | this.actor.visible = (childToShow != null); |
3726 | +======= |
3727 | + this.actor.show(); |
3728 | +>>>>>>> js/ui/status/system.js |
3729 | }, |
3730 | |
3731 | _onDestroy() { |
3732 | diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js |
3733 | index 91bc222..832538a 100644 |
3734 | --- a/js/ui/viewSelector.js |
3735 | +++ b/js/ui/viewSelector.js |
3736 | @@ -311,6 +311,10 @@ var ViewSelector = new Lang.Class({ |
3737 | }, |
3738 | |
3739 | hide() { |
3740 | +<<<<<<< js/ui/viewSelector.js |
3741 | +======= |
3742 | + this.reset(); |
3743 | +>>>>>>> js/ui/viewSelector.js |
3744 | this._workspacesDisplay.hide(); |
3745 | }, |
3746 | |
3747 | @@ -459,7 +463,15 @@ var ViewSelector = new Lang.Class({ |
3748 | }, |
3749 | |
3750 | reset() { |
3751 | +<<<<<<< js/ui/viewSelector.js |
3752 | global.stage.set_key_focus(null); |
3753 | +======= |
3754 | + // Don't drop the key focus on Clutter's side if anything but the |
3755 | + // overview has pushed a modal (e.g. system modals when activated using |
3756 | + // the overview). |
3757 | + if (Main.modalCount <= 1) |
3758 | + global.stage.set_key_focus(null); |
3759 | +>>>>>>> js/ui/viewSelector.js |
3760 | |
3761 | this._entry.text = ''; |
3762 | |
3763 | diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js |
3764 | index d450f35..c9b66a5 100644 |
3765 | --- a/js/ui/windowManager.js |
3766 | +++ b/js/ui/windowManager.js |
3767 | @@ -24,7 +24,11 @@ const EdgeDragAction = imports.ui.edgeDragAction; |
3768 | const CloseDialog = imports.ui.closeDialog; |
3769 | const SwitchMonitor = imports.ui.switchMonitor; |
3770 | |
3771 | +<<<<<<< js/ui/windowManager.js |
3772 | const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings'; |
3773 | +======= |
3774 | +var SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings'; |
3775 | +>>>>>>> js/ui/windowManager.js |
3776 | var MINIMIZE_WINDOW_ANIMATION_TIME = 0.2; |
3777 | var SHOW_WINDOW_ANIMATION_TIME = 0.15; |
3778 | var DIALOG_SHOW_WINDOW_ANIMATION_TIME = 0.1; |
3779 | @@ -627,8 +631,13 @@ var AppSwitchAction = new Lang.Class({ |
3780 | |
3781 | if (this.get_n_current_points() == 3) { |
3782 | for (let i = 0; i < this.get_n_current_points(); i++) { |
3783 | +<<<<<<< js/ui/windowManager.js |
3784 | [startX, startY] = this.get_press_coords(i); |
3785 | [x, y] = this.get_motion_coords(i); |
3786 | +======= |
3787 | + let [startX, startY] = this.get_press_coords(i); |
3788 | + let [x, y] = this.get_motion_coords(i); |
3789 | +>>>>>>> js/ui/windowManager.js |
3790 | |
3791 | if (Math.abs(x - startX) > MOTION_THRESHOLD || |
3792 | Math.abs(y - startY) > MOTION_THRESHOLD) |
3793 | @@ -1173,6 +1182,13 @@ var WindowManager = new Lang.Class({ |
3794 | yScale = geom.height / actor.height; |
3795 | } else { |
3796 | let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()]; |
3797 | +<<<<<<< js/ui/windowManager.js |
3798 | +======= |
3799 | + if (!monitor) { |
3800 | + this._minimizeWindowDone(); |
3801 | + return; |
3802 | + } |
3803 | +>>>>>>> js/ui/windowManager.js |
3804 | xDest = monitor.x; |
3805 | yDest = monitor.y; |
3806 | if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) |
3807 | @@ -1248,6 +1264,14 @@ var WindowManager = new Lang.Class({ |
3808 | geom.height / actor.height); |
3809 | } else { |
3810 | let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()]; |
3811 | +<<<<<<< js/ui/windowManager.js |
3812 | +======= |
3813 | + if (!monitor) { |
3814 | + actor.show(); |
3815 | + this._unminimizeWindowDone(); |
3816 | + return; |
3817 | + } |
3818 | +>>>>>>> js/ui/windowManager.js |
3819 | actor.set_position(monitor.x, monitor.y); |
3820 | if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) |
3821 | actor.x += monitor.width; |
3822 | diff --git a/js/ui/windowMenu.js b/js/ui/windowMenu.js |
3823 | index f0e564b..cb6e795 100644 |
3824 | --- a/js/ui/windowMenu.js |
3825 | +++ b/js/ui/windowMenu.js |
3826 | @@ -128,11 +128,18 @@ var WindowMenu = new Lang.Class({ |
3827 | |
3828 | let screen = global.screen; |
3829 | let nMonitors = screen.get_n_monitors(); |
3830 | +<<<<<<< js/ui/windowMenu.js |
3831 | if (nMonitors > 1) { |
3832 | this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); |
3833 | |
3834 | let monitorIndex = window.get_monitor(); |
3835 | |
3836 | +======= |
3837 | + let monitorIndex = window.get_monitor(); |
3838 | + if (nMonitors > 1 && monitorIndex >= 0) { |
3839 | + this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); |
3840 | + |
3841 | +>>>>>>> js/ui/windowMenu.js |
3842 | let dir = Meta.ScreenDirection.UP; |
3843 | let upMonitorIndex = |
3844 | screen.get_monitor_neighbor_index(monitorIndex, dir); |
3845 | diff --git a/js/ui/workspace.js b/js/ui/workspace.js |
3846 | index 1e121b7..bc2bb2f 100644 |
3847 | --- a/js/ui/workspace.js |
3848 | +++ b/js/ui/workspace.js |
3849 | @@ -137,8 +137,15 @@ var WindowClone = new Lang.Class({ |
3850 | this._dragSlot = [0, 0, 0, 0]; |
3851 | this._stackAbove = null; |
3852 | |
3853 | +<<<<<<< js/ui/workspace.js |
3854 | this._windowClone._updateId = this.metaWindow.connect('size-changed', |
3855 | this._onRealWindowSizeChanged.bind(this)); |
3856 | +======= |
3857 | + this._windowClone._sizeChangedId = this.metaWindow.connect('size-changed', |
3858 | + this._onMetaWindowSizeChanged.bind(this)); |
3859 | + this._windowClone._posChangedId = this.metaWindow.connect('position-changed', |
3860 | + this._computeBoundingBox.bind(this)); |
3861 | +>>>>>>> js/ui/workspace.js |
3862 | this._windowClone._destroyId = |
3863 | this.realWindow.connect('destroy', () => { |
3864 | // First destroy the clone and then destroy everything |
3865 | @@ -206,8 +213,12 @@ var WindowClone = new Lang.Class({ |
3866 | |
3867 | addAttachedDialog(win) { |
3868 | this._doAddAttachedDialog(win, win.get_compositor_private()); |
3869 | +<<<<<<< js/ui/workspace.js |
3870 | this._computeBoundingBox(); |
3871 | this.emit('size-changed'); |
3872 | +======= |
3873 | + this._onMetaWindowSizeChanged(); |
3874 | +>>>>>>> js/ui/workspace.js |
3875 | }, |
3876 | |
3877 | hasAttachedDialogs() { |
3878 | @@ -216,6 +227,7 @@ var WindowClone = new Lang.Class({ |
3879 | |
3880 | _doAddAttachedDialog(metaWin, realWin) { |
3881 | let clone = new Clutter.Clone({ source: realWin }); |
3882 | +<<<<<<< js/ui/workspace.js |
3883 | clone._updateId = metaWin.connect('size-changed', () => { |
3884 | this._computeBoundingBox(); |
3885 | this.emit('size-changed'); |
3886 | @@ -225,6 +237,16 @@ var WindowClone = new Lang.Class({ |
3887 | |
3888 | this._computeBoundingBox(); |
3889 | this.emit('size-changed'); |
3890 | +======= |
3891 | + clone._sizeChangedId = metaWin.connect('size-changed', |
3892 | + this._onMetaWindowSizeChanged.bind(this)); |
3893 | + clone._posChangedId = metaWin.connect('position-changed', |
3894 | + this._onMetaWindowSizeChanged.bind(this)); |
3895 | + clone._destroyId = realWin.connect('destroy', () => { |
3896 | + clone.destroy(); |
3897 | + |
3898 | + this._onMetaWindowSizeChanged(); |
3899 | +>>>>>>> js/ui/workspace.js |
3900 | }); |
3901 | this.actor.add_child(clone); |
3902 | }, |
3903 | @@ -321,12 +343,21 @@ var WindowClone = new Lang.Class({ |
3904 | else |
3905 | realWindow = child.source; |
3906 | |
3907 | +<<<<<<< js/ui/workspace.js |
3908 | realWindow.meta_window.disconnect(child._updateId); |
3909 | +======= |
3910 | + realWindow.meta_window.disconnect(child._sizeChangedId); |
3911 | + realWindow.meta_window.disconnect(child._posChangedId); |
3912 | +>>>>>>> js/ui/workspace.js |
3913 | realWindow.disconnect(child._destroyId); |
3914 | }); |
3915 | }, |
3916 | |
3917 | +<<<<<<< js/ui/workspace.js |
3918 | _onRealWindowSizeChanged() { |
3919 | +======= |
3920 | + _onMetaWindowSizeChanged() { |
3921 | +>>>>>>> js/ui/workspace.js |
3922 | this._computeBoundingBox(); |
3923 | this.emit('size-changed'); |
3924 | }, |
3925 | @@ -469,7 +500,10 @@ var WindowOverlay = new Lang.Class({ |
3926 | this._windowAddedId = 0; |
3927 | |
3928 | button.hide(); |
3929 | +<<<<<<< js/ui/workspace.js |
3930 | title.hide(); |
3931 | +======= |
3932 | +>>>>>>> js/ui/workspace.js |
3933 | |
3934 | this.title = title; |
3935 | this.closeButton = button; |
3936 | @@ -544,12 +578,19 @@ var WindowOverlay = new Lang.Class({ |
3937 | let titleX = cloneX + (cloneWidth - title.width) / 2; |
3938 | let titleY = cloneY + cloneHeight - (title.height - this.borderSize) / 2; |
3939 | |
3940 | +<<<<<<< js/ui/workspace.js |
3941 | if (animate) { |
3942 | this._animateOverlayActor(title, Math.floor(titleX), Math.floor(titleY), title.width); |
3943 | } else { |
3944 | title.width = title.width; |
3945 | title.set_position(Math.floor(titleX), Math.floor(titleY)); |
3946 | } |
3947 | +======= |
3948 | + if (animate) |
3949 | + this._animateOverlayActor(title, Math.floor(titleX), Math.floor(titleY)); |
3950 | + else |
3951 | + title.set_position(Math.floor(titleX), Math.floor(titleY)); |
3952 | +>>>>>>> js/ui/workspace.js |
3953 | |
3954 | let borderX = cloneX - this.borderSize; |
3955 | let borderY = cloneY - this.borderSize; |
3956 | @@ -568,10 +609,19 @@ var WindowOverlay = new Lang.Class({ |
3957 | _animateOverlayActor(actor, x, y, width, height) { |
3958 | let params = { x: x, |
3959 | y: y, |
3960 | +<<<<<<< js/ui/workspace.js |
3961 | width: width, |
3962 | time: Overview.ANIMATION_TIME, |
3963 | transition: 'easeOutQuad' }; |
3964 | |
3965 | +======= |
3966 | + time: Overview.ANIMATION_TIME, |
3967 | + transition: 'easeOutQuad' }; |
3968 | + |
3969 | + if (width !== undefined) |
3970 | + params.width = width; |
3971 | + |
3972 | +>>>>>>> js/ui/workspace.js |
3973 | if (height !== undefined) |
3974 | params.height = height; |
3975 | |
3976 | @@ -1431,6 +1481,7 @@ var Workspace = new Lang.Class({ |
3977 | _doRemoveWindow(metaWin) { |
3978 | let win = metaWin.get_compositor_private(); |
3979 | |
3980 | +<<<<<<< js/ui/workspace.js |
3981 | // find the position of the window in our list |
3982 | let index = this._lookupIndex (metaWin); |
3983 | |
3984 | @@ -1459,6 +1510,28 @@ var Workspace = new Lang.Class({ |
3985 | } |
3986 | clone.destroy(); |
3987 | |
3988 | +======= |
3989 | + let clone = this._removeWindowClone(metaWin); |
3990 | + |
3991 | + if (clone) { |
3992 | + // If metaWin.get_compositor_private() returned non-NULL, that |
3993 | + // means the window still exists (and is just being moved to |
3994 | + // another workspace or something), so set its overviewHint |
3995 | + // accordingly. (If it returned NULL, then the window is being |
3996 | + // destroyed; we'd like to animate this, but it's too late at |
3997 | + // this point.) |
3998 | + if (win) { |
3999 | + let [stageX, stageY] = clone.actor.get_transformed_position(); |
4000 | + let [stageWidth, stageHeight] = clone.actor.get_transformed_size(); |
4001 | + win._overviewHint = { |
4002 | + x: stageX, |
4003 | + y: stageY, |
4004 | + scale: stageWidth / clone.actor.width |
4005 | + }; |
4006 | + } |
4007 | + clone.destroy(); |
4008 | + } |
4009 | +>>>>>>> js/ui/workspace.js |
4010 | |
4011 | // We need to reposition the windows; to avoid shuffling windows |
4012 | // around while the user is interacting with the workspace, we delay |
4013 | @@ -1514,7 +1587,11 @@ var Workspace = new Lang.Class({ |
4014 | if (metaWin.is_attached_dialog()) { |
4015 | let parent = metaWin.get_transient_for(); |
4016 | while (parent.is_attached_dialog()) |
4017 | +<<<<<<< js/ui/workspace.js |
4018 | parent = metaWin.get_transient_for(); |
4019 | +======= |
4020 | + parent = parent.get_transient_for(); |
4021 | +>>>>>>> js/ui/workspace.js |
4022 | |
4023 | let idx = this._lookupIndex (parent); |
4024 | if (idx < 0) { |
4025 | @@ -1848,6 +1925,12 @@ var Workspace = new Lang.Class({ |
4026 | clone.connect('size-changed', () => { |
4027 | this._recalculateWindowPositions(WindowPositionFlags.NONE); |
4028 | }); |
4029 | +<<<<<<< js/ui/workspace.js |
4030 | +======= |
4031 | + clone.actor.connect('destroy', () => { |
4032 | + this._removeWindowClone(clone.metaWindow); |
4033 | + }); |
4034 | +>>>>>>> js/ui/workspace.js |
4035 | |
4036 | this.actor.add_actor(clone.actor); |
4037 | |
4038 | @@ -1869,6 +1952,20 @@ var Workspace = new Lang.Class({ |
4039 | return [clone, overlay]; |
4040 | }, |
4041 | |
4042 | +<<<<<<< js/ui/workspace.js |
4043 | +======= |
4044 | + _removeWindowClone(metaWin) { |
4045 | + // find the position of the window in our list |
4046 | + let index = this._lookupIndex (metaWin); |
4047 | + |
4048 | + if (index == -1) |
4049 | + return null; |
4050 | + |
4051 | + this._windowOverlays.splice(index, 1); |
4052 | + return this._windows.splice(index, 1).pop(); |
4053 | + }, |
4054 | + |
4055 | +>>>>>>> js/ui/workspace.js |
4056 | _onShowOverlayClose(windowOverlay) { |
4057 | for (let i = 0; i < this._windowOverlays.length; i++) { |
4058 | let overlay = this._windowOverlays[i]; |
4059 | diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js |
4060 | index 7d5d2c0..0b55bea 100644 |
4061 | --- a/js/ui/workspaceThumbnail.js |
4062 | +++ b/js/ui/workspaceThumbnail.js |
4063 | @@ -31,7 +31,11 @@ var WORKSPACE_CUT_SIZE = 10; |
4064 | |
4065 | var WORKSPACE_KEEP_ALIVE_TIME = 100; |
4066 | |
4067 | +<<<<<<< js/ui/workspaceThumbnail.js |
4068 | const OVERRIDE_SCHEMA = 'org.gnome.shell.overrides'; |
4069 | +======= |
4070 | +var OVERRIDE_SCHEMA = 'org.gnome.shell.overrides'; |
4071 | +>>>>>>> js/ui/workspaceThumbnail.js |
4072 | |
4073 | /* A layout manager that requests size only for primary_actor, but then allocates |
4074 | all using a fixed layout */ |
4075 | @@ -68,7 +72,11 @@ var WindowClone = new Lang.Class({ |
4076 | this.realWindow = realWindow; |
4077 | this.metaWindow = realWindow.meta_window; |
4078 | |
4079 | +<<<<<<< js/ui/workspaceThumbnail.js |
4080 | this.clone._updateId = this.metaWindow.connect('position-changed', |
4081 | +======= |
4082 | + this.clone._updateId = this.realWindow.connect('notify::position', |
4083 | +>>>>>>> js/ui/workspaceThumbnail.js |
4084 | this._onPositionChanged.bind(this)); |
4085 | this.clone._destroyId = this.realWindow.connect('destroy', () => { |
4086 | // First destroy the clone and then destroy everything |
4087 | @@ -153,7 +161,11 @@ var WindowClone = new Lang.Class({ |
4088 | let clone = new Clutter.Clone({ source: realDialog }); |
4089 | this._updateDialogPosition(realDialog, clone); |
4090 | |
4091 | +<<<<<<< js/ui/workspaceThumbnail.js |
4092 | clone._updateId = metaDialog.connect('position-changed', dialog => { |
4093 | +======= |
4094 | + clone._updateId = realDialog.connect('notify::position', dialog => { |
4095 | +>>>>>>> js/ui/workspaceThumbnail.js |
4096 | this._updateDialogPosition(dialog, clone); |
4097 | }); |
4098 | clone._destroyId = realDialog.connect('destroy', () => { |
4099 | @@ -171,7 +183,10 @@ var WindowClone = new Lang.Class({ |
4100 | }, |
4101 | |
4102 | _onPositionChanged() { |
4103 | +<<<<<<< js/ui/workspaceThumbnail.js |
4104 | let rect = this.metaWindow.get_frame_rect(); |
4105 | +======= |
4106 | +>>>>>>> js/ui/workspaceThumbnail.js |
4107 | this.actor.set_position(this.realWindow.x, this.realWindow.y); |
4108 | }, |
4109 | |
4110 | @@ -179,7 +194,11 @@ var WindowClone = new Lang.Class({ |
4111 | this.actor.get_children().forEach(child => { |
4112 | let realWindow = child.source; |
4113 | |
4114 | +<<<<<<< js/ui/workspaceThumbnail.js |
4115 | realWindow.meta_window.disconnect(child._updateId); |
4116 | +======= |
4117 | + realWindow.disconnect(child._updateId); |
4118 | +>>>>>>> js/ui/workspaceThumbnail.js |
4119 | realWindow.disconnect(child._destroyId); |
4120 | }); |
4121 | }, |
4122 | @@ -241,7 +260,11 @@ var WindowClone = new Lang.Class({ |
4123 | Signals.addSignalMethods(WindowClone.prototype); |
4124 | |
4125 | |
4126 | +<<<<<<< js/ui/workspaceThumbnail.js |
4127 | const ThumbnailState = { |
4128 | +======= |
4129 | +var ThumbnailState = { |
4130 | +>>>>>>> js/ui/workspaceThumbnail.js |
4131 | NEW : 0, |
4132 | ANIMATING_IN : 1, |
4133 | NORMAL: 2, |
4134 | @@ -275,8 +298,13 @@ var WorkspaceThumbnail = new Lang.Class({ |
4135 | |
4136 | this._createBackground(); |
4137 | |
4138 | +<<<<<<< js/ui/workspaceThumbnail.js |
4139 | let monitor = Main.layoutManager.primaryMonitor; |
4140 | this.setPorthole(monitor.x, monitor.y, monitor.width, monitor.height); |
4141 | +======= |
4142 | + let workArea = Main.layoutManager.getWorkAreaForMonitor(this.monitorIndex); |
4143 | + this.setPorthole(workArea.x, workArea.y, workArea.width, workArea.height); |
4144 | +>>>>>>> js/ui/workspaceThumbnail.js |
4145 | |
4146 | let windows = global.get_window_actors().filter(actor => { |
4147 | let win = actor.meta_window; |
4148 | @@ -321,8 +349,11 @@ var WorkspaceThumbnail = new Lang.Class({ |
4149 | }, |
4150 | |
4151 | setPorthole(x, y, width, height) { |
4152 | +<<<<<<< js/ui/workspaceThumbnail.js |
4153 | this._portholeX = x; |
4154 | this._portholeY = y; |
4155 | +======= |
4156 | +>>>>>>> js/ui/workspaceThumbnail.js |
4157 | this.actor.set_size(width, height); |
4158 | this._contents.set_position(-x, -y); |
4159 | }, |
4160 | @@ -374,6 +405,7 @@ var WorkspaceThumbnail = new Lang.Class({ |
4161 | }, |
4162 | |
4163 | _doRemoveWindow(metaWin) { |
4164 | +<<<<<<< js/ui/workspaceThumbnail.js |
4165 | let win = metaWin.get_compositor_private(); |
4166 | |
4167 | // find the position of the window in our list |
4168 | @@ -386,6 +418,11 @@ var WorkspaceThumbnail = new Lang.Class({ |
4169 | this._windows.splice(index, 1); |
4170 | |
4171 | clone.destroy(); |
4172 | +======= |
4173 | + let clone = this._removeWindowClone(metaWin); |
4174 | + if (clone) |
4175 | + clone.destroy(); |
4176 | +>>>>>>> js/ui/workspaceThumbnail.js |
4177 | }, |
4178 | |
4179 | _doAddWindow(metaWin) { |
4180 | @@ -428,7 +465,11 @@ var WorkspaceThumbnail = new Lang.Class({ |
4181 | } else if (metaWin.is_attached_dialog()) { |
4182 | let parent = metaWin.get_transient_for(); |
4183 | while (parent.is_attached_dialog()) |
4184 | +<<<<<<< js/ui/workspaceThumbnail.js |
4185 | parent = metaWin.get_transient_for(); |
4186 | +======= |
4187 | + parent = parent.get_transient_for(); |
4188 | +>>>>>>> js/ui/workspaceThumbnail.js |
4189 | |
4190 | let idx = this._lookupIndex (parent); |
4191 | if (idx < 0) { |
4192 | @@ -537,6 +578,12 @@ var WorkspaceThumbnail = new Lang.Class({ |
4193 | clone.connect('drag-end', () => { |
4194 | Main.overview.endWindowDrag(clone.metaWindow); |
4195 | }); |
4196 | +<<<<<<< js/ui/workspaceThumbnail.js |
4197 | +======= |
4198 | + clone.actor.connect('destroy', () => { |
4199 | + this._removeWindowClone(clone.metaWindow); |
4200 | + }); |
4201 | +>>>>>>> js/ui/workspaceThumbnail.js |
4202 | this._contents.add_actor(clone.actor); |
4203 | |
4204 | if (this._windows.length == 0) |
4205 | @@ -549,6 +596,19 @@ var WorkspaceThumbnail = new Lang.Class({ |
4206 | return clone; |
4207 | }, |
4208 | |
4209 | +<<<<<<< js/ui/workspaceThumbnail.js |
4210 | +======= |
4211 | + _removeWindowClone(metaWin) { |
4212 | + // find the position of the window in our list |
4213 | + let index = this._lookupIndex (metaWin); |
4214 | + |
4215 | + if (index == -1) |
4216 | + return null; |
4217 | + |
4218 | + return this._windows.splice(index, 1).pop(); |
4219 | + }, |
4220 | + |
4221 | +>>>>>>> js/ui/workspaceThumbnail.js |
4222 | activate(time) { |
4223 | if (this.state > ThumbnailState.NORMAL) |
4224 | return; |
4225 | @@ -1159,7 +1219,11 @@ var ThumbnailsBox = new Lang.Class({ |
4226 | // The "porthole" is the portion of the screen that we show in the |
4227 | // workspaces |
4228 | _ensurePorthole() { |
4229 | +<<<<<<< js/ui/workspaceThumbnail.js |
4230 | if (!Main.layoutManager.primaryMonitor) |
4231 | +======= |
4232 | + if (!Main.layoutManager.primaryMonitor || !Main.overview.visible) |
4233 | +>>>>>>> js/ui/workspaceThumbnail.js |
4234 | return false; |
4235 | |
4236 | if (!this._porthole) |
4237 | diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js |
4238 | index 563e43d..28b6d2e 100644 |
4239 | --- a/js/ui/workspacesView.js |
4240 | +++ b/js/ui/workspacesView.js |
4241 | @@ -470,6 +470,10 @@ var WorkspacesDisplay = new Lang.Class({ |
4242 | this._switchWorkspaceNotifyId = 0; |
4243 | |
4244 | this._notifyOpacityId = 0; |
4245 | +<<<<<<< js/ui/workspacesView.js |
4246 | +======= |
4247 | + this._restackedNotifyId = 0; |
4248 | +>>>>>>> js/ui/workspacesView.js |
4249 | this._scrollEventId = 0; |
4250 | this._keyPressEventId = 0; |
4251 | |
4252 | diff --git a/meson.build b/meson.build |
4253 | index bfc2ff7..298dbc3 100644 |
4254 | --- a/meson.build |
4255 | +++ b/meson.build |
4256 | @@ -1,5 +1,9 @@ |
4257 | project('gnome-shell', 'c', |
4258 | +<<<<<<< meson.build |
4259 | version: '3.28.1', |
4260 | +======= |
4261 | + version: '3.28.3', |
4262 | +>>>>>>> meson.build |
4263 | meson_version: '>= 0.42.0', |
4264 | license: 'GPLv2+' |
4265 | ) |
4266 | diff --git a/po/af.po b/po/af.po |
4267 | index 72ecaa6..5b848c2 100644 |
4268 | --- a/po/af.po |
4269 | +++ b/po/af.po |
4270 | @@ -3,6 +3,7 @@ |
4271 | # This file is distributed under the same license as the gnome-shell package. |
4272 | # F Wolff <friedel@translate.org.za>, 2011, 2013, 2014, 2015, 2016. |
4273 | # Dawid Loubser <dawid.loubser@ibi.co.za>, 2013. |
4274 | +<<<<<<< po/af.po |
4275 | msgid "" |
4276 | msgstr "" |
4277 | "Project-Id-Version: gnome-shell master\n" |
4278 | @@ -12,11 +13,24 @@ msgstr "" |
4279 | "PO-Revision-Date: 2016-02-29 19:51+0200\n" |
4280 | "Last-Translator: F Wolff <friedel@translate.org.za>\n" |
4281 | "Language-Team: translate-discuss-af@lists.sourceforge.net\n" |
4282 | +======= |
4283 | +# Pieter Schoeman <pieter@sonbesie.co.za>, 2017. |
4284 | +# |
4285 | +msgid "" |
4286 | +msgstr "" |
4287 | +"Project-Id-Version: gnome-shell master\n" |
4288 | +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" |
4289 | +"POT-Creation-Date: 2018-01-30 15:45+0000\n" |
4290 | +"PO-Revision-Date: 2018-02-10 11:12+0200\n" |
4291 | +"Last-Translator: Pieter Schalk Schoeman <pieter@sonbesie.co.za>\n" |
4292 | +"Language-Team: Afrikaans <pieter@sonbesie.co.za>\n" |
4293 | +>>>>>>> po/af.po |
4294 | "Language: af\n" |
4295 | "MIME-Version: 1.0\n" |
4296 | "Content-Type: text/plain; charset=UTF-8\n" |
4297 | "Content-Transfer-Encoding: 8bit\n" |
4298 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" |
4299 | +<<<<<<< po/af.po |
4300 | "X-Generator: Virtaal 1.0.0-beta1\n" |
4301 | "X-DamnedLies-Scope: partial\n" |
4302 | "X-Project-Style: gnome\n" |
4303 | @@ -62,12 +76,64 @@ msgid "Window management and application launching" |
4304 | msgstr "Vensterbestuur en toepassinglansering" |
4305 | |
4306 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 |
4307 | +======= |
4308 | +"X-Generator: Poedit 2.0.3\n" |
4309 | +"X-DamnedLies-Scope: partial\n" |
4310 | +"X-Project-Style: gnome\n" |
4311 | + |
4312 | +#: data/50-gnome-shell-system.xml:6 |
4313 | +msgid "System" |
4314 | +msgstr "Stelsel" |
4315 | + |
4316 | +#: data/50-gnome-shell-system.xml:9 |
4317 | +msgid "Show the notification list" |
4318 | +msgstr "Wys die lys van kennisgewings" |
4319 | + |
4320 | +#: data/50-gnome-shell-system.xml:12 |
4321 | +msgid "Focus the active notification" |
4322 | +msgstr "Fokus op die aktiewe kennisgewing" |
4323 | + |
4324 | +#: data/50-gnome-shell-system.xml:15 |
4325 | +msgid "Show the overview" |
4326 | +msgstr "Wys die oorsig" |
4327 | + |
4328 | +#: data/50-gnome-shell-system.xml:18 |
4329 | +msgid "Show all applications" |
4330 | +msgstr "Wys alle toepassings" |
4331 | + |
4332 | +#: data/50-gnome-shell-system.xml:21 |
4333 | +msgid "Open the application menu" |
4334 | +msgstr "Open die toepassingkieslys" |
4335 | + |
4336 | +#: data/gnome-shell-extension-prefs.desktop.in.in:4 |
4337 | +#: js/extensionPrefs/main.js:152 |
4338 | +msgid "Shell Extensions" |
4339 | +msgstr "Shell uitbreidings" |
4340 | + |
4341 | +#: data/gnome-shell-extension-prefs.desktop.in.in:5 |
4342 | +msgid "Configure GNOME Shell Extensions" |
4343 | +msgstr "Stel GNOME Shell-uitbreidings op" |
4344 | + |
4345 | +#: data/org.gnome.Shell.desktop.in.in:4 |
4346 | +msgid "GNOME Shell" |
4347 | +msgstr "GNOME Shell" |
4348 | + |
4349 | +#: data/org.gnome.Shell.desktop.in.in:5 |
4350 | +msgid "Window management and application launching" |
4351 | +msgstr "Vensterbestuur en toepassinglansering" |
4352 | + |
4353 | +#: data/org.gnome.shell.gschema.xml.in:6 |
4354 | +>>>>>>> po/af.po |
4355 | msgid "Enable internal tools useful for developers and testers from Alt-F2" |
4356 | msgstr "" |
4357 | "Aktiveer interne gereedskap wat nuttig is vir ontwikkelaars en toetsers " |
4358 | "vanaf Alt-F2" |
4359 | |
4360 | +<<<<<<< po/af.po |
4361 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 |
4362 | +======= |
4363 | +#: data/org.gnome.shell.gschema.xml.in:9 |
4364 | +>>>>>>> po/af.po |
4365 | msgid "" |
4366 | "Allows access to internal debugging and monitoring tools using the Alt-F2 " |
4367 | "dialog." |
4368 | @@ -75,11 +141,19 @@ msgstr "" |
4369 | "Laat toegang na interne ontfout- en moniteringsgereedskap toe deur die Alt-" |
4370 | "F2-dialoog te gebruik." |
4371 | |
4372 | +<<<<<<< po/af.po |
4373 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 |
4374 | msgid "UUIDs of extensions to enable" |
4375 | msgstr "UUID's van uitbreidings om te aktiveer" |
4376 | |
4377 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 |
4378 | +======= |
4379 | +#: data/org.gnome.shell.gschema.xml.in:16 |
4380 | +msgid "UUIDs of extensions to enable" |
4381 | +msgstr "UUID's van uitbreidings om te aktiveer" |
4382 | + |
4383 | +#: data/org.gnome.shell.gschema.xml.in:17 |
4384 | +>>>>>>> po/af.po |
4385 | msgid "" |
4386 | "GNOME Shell extensions have a UUID property; this key lists extensions which " |
4387 | "should be loaded. Any extension that wants to be loaded needs to be in this " |
4388 | @@ -91,11 +165,46 @@ msgstr "" |
4389 | "moet in hierdie lys verskyn. U kan ook hierdie lys manipuleer met die " |
4390 | "EnableExtension- en DisableExtension-DBus-metodes op org.gnome.Shell." |
4391 | |
4392 | +<<<<<<< po/af.po |
4393 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 |
4394 | msgid "List of desktop file IDs for favorite applications" |
4395 | msgstr "Lys van werkarealêer-ID's vir gunstelingtoepassings" |
4396 | |
4397 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 |
4398 | +======= |
4399 | +#: data/org.gnome.shell.gschema.xml.in:26 |
4400 | +msgid "Disable user extensions" |
4401 | +msgstr "Skakel gebruikers uitbreidings af" |
4402 | + |
4403 | +#: data/org.gnome.shell.gschema.xml.in:27 |
4404 | +msgid "" |
4405 | +"Disable all extensions the user has enabled without affecting the “enabled-" |
4406 | +"extension” setting." |
4407 | +msgstr "" |
4408 | +"Skakel alle uitbreidings wat die gebruiker aangeskakel het af sonder om die " |
4409 | +"\"aangeskakelde-uitbreiding\" instelling te verander." |
4410 | + |
4411 | +#: data/org.gnome.shell.gschema.xml.in:34 |
4412 | +msgid "Disables the validation of extension version compatibility" |
4413 | +msgstr "Skakel die validasie van uitbreidings weergawe versoenbaarheid af" |
4414 | + |
4415 | +#: data/org.gnome.shell.gschema.xml.in:35 |
4416 | +msgid "" |
4417 | +"GNOME Shell will only load extensions that claim to support the current " |
4418 | +"running version. Enabling this option will disable this check and try to " |
4419 | +"load all extensions regardless of the versions they claim to support." |
4420 | +msgstr "" |
4421 | +"GNOME Shell sal slegs uitbreidings laai wat die huidig geïnstalleerde " |
4422 | +"weergawe ondersteun. Deur die opsie te aktiveer sal die toets afgeskakel " |
4423 | +"word en alle uitbreidings sal gelaai kan word ongeag of hulle die weergawe " |
4424 | +"ondersteun of nie." |
4425 | + |
4426 | +#: data/org.gnome.shell.gschema.xml.in:43 |
4427 | +msgid "List of desktop file IDs for favorite applications" |
4428 | +msgstr "Lys van werkarealêer-ID's vir gunstelingtoepassings" |
4429 | + |
4430 | +#: data/org.gnome.shell.gschema.xml.in:44 |
4431 | +>>>>>>> po/af.po |
4432 | msgid "" |
4433 | "The applications corresponding to these identifiers will be displayed in the " |
4434 | "favorites area." |
4435 | @@ -103,6 +212,7 @@ msgstr "" |
4436 | "Die toepassings wat ooreenstem met dié identifiseerders sal in die " |
4437 | "gunstelinge-area vertoon word." |
4438 | |
4439 | +<<<<<<< po/af.po |
4440 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 |
4441 | msgid "History for command (Alt-F2) dialog" |
4442 | msgstr "Geskiedenis vir die opdrag-dialoogvenster (Alt-F2)" |
4443 | @@ -119,28 +229,67 @@ msgstr "Wys altyd die 'Meld af'-kieslysitem in die gebruikerkieslys." |
4444 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 |
4445 | msgid "" |
4446 | "This key overrides the automatic hiding of the 'Log out' menu item in single-" |
4447 | +======= |
4448 | +#: data/org.gnome.shell.gschema.xml.in:51 |
4449 | +msgid "App Picker View" |
4450 | +msgstr "Toepassingkieser oorsig" |
4451 | + |
4452 | +#: data/org.gnome.shell.gschema.xml.in:52 |
4453 | +msgid "Index of the currently selected view in the application picker." |
4454 | +msgstr "Indeks van die huidige aansig in die toepassing kieser." |
4455 | + |
4456 | +#: data/org.gnome.shell.gschema.xml.in:58 |
4457 | +msgid "History for command (Alt-F2) dialog" |
4458 | +msgstr "Geskiedenis vir die opdrag-dialoogvenster (Alt-F2)" |
4459 | + |
4460 | +#. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass |
4461 | +#: data/org.gnome.shell.gschema.xml.in:63 |
4462 | +msgid "History for the looking glass dialog" |
4463 | +msgstr "Geskiedenis vir die \"looking glass\"-dialoogvenster" |
4464 | + |
4465 | +#: data/org.gnome.shell.gschema.xml.in:67 |
4466 | +msgid "Always show the “Log out” menu item in the user menu." |
4467 | +msgstr "Wys altyd die 'Meld af' opsie in die gebruikerkieslys." |
4468 | + |
4469 | +#: data/org.gnome.shell.gschema.xml.in:68 |
4470 | +msgid "" |
4471 | +"This key overrides the automatic hiding of the “Log out” menu item in single-" |
4472 | +>>>>>>> po/af.po |
4473 | "user, single-session situations." |
4474 | msgstr "" |
4475 | "Hierdie sleutel oorheers die outomatiese wegsteek van die 'Meld af'-" |
4476 | "kieslysitem in enkelgebruiker-, enkelsessie-situasies." |
4477 | |
4478 | +<<<<<<< po/af.po |
4479 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 |
4480 | +======= |
4481 | +#: data/org.gnome.shell.gschema.xml.in:75 |
4482 | +>>>>>>> po/af.po |
4483 | msgid "" |
4484 | "Whether to remember password for mounting encrypted or remote filesystems" |
4485 | msgstr "" |
4486 | "Of wagwoord onthou moet word vir die heg van geënkripteerde of afgeleë " |
4487 | "lêerstelsels" |
4488 | |
4489 | +<<<<<<< po/af.po |
4490 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 |
4491 | msgid "" |
4492 | "The shell will request a password when an encrypted device or a remote " |
4493 | "filesystem is mounted. If the password can be saved for future use a " |
4494 | "'Remember Password' checkbox will be present. This key sets the default " |
4495 | +======= |
4496 | +#: data/org.gnome.shell.gschema.xml.in:76 |
4497 | +msgid "" |
4498 | +"The shell will request a password when an encrypted device or a remote " |
4499 | +"filesystem is mounted. If the password can be saved for future use a " |
4500 | +"“Remember Password” checkbox will be present. This key sets the default " |
4501 | +>>>>>>> po/af.po |
4502 | "state of the checkbox." |
4503 | msgstr "" |
4504 | "'n Wagwoord sal versoek word wanneer 'n geënkripteerde toestel of afgeleë " |
4505 | "lêerstelsel geheg word. As die wagwoord vir toekomstige gebruik gestoor kan " |
4506 | "word sal 'n 'Onthou wagwoord'-keuseblokkie teenwoordig wees. Hierdie sleutel " |
4507 | +<<<<<<< po/af.po |
4508 | "stel die verstektoestand van die keuseblokkie." |
4509 | |
4510 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 |
4511 | @@ -221,12 +370,138 @@ msgid "Attach modal dialog to the parent window" |
4512 | msgstr "Heg modale dialoogvenster vas aan die ouervenster" |
4513 | |
4514 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 |
4515 | +======= |
4516 | +"stel die verstektoestand van die keuseblokkie stel." |
4517 | + |
4518 | +#: data/org.gnome.shell.gschema.xml.in:85 |
4519 | +msgid "" |
4520 | +"Whether the default Bluetooth adapter had set up devices associated to it" |
4521 | +msgstr "" |
4522 | +"Of die verstek Bluetooth verwerker opgestelde toestelle het wat daarmee " |
4523 | +"verband hou" |
4524 | + |
4525 | +#: data/org.gnome.shell.gschema.xml.in:86 |
4526 | +msgid "" |
4527 | +"The shell will only show a Bluetooth menu item if a Bluetooth adapter is " |
4528 | +"powered, or if there were devices set up associated with the default " |
4529 | +"adapter. This will be reset if the default adapter is ever seen not to have " |
4530 | +"devices associated to it." |
4531 | +msgstr "" |
4532 | +"Die shell sal slegs 'n Bluetooth-kieslysitem wys as 'n Bluetooth-verwerker " |
4533 | +"aangeskakel is, of as daar toestelle ingestel is wat verband hou met die " |
4534 | +"verstekverwerker. Dit sal herstel word as die verstekverwerker ooit gesien " |
4535 | +"word om nie toestelle wat daarmee verband hou, te hê nie." |
4536 | + |
4537 | +#: data/org.gnome.shell.gschema.xml.in:101 |
4538 | +msgid "Keybinding to open the application menu" |
4539 | +msgstr "Sleutelbinding om die toepassingskieslys oop te maak" |
4540 | + |
4541 | +#: data/org.gnome.shell.gschema.xml.in:102 |
4542 | +msgid "Keybinding to open the application menu." |
4543 | +msgstr "Sleutelbinding om die toepassingskieslys oop te maak." |
4544 | + |
4545 | +#: data/org.gnome.shell.gschema.xml.in:108 |
4546 | +msgid "Keybinding to open the “Show Applications” view" |
4547 | +msgstr "Sleutelkortpad om die \"Vertoon toepassings\"-aansig oop te maak" |
4548 | + |
4549 | +#: data/org.gnome.shell.gschema.xml.in:109 |
4550 | +msgid "" |
4551 | +"Keybinding to open the “Show Applications” view of the Activities Overview." |
4552 | +msgstr "" |
4553 | +"Sleutelkortpad om die \"Vertoon toepassings\"-aansig van die Aktiwiteite-" |
4554 | +"oorsig oop te maak." |
4555 | + |
4556 | +#: data/org.gnome.shell.gschema.xml.in:116 |
4557 | +msgid "Keybinding to open the overview" |
4558 | +msgstr "Sleutelbinding om die oorsig oop te maak" |
4559 | + |
4560 | +#: data/org.gnome.shell.gschema.xml.in:117 |
4561 | +msgid "Keybinding to open the Activities Overview." |
4562 | +msgstr "Sleutelbinding om die Aktiwiteite-oorsig oop te maak." |
4563 | + |
4564 | +#: data/org.gnome.shell.gschema.xml.in:123 |
4565 | +msgid "Keybinding to toggle the visibility of the notification list" |
4566 | +msgstr "Sleutelbinding om die sigbaarheid van die kennisgewinglys te swik" |
4567 | + |
4568 | +#: data/org.gnome.shell.gschema.xml.in:124 |
4569 | +msgid "Keybinding to toggle the visibility of the notification list." |
4570 | +msgstr "Sleutelbinding om die sigbaarheid van die kennisgewinglys te swik." |
4571 | + |
4572 | +#: data/org.gnome.shell.gschema.xml.in:130 |
4573 | +msgid "Keybinding to focus the active notification" |
4574 | +msgstr "Sleutelbinding om die aktiewe kennisgewing te fokus" |
4575 | + |
4576 | +#: data/org.gnome.shell.gschema.xml.in:131 |
4577 | +msgid "Keybinding to focus the active notification." |
4578 | +msgstr "Sleutelbinding om die aktiewe kennisgewing te fokus." |
4579 | + |
4580 | +#: data/org.gnome.shell.gschema.xml.in:137 |
4581 | +msgid "" |
4582 | +"Keybinding that pauses and resumes all running tweens, for debugging purposes" |
4583 | +msgstr "" |
4584 | +"Sleutelkortpaaie wat alle uitvoerende tweens stop en weer begin vir " |
4585 | +"ontvoutings doeleindes" |
4586 | + |
4587 | +#: data/org.gnome.shell.gschema.xml.in:146 |
4588 | +msgid "Which keyboard to use" |
4589 | +msgstr "Watter sleutelbord om te gebruik" |
4590 | + |
4591 | +#: data/org.gnome.shell.gschema.xml.in:147 |
4592 | +msgid "The type of keyboard to use." |
4593 | +msgstr "Die tipe sleutelbord om te gebruik." |
4594 | + |
4595 | +#: data/org.gnome.shell.gschema.xml.in:158 |
4596 | +#: data/org.gnome.shell.gschema.xml.in:185 |
4597 | +msgid "Limit switcher to current workspace." |
4598 | +msgstr "Beperk wisselaar tot huidige werkspasie." |
4599 | + |
4600 | +#: data/org.gnome.shell.gschema.xml.in:159 |
4601 | +msgid "" |
4602 | +"If true, only applications that have windows on the current workspace are " |
4603 | +"shown in the switcher. Otherwise, all applications are included." |
4604 | +msgstr "" |
4605 | +"As waar sal slegs toepassings wat vensters in die huidige werkspasie het in " |
4606 | +"die wisselaar vertoon word. Anders sal alle toepassings ingesluit word." |
4607 | + |
4608 | +#: data/org.gnome.shell.gschema.xml.in:176 |
4609 | +msgid "The application icon mode." |
4610 | +msgstr "Die toepassingsikoon-modus." |
4611 | + |
4612 | +#: data/org.gnome.shell.gschema.xml.in:177 |
4613 | +msgid "" |
4614 | +"Configures how the windows are shown in the switcher. Valid possibilities " |
4615 | +"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" |
4616 | +"only” (shows only the application icon) or “both”." |
4617 | +msgstr "" |
4618 | +"Stel op hoe die vensters vertoon word in die wisselaar. Geldige moontlikhede " |
4619 | +"is 'slegs-duimnaelskets' (wys 'n duimnaelskets van die venster), 'slegs-toep-" |
4620 | +"ikoon' (wys slegs die toepassing se ikoon), of 'altwee'." |
4621 | + |
4622 | +#: data/org.gnome.shell.gschema.xml.in:186 |
4623 | +msgid "" |
4624 | +"If true, only windows from the current workspace are shown in the switcher. " |
4625 | +"Otherwise, all windows are included." |
4626 | +msgstr "" |
4627 | +"As waar sal slegs vensters van die huidige werkspasie in die wisselaar " |
4628 | +"vertoon word. Anders sal alle vensters ingesluit word." |
4629 | + |
4630 | +#: data/org.gnome.shell.gschema.xml.in:197 |
4631 | +msgid "Attach modal dialog to the parent window" |
4632 | +msgstr "Heg modale dialoogvenster vas aan die ouervenster" |
4633 | + |
4634 | +#: data/org.gnome.shell.gschema.xml.in:198 |
4635 | +#: data/org.gnome.shell.gschema.xml.in:207 |
4636 | +#: data/org.gnome.shell.gschema.xml.in:215 |
4637 | +#: data/org.gnome.shell.gschema.xml.in:223 |
4638 | +#: data/org.gnome.shell.gschema.xml.in:231 |
4639 | +>>>>>>> po/af.po |
4640 | msgid "" |
4641 | "This key overrides the key in org.gnome.mutter when running GNOME Shell." |
4642 | msgstr "" |
4643 | "Hierdie sleutel oorskryf die sleutel in org.gnome.mutter wanneer GNOME Shell " |
4644 | "uitgevoer word." |
4645 | |
4646 | +<<<<<<< po/af.po |
4647 | #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 |
4648 | #, fuzzy |
4649 | msgid "Enable edge tiling when dropping windows on screen edges" |
4650 | @@ -249,11 +524,40 @@ msgid "Network Login" |
4651 | msgstr "Netwerkaanmelding" |
4652 | |
4653 | #: ../js/extensionPrefs/main.js:121 |
4654 | +======= |
4655 | +#: data/org.gnome.shell.gschema.xml.in:206 |
4656 | +msgid "Enable edge tiling when dropping windows on screen edges" |
4657 | +msgstr "Aktiveer rand-tilering wanneer vensters op skermrand laat val word" |
4658 | + |
4659 | +#: data/org.gnome.shell.gschema.xml.in:214 |
4660 | +msgid "Workspaces are managed dynamically" |
4661 | +msgstr "Werkspasies word dinamies bestuur" |
4662 | + |
4663 | +#: data/org.gnome.shell.gschema.xml.in:222 |
4664 | +msgid "Workspaces only on primary monitor" |
4665 | +msgstr "Werkspasies slegs op primêre monitor" |
4666 | + |
4667 | +#: data/org.gnome.shell.gschema.xml.in:230 |
4668 | +msgid "Delay focus changes in mouse mode until the pointer stops moving" |
4669 | +msgstr "Vertraag fokusverandering in muismodus totdat die wyser ophou beweeg" |
4670 | + |
4671 | +#: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 |
4672 | +msgid "Network Login" |
4673 | +msgstr "Netwerkaanmelding" |
4674 | + |
4675 | +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! |
4676 | +#: data/org.gnome.Shell.PortalHelper.desktop.in.in:9 |
4677 | +msgid "network-workgroup" |
4678 | +msgstr "netwerk-werkgroep" |
4679 | + |
4680 | +#: js/extensionPrefs/main.js:120 |
4681 | +>>>>>>> po/af.po |
4682 | #, javascript-format |
4683 | msgid "There was an error loading the preferences dialog for %s:" |
4684 | msgstr "" |
4685 | "'n Fout het voorgekom tydens die lansering van die voorkeuredialoog vir %s:" |
4686 | |
4687 | +<<<<<<< po/af.po |
4688 | #: ../js/extensionPrefs/main.js:153 |
4689 | msgid "GNOME Shell Extensions" |
4690 | msgstr "GNOME Shell-uitbreidings" |
4691 | @@ -277,24 +581,55 @@ msgid "Unlock" |
4692 | msgstr "Sluit oop" |
4693 | |
4694 | #: ../js/gdm/authPrompt.js:214 |
4695 | +======= |
4696 | +#: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71 |
4697 | +#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148 |
4698 | +#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 |
4699 | +#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936 |
4700 | +msgid "Cancel" |
4701 | +msgstr "Kanselleer" |
4702 | + |
4703 | +#: js/gdm/authPrompt.js:171 js/gdm/authPrompt.js:218 js/gdm/authPrompt.js:450 |
4704 | +msgid "Next" |
4705 | +msgstr "Volgende" |
4706 | + |
4707 | +#: js/gdm/authPrompt.js:214 js/ui/shellMountOperation.js:348 |
4708 | +#: js/ui/unlockDialog.js:59 |
4709 | +msgid "Unlock" |
4710 | +msgstr "Sluit oop" |
4711 | + |
4712 | +#: js/gdm/authPrompt.js:216 |
4713 | +>>>>>>> po/af.po |
4714 | msgctxt "button" |
4715 | msgid "Sign In" |
4716 | msgstr "Meld aan" |
4717 | |
4718 | +<<<<<<< po/af.po |
4719 | #: ../js/gdm/loginDialog.js:285 |
4720 | +======= |
4721 | +#: js/gdm/loginDialog.js:308 |
4722 | +>>>>>>> po/af.po |
4723 | msgid "Choose Session" |
4724 | msgstr "Kies sessie" |
4725 | |
4726 | #. translators: this message is shown below the user list on the |
4727 | #. login screen. It can be activated to reveal an entry for |
4728 | #. manually entering the username. |
4729 | +<<<<<<< po/af.po |
4730 | #: ../js/gdm/loginDialog.js:435 |
4731 | +======= |
4732 | +#: js/gdm/loginDialog.js:458 |
4733 | +>>>>>>> po/af.po |
4734 | msgid "Not listed?" |
4735 | msgstr "Nie op die lys nie?" |
4736 | |
4737 | #. Translators: this message is shown below the username entry field |
4738 | #. to clue the user in on how to login to the local network realm |
4739 | +<<<<<<< po/af.po |
4740 | #: ../js/gdm/loginDialog.js:854 |
4741 | +======= |
4742 | +#: js/gdm/loginDialog.js:888 |
4743 | +>>>>>>> po/af.po |
4744 | #, javascript-format |
4745 | msgid "(e.g., user or %s)" |
4746 | msgstr "(bv. gebruiker of %s)" |
4747 | @@ -302,6 +637,7 @@ msgstr "(bv. gebruiker of %s)" |
4748 | #. TTLS and PEAP are actually much more complicated, but this complication |
4749 | #. is not visible here since we only care about phase2 authentication |
4750 | #. (and don't even care of which one) |
4751 | +<<<<<<< po/af.po |
4752 | #: ../js/gdm/loginDialog.js:859 ../js/ui/components/networkAgent.js:271 |
4753 | #: ../js/ui/components/networkAgent.js:289 |
4754 | msgid "Username: " |
4755 | @@ -314,6 +650,18 @@ msgstr "Aanmeldvenster" |
4756 | #: ../js/gdm/util.js:341 |
4757 | #, fuzzy |
4758 | #| msgid "Connection error" |
4759 | +======= |
4760 | +#: js/gdm/loginDialog.js:893 js/ui/components/networkAgent.js:243 |
4761 | +#: js/ui/components/networkAgent.js:261 |
4762 | +msgid "Username: " |
4763 | +msgstr "Gebruikernaam: " |
4764 | + |
4765 | +#: js/gdm/loginDialog.js:1236 |
4766 | +msgid "Login Window" |
4767 | +msgstr "Aanmeldvenster" |
4768 | + |
4769 | +#: js/gdm/util.js:346 |
4770 | +>>>>>>> po/af.po |
4771 | msgid "Authentication error" |
4772 | msgstr "Verifiëringsfout" |
4773 | |
4774 | @@ -322,40 +670,185 @@ msgstr "Verifiëringsfout" |
4775 | #. as a cue to display our own message. |
4776 | #. Translators: this message is shown below the password entry field |
4777 | #. to indicate the user can swipe their finger instead |
4778 | +<<<<<<< po/af.po |
4779 | #: ../js/gdm/util.js:473 |
4780 | msgid "(or swipe finger)" |
4781 | msgstr "(of veeg vinger)" |
4782 | |
4783 | #: ../js/misc/util.js:119 |
4784 | +======= |
4785 | +#: js/gdm/util.js:478 |
4786 | +msgid "(or swipe finger)" |
4787 | +msgstr "(of veeg vinger)" |
4788 | + |
4789 | +#. Translators: The name of the power-off action in search |
4790 | +#: js/misc/systemActions.js:99 |
4791 | +msgctxt "search-result" |
4792 | +msgid "Power off" |
4793 | +msgstr "Skakel af" |
4794 | + |
4795 | +#. Translators: A list of keywords that match the power-off action, separated by semicolons |
4796 | +#: js/misc/systemActions.js:102 |
4797 | +msgid "power off;shutdown" |
4798 | +msgstr "skakel af;afskakel" |
4799 | + |
4800 | +#. Translators: The name of the lock screen action in search |
4801 | +#: js/misc/systemActions.js:106 |
4802 | +msgctxt "search-result" |
4803 | +msgid "Lock screen" |
4804 | +msgstr "Sluit skerm" |
4805 | + |
4806 | +#. Translators: A list of keywords that match the lock screen action, separated by semicolons |
4807 | +#: js/misc/systemActions.js:109 |
4808 | +msgid "lock screen" |
4809 | +msgstr "sluit skerm" |
4810 | + |
4811 | +#. Translators: The name of the logout action in search |
4812 | +#: js/misc/systemActions.js:113 |
4813 | +msgctxt "search-result" |
4814 | +msgid "Log out" |
4815 | +msgstr "Meld af" |
4816 | + |
4817 | +#. Translators: A list of keywords that match the logout action, separated by semicolons |
4818 | +#: js/misc/systemActions.js:116 |
4819 | +msgid "logout;sign off" |
4820 | +msgstr "meld af;teken af" |
4821 | + |
4822 | +#. Translators: The name of the suspend action in search |
4823 | +#: js/misc/systemActions.js:120 |
4824 | +msgctxt "search-result" |
4825 | +msgid "Suspend" |
4826 | +msgstr "Sluimer" |
4827 | + |
4828 | +#. Translators: A list of keywords that match the suspend action, separated by semicolons |
4829 | +#: js/misc/systemActions.js:123 |
4830 | +msgid "suspend;sleep" |
4831 | +msgstr "suspend;sleep;sluimer;slaap" |
4832 | + |
4833 | +#. Translators: The name of the switch user action in search |
4834 | +#: js/misc/systemActions.js:127 |
4835 | +msgctxt "search-result" |
4836 | +msgid "Switch user" |
4837 | +msgstr "Wissel gebruiker" |
4838 | + |
4839 | +#. Translators: A list of keywords that match the switch user action, separated by semicolons |
4840 | +#: js/misc/systemActions.js:130 |
4841 | +msgid "switch user" |
4842 | +msgstr "wissel gebruiker" |
4843 | + |
4844 | +#. Translators: The name of the lock orientation action in search |
4845 | +#: js/misc/systemActions.js:134 |
4846 | +msgctxt "search-result" |
4847 | +msgid "Lock orientation" |
4848 | +msgstr "Sluit oriëntasie" |
4849 | + |
4850 | +#. Translators: A list of keywords that match the lock orientation action, separated by semicolons |
4851 | +#: js/misc/systemActions.js:137 |
4852 | +msgid "lock orientation" |
4853 | +msgstr "sluit oriëntasie" |
4854 | + |
4855 | +#: js/misc/util.js:122 |
4856 | +>>>>>>> po/af.po |
4857 | msgid "Command not found" |
4858 | msgstr "Opdrag nie gevind nie" |
4859 | |
4860 | #. Replace "Error invoking GLib.shell_parse_argv: " with |
4861 | #. something nicer |
4862 | +<<<<<<< po/af.po |
4863 | #: ../js/misc/util.js:152 |
4864 | msgid "Could not parse command:" |
4865 | msgstr "Kon nie opdrag ontleed nie:" |
4866 | |
4867 | #: ../js/misc/util.js:160 |
4868 | +======= |
4869 | +#: js/misc/util.js:155 |
4870 | +msgid "Could not parse command:" |
4871 | +msgstr "Kon nie opdrag ontleed nie:" |
4872 | + |
4873 | +#: js/misc/util.js:163 |
4874 | +>>>>>>> po/af.po |
4875 | #, javascript-format |
4876 | msgid "Execution of “%s” failed:" |
4877 | msgstr "Uitvoer van “%s” het misluk:" |
4878 | |
4879 | +<<<<<<< po/af.po |
4880 | #. Translators: Time in 24h format |
4881 | #: ../js/misc/util.js:191 |
4882 | +======= |
4883 | +#: js/misc/util.js:180 |
4884 | +msgid "Just now" |
4885 | +msgstr "Nounet" |
4886 | + |
4887 | +#: js/misc/util.js:182 |
4888 | +#, javascript-format |
4889 | +msgid "%d minute ago" |
4890 | +msgid_plural "%d minutes ago" |
4891 | +msgstr[0] "%d minuut gelede" |
4892 | +msgstr[1] "%d minute gelede" |
4893 | + |
4894 | +#: js/misc/util.js:185 |
4895 | +#, javascript-format |
4896 | +msgid "%d hour ago" |
4897 | +msgid_plural "%d hours ago" |
4898 | +msgstr[0] "%d uur gelede" |
4899 | +msgstr[1] "%d ure gelede" |
4900 | + |
4901 | +#: js/misc/util.js:188 |
4902 | +msgid "Yesterday" |
4903 | +msgstr "Gister" |
4904 | + |
4905 | +#: js/misc/util.js:190 |
4906 | +#, javascript-format |
4907 | +msgid "%d day ago" |
4908 | +msgid_plural "%d days ago" |
4909 | +msgstr[0] "%d dag gelede" |
4910 | +msgstr[1] "%d dae gelede" |
4911 | + |
4912 | +#: js/misc/util.js:193 |
4913 | +#, javascript-format |
4914 | +msgid "%d week ago" |
4915 | +msgid_plural "%d weeks ago" |
4916 | +msgstr[0] "%d week gelede" |
4917 | +msgstr[1] "%d weke gelede" |
4918 | + |
4919 | +#: js/misc/util.js:196 |
4920 | +#, javascript-format |
4921 | +msgid "%d month ago" |
4922 | +msgid_plural "%d months ago" |
4923 | +msgstr[0] "%d maand gelede" |
4924 | +msgstr[1] "%d maande gelede" |
4925 | + |
4926 | +#: js/misc/util.js:198 |
4927 | +#, javascript-format |
4928 | +msgid "%d year ago" |
4929 | +msgid_plural "%d years ago" |
4930 | +msgstr[0] "%d jaar gelede" |
4931 | +msgstr[1] "%d jaar gelede" |
4932 | + |
4933 | +#. Translators: Time in 24h format |
4934 | +#: js/misc/util.js:228 |
4935 | +>>>>>>> po/af.po |
4936 | msgid "%H∶%M" |
4937 | msgstr "%H∶%M" |
4938 | |
4939 | #. Translators: this is the word "Yesterday" followed by a |
4940 | #. time string in 24h format. i.e. "Yesterday, 14:30" |
4941 | +<<<<<<< po/af.po |
4942 | #: ../js/misc/util.js:197 |
4943 | +======= |
4944 | +#: js/misc/util.js:234 |
4945 | +>>>>>>> po/af.po |
4946 | #, no-c-format |
4947 | msgid "Yesterday, %H∶%M" |
4948 | msgstr "Gister, %H:%M" |
4949 | |
4950 | #. Translators: this is the week day name followed by a time |
4951 | #. string in 24h format. i.e. "Monday, 14:30" |
4952 | +<<<<<<< po/af.po |
4953 | #: ../js/misc/util.js:203 |
4954 | +======= |
4955 | +#: js/misc/util.js:240 |
4956 | +>>>>>>> po/af.po |
4957 | #, no-c-format |
4958 | msgid "%A, %H∶%M" |
4959 | msgstr "%A %H:%M" |
4960 | @@ -363,7 +856,11 @@ msgstr "%A %H:%M" |
4961 | #. Translators: this is the month name and day number |
4962 | #. followed by a time string in 24h format. |
4963 | #. i.e. "May 25, 14:30" |
4964 | +<<<<<<< po/af.po |
4965 | #: ../js/misc/util.js:209 |
4966 | +======= |
4967 | +#: js/misc/util.js:246 |
4968 | +>>>>>>> po/af.po |
4969 | #, no-c-format |
4970 | msgid "%B %d, %H∶%M" |
4971 | msgstr "%e %B %H∶%M" |
4972 | @@ -371,26 +868,42 @@ msgstr "%e %B %H∶%M" |
4973 | #. Translators: this is the month name, day number, year |
4974 | #. number followed by a time string in 24h format. |
4975 | #. i.e. "May 25 2012, 14:30" |
4976 | +<<<<<<< po/af.po |
4977 | #: ../js/misc/util.js:215 |
4978 | +======= |
4979 | +#: js/misc/util.js:252 |
4980 | +>>>>>>> po/af.po |
4981 | #, no-c-format |
4982 | msgid "%B %d %Y, %H∶%M" |
4983 | msgstr "%e %B %Y, %H∶%M" |
4984 | |
4985 | #. Translators: Time in 12h format |
4986 | +<<<<<<< po/af.po |
4987 | #: ../js/misc/util.js:220 |
4988 | +======= |
4989 | +#: js/misc/util.js:257 |
4990 | +>>>>>>> po/af.po |
4991 | msgid "%l∶%M %p" |
4992 | msgstr "%l:%M %p" |
4993 | |
4994 | #. Translators: this is the word "Yesterday" followed by a |
4995 | #. time string in 12h format. i.e. "Yesterday, 2:30 pm" |
4996 | +<<<<<<< po/af.po |
4997 | #: ../js/misc/util.js:226 |
4998 | +======= |
4999 | +#: js/misc/util.js:263 |
5000 | +>>>>>>> po/af.po |