Merge lp:~unity-team/unity/trusty-sru-7.2.6 into lp:unity/7.2
- trusty-sru-7.2.6
- Merge into trusty
Proposed by
Marco Trevisan (Treviño)
Status: | Merged |
---|---|
Approved by: | Andrea Azzarone |
Approved revision: | no longer in the source branch. |
Merged at revision: | 3835 |
Proposed branch: | lp:~unity-team/unity/trusty-sru-7.2.6 |
Merge into: | lp:unity/7.2 |
Diff against target: |
1554 lines (+547/-141) 43 files modified
CMakeLists.txt (+1/-1) ChangeLog (+182/-0) UnityCore/GLibDBusProxy.cpp (+16/-3) UnityCore/GnomeSessionManager.cpp (+6/-1) dash/DashController.cpp (+2/-0) dash/DashController.h (+0/-1) dash/DashView.cpp (+72/-32) dash/DashView.h (+3/-3) dash/PlacesGroup.cpp (+13/-2) dash/PlacesGroup.h (+1/-0) dash/ResultView.cpp (+25/-0) dash/ResultView.h (+6/-4) dash/ResultViewGrid.cpp (+29/-13) dash/ScopeView.cpp (+20/-22) dash/ScopeView.h (+2/-0) debian/changelog (+51/-0) decorations/DecoratedWindow.cpp (+5/-0) decorations/DecoratedWindow.h (+1/-0) decorations/DecorationsManager.cpp (+5/-1) hud/HudButton.cpp (+0/-5) hud/HudController.cpp (+2/-0) hud/HudController.h (+0/-1) launcher/DeviceNotificationDisplayImp.cpp (+0/-1) launcher/LauncherController.cpp (+2/-2) launcher/LauncherIcon.cpp (+9/-4) panel/PanelView.cpp (+18/-0) panel/PanelView.h (+1/-0) plugins/unityshell/src/unityshell.cpp (+16/-2) plugins/unityshell/unityshell.xml.in (+6/-0) unity-shared/BGHash.cpp (+5/-2) unity-shared/CompizUtils.cpp (+0/-3) unity-shared/OverlayRenderer.cpp (+2/-0) unity-shared/OverlayScrollView.cpp (+5/-1) unity-shared/OverlayScrollView.h (+2/-0) unity-shared/OverlayWindowButtons.cpp (+3/-3) unity-shared/PlacesOverlayVScrollBar.cpp (+5/-0) unity-shared/PlacesOverlayVScrollBar.h (+8/-6) unity-shared/PluginAdapter.cpp (+5/-1) unity-shared/SearchBar.cpp (+9/-23) unity-shared/SearchBar.h (+1/-3) unity-shared/UnitySettings.cpp (+6/-1) unity-shared/UnitySettings.h (+1/-0) unity-shared/WindowButtons.cpp (+1/-0) |
To merge this branch: | bzr merge lp:~unity-team/unity/trusty-sru-7.2.6 |
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Andrea Azzarone (community) | Approve | ||
Review via email: mp+274599@code.launchpad.net |
Commit message
Releasing 7.2.6
Description of the change
To post a comment you must log in.
Revision history for this message
Andrea Azzarone (azzar1) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'CMakeLists.txt' |
2 | --- CMakeLists.txt 2015-04-16 15:55:07 +0000 |
3 | +++ CMakeLists.txt 2015-10-20 18:34:31 +0000 |
4 | @@ -10,7 +10,7 @@ |
5 | set (PROJECT_NAME "unity") |
6 | set (UNITY_MAJOR 7) |
7 | set (UNITY_MINOR 2) |
8 | -set (UNITY_MICRO 5) |
9 | +set (UNITY_MICRO 6) |
10 | set (UNITY_VERSION "${UNITY_MAJOR}.${UNITY_MINOR}.${UNITY_MICRO}") |
11 | set (UNITY_API_VERSION "6.0") |
12 | set (UNITY_COMPONENTS_VERSION "6") |
13 | |
14 | === modified file 'ChangeLog' |
15 | --- ChangeLog 2015-04-16 15:55:07 +0000 |
16 | +++ ChangeLog 2015-10-20 18:34:31 +0000 |
17 | @@ -1,3 +1,185 @@ |
18 | +2015-10-15 Marco Trevisan (Treviño) <mail@3v1n0.net> |
19 | + |
20 | + * Releasing 7.2.6 |
21 | + * Updating ChangeLog |
22 | + |
23 | +2015-10-15 Marco Trevisan (Treviño) <mail@3v1n0.net> |
24 | + |
25 | + New stable release |
26 | + |
27 | +2015-10-15 Andrea Azzarone andrea.azzarone@canonical.com |
28 | + |
29 | + Merge patch from https://launchpadlibrarian.net/216276242/low-gfx-override.patch |
30 | + |
31 | +2015-10-15 Chris Townsend <christopher.townsend@canonical.com> |
32 | + |
33 | + When looking for the top-most valid window in a VP, also check if the window is focused if the window is set to Always on Top. This allows Launcher icon spread to work properly when a window is minimized an Always on Top exists in the group. |
34 | + |
35 | +2015-10-15 Chris Townsend <christopher.townsend@canonical.com> |
36 | + |
37 | + Wait on Spread to be terminated before showing the Quicklist. |
38 | + |
39 | +2015-10-15 Marco Trevisan (Treviño) <mail@3v1n0.net> |
40 | + |
41 | + ResultViewGrid: wait for double-click event only if the relative result needs the Preview |
42 | + |
43 | + This was causing a 500ms delay between the user click and some results (apps) activation. |
44 | + Also, at this point, we can get rid of PREVIEW_LEFT_BUTTON activation type. , #1447372 |
45 | + |
46 | +2015-10-15 Chris Townsend <christopher.townsend@canonical.com> |
47 | + |
48 | + If dragging an application:// uri type from the Dash to the desktop, change it to a file:// uri type so Nautilus can understand the type a make a copy of it on the desktop. |
49 | + |
50 | +2015-10-15 Chris Townsend <christopher.townsend@canonical.com> |
51 | + |
52 | + Enable real page up/page down key navigation in the Dash. When using these keys the view scrolls the length of the visible view. |
53 | + |
54 | +2015-10-15 Chris Townsend <christopher.townsend@canonical.com> |
55 | + |
56 | + Save the active window when showing the Hud so the correct window is focused when hiding the Hud. Fixes issue when "Always on Top" windows are present. |
57 | + |
58 | +2015-10-15 Chris Townsend <christopher.townsend@canonical.com> |
59 | + |
60 | + Save the active window when showing the Dash so the correct window is focused when hiding the Dash. Fixes issue when "Always on Top" windows are present. |
61 | + |
62 | +2015-10-15 Andrea Azzarone azzaronea@gmail.com |
63 | + |
64 | + Properly hide decorations when on "Show Desktop" mode. |
65 | + |
66 | +2015-10-15 Andrea Azzarone andrea.azzarone@canonical.com |
67 | + |
68 | + Do not handle events coming from viewports not actually containing the window. |
69 | + |
70 | +2015-10-15 Chris Townsend <christopher.townsend@canonical.com> |
71 | + |
72 | + When using keyboard navigation in the Dash, skip category headers that are not expandable. Also, do not highlight the category header when the mouse cursor is over it. |
73 | + |
74 | +2015-10-15 Chris Townsend <christopher.townsend@canonical.com> |
75 | + |
76 | + Also use the Compiz show() method when forcing an unmapped window to be visible when clicking on it's active Launcher icon. |
77 | + |
78 | +2015-10-15 Andrea Azzarone andrea.azzarone@canonical.com |
79 | + |
80 | + Make sure new icons are added to the model before calling SortAndUpdate. |
81 | + |
82 | +2015-10-15 Marco Trevisan (Treviño) <mail@3v1n0.net> |
83 | + |
84 | + OverlayWindowButtons: trigger a queuedraw also when a child requires a redraw |
85 | + |
86 | +2015-10-15 Chris Townsend <christopher.townsend@canonical.com> |
87 | + |
88 | + Add option to enable and disable Unity low graphics mode on the fly in ccsm or via gsettings. |
89 | + |
90 | +2015-10-15 Marco Trevisan (Treviño) <mail@3v1n0.net> |
91 | + |
92 | + GnomeSessionManager: Request ScreenSaver (de)activation on VT changes |
93 | + |
94 | + Connect to login1 session active property, and monitor its state. |
95 | + When the session is active we can safely request the screensaver to stop. |
96 | + |
97 | +2015-06-03 CI Train Bot <ci-train-bot@canonical.com> |
98 | + |
99 | + Releasing 7.2.5+14.04.20150603-0ubuntu1 |
100 | + |
101 | +2015-06-03 Chris Townsend <christopher.townsend@canonical.com> |
102 | + |
103 | + Revert rev. 3810 due to a crash being seen on Trusty when the lockscreen is activated. Fixes: #1451613 |
104 | + Approved by: PS Jenkins bot, Stephen M. Webb |
105 | + |
106 | +2015-06-03 Chris Townsend <christopher.townsend@canonical.com> |
107 | + |
108 | + Revert rev. 3810 due to a crash being seen on Trusty when the lockscreen is activated. |
109 | + |
110 | +2015-05-21 CI Train Bot <ci-train-bot@canonical.com> |
111 | + |
112 | + Releasing 7.2.5+14.04.20150521.1-0ubuntu1 |
113 | + |
114 | +2015-05-21 Stephen M. Webb <stephen.webb@canonical.com> |
115 | + |
116 | + AP tests: accounted for arbitrarily-raised exceptions in checking scaled windows Fixes: #1436095 |
117 | + Approved by: Stephen M. Webb, PS Jenkins bot |
118 | + |
119 | +2015-05-15 Stephen M. Webb <stephen.webb@canonical.com> |
120 | + |
121 | + AP tests: accounted for arbitrarily-raised exceptions in checking scaled windows |
122 | + |
123 | +2015-05-21 Andrea Azzarone <azzaronea@gmail.com> |
124 | + |
125 | + Forward first key event that happens on top of the blank window to the lockscreen. Fixes: #1308265 |
126 | + Approved by: Stephen M. Webb, PS Jenkins bot |
127 | + |
128 | +2015-05-15 Andrea Azzarone <azzaronea@gmail.com> |
129 | + |
130 | + Forward first key event that happens on top of the blank window to the lockscreen. |
131 | + |
132 | +2015-05-21 Andrea Azzarone <azzaronea@gmail.com> |
133 | + |
134 | + Release pointer barrier if launcher is in lock_hide state. Fixes: #1029114 |
135 | + Approved by: Stephen M. Webb, PS Jenkins bot |
136 | + |
137 | +2015-05-15 Andrea Azzarone <azzaronea@gmail.com> |
138 | + |
139 | + Release pointer barrier if launcher is in lock_hide state. |
140 | + |
141 | +2015-05-21 Andrea Azzarone <azzaronea@gmail.com> |
142 | + |
143 | + Make sure scope_views_[filter.id] exists before using operator[] on it. Fixes: #926979 |
144 | + Approved by: Stephen M. Webb, PS Jenkins bot |
145 | + |
146 | +2015-05-15 Andrea Azzarone <azzaronea@gmail.com> |
147 | + |
148 | + Make sure scope_views_[filter.id] exists before using operator[] on it. |
149 | + |
150 | +2015-05-21 Andrea Azzarone <azzaronea@gmail.com> |
151 | + |
152 | + Do not restore focus if a quicklist is opened during launcher key navigation. Fixes: #932486 |
153 | + Approved by: Stephen M. Webb, PS Jenkins bot |
154 | + |
155 | +2015-05-15 Andrea Azzarone <azzaronea@gmail.com> |
156 | + |
157 | + Do not restore focus if a quicklist is opened during launcher key navigation. |
158 | + |
159 | +2015-05-21 Brandon Schaefer <brandontschaefer@gmail.com> |
160 | + |
161 | + When we quit the quicklist it would check if the mouse was over the launcher, if it wasn't it would fold the launcher. We don't need to check this if we are in keynav as we want all the icons to be unfolded. Fixes: #1246891 |
162 | + Approved by: Stephen M. Webb, PS Jenkins bot |
163 | + |
164 | +2015-05-15 Brandon Schaefer <brandontschaefer@gmail.com> |
165 | + |
166 | + When we quit the quicklist it would check if the mouse was over the launcher, if it wasn't it would fold the launcher. We don't need to check this if we are in keynav as we want all the icons to be unfolded. |
167 | + |
168 | +2015-05-21 Chris Townsend <christopher.townsend@canonical.com> |
169 | + |
170 | + Use a 2 second delay before showing the first run shortcut hints to workaround a race condition on input handling. Fixes: #1313597 |
171 | + Approved by: Stephen M. Webb, PS Jenkins bot |
172 | + |
173 | +2015-05-15 Chris Townsend <christopher.townsend@canonical.com> |
174 | + |
175 | + Use a 2 second delay before showing the first run shortcut hints to workaround a race condition on input handling. |
176 | + |
177 | +2015-05-21 Andrea Azzarone <azzaronea@gmail.com> |
178 | + |
179 | + Draw osk above unity shell. Fixes: #1413165 |
180 | + Approved by: Stephen M. Webb, PS Jenkins bot |
181 | + |
182 | +2015-05-15 Andrea Azzarone <azzaronea@gmail.com> |
183 | + |
184 | + Draw osk above unity shell. |
185 | + |
186 | +2015-05-21 Andrea Azzarone <azzaronea@gmail.com> |
187 | + |
188 | + Add the possibility to specify the font size and the font weight without chaning the default font name. Fixes: #886478 |
189 | + Approved by: Stephen M. Webb, PS Jenkins bot |
190 | + |
191 | +2015-05-15 Andrea Azzarone <azzaronea@gmail.com> |
192 | + |
193 | + Add the possibility to specify the font size and the font weight without chaning the default font name. |
194 | + |
195 | +2015-04-16 Chris Townsend <christopher.townsend@canonical.com> |
196 | + |
197 | + * Releasing 7.2.5. |
198 | + * Bump version to 7.2.5. |
199 | + |
200 | 2015-03-16 CI Train Bot <ci-train-bot@canonical.com> |
201 | |
202 | Releasing 7.2.4+14.04.20150316-0ubuntu1 |
203 | |
204 | === modified file 'UnityCore/GLibDBusProxy.cpp' |
205 | --- UnityCore/GLibDBusProxy.cpp 2014-12-16 19:27:36 +0000 |
206 | +++ UnityCore/GLibDBusProxy.cpp 2015-10-20 18:34:31 +0000 |
207 | @@ -89,7 +89,7 @@ |
208 | |
209 | void OnProxyNameOwnerChanged(GDBusProxy*, GParamSpec*); |
210 | void OnProxySignal(GDBusProxy* proxy, const char*, const char*, GVariant*); |
211 | - void OnPropertyChanged(GDBusProxy*, GVariant*, GStrv*); |
212 | + void OnPropertyChanged(GDBusProxy*, GVariant*, GStrv); |
213 | |
214 | static void OnProxyConnectCallback(GObject* source, GAsyncResult* res, gpointer impl); |
215 | static void OnCallCallback(GObject* source, GAsyncResult* res, gpointer call_data); |
216 | @@ -114,7 +114,7 @@ |
217 | unsigned reconnection_attempts_; |
218 | |
219 | glib::Signal<void, GDBusProxy*, const char*, const char*, GVariant*> g_signal_connection_; |
220 | - glib::Signal<void, GDBusProxy*, GVariant*, GStrv*> g_property_signal_; |
221 | + glib::Signal<void, GDBusProxy*, GVariant*, GStrv> g_property_signal_; |
222 | glib::Signal<void, GDBusProxy*, GParamSpec*> name_owner_signal_; |
223 | glib::Source::UniquePtr reconnect_timeout_; |
224 | sigc::signal<void> proxy_acquired; |
225 | @@ -277,7 +277,7 @@ |
226 | } |
227 | } |
228 | |
229 | -void DBusProxy::Impl::OnPropertyChanged(GDBusProxy* proxy, GVariant* changed_props, GStrv* invalidated) |
230 | +void DBusProxy::Impl::OnPropertyChanged(GDBusProxy* proxy, GVariant* changed_props, GStrv invalidated) |
231 | { |
232 | LOG_DEBUG(logger) << "Properties changed for proxy (" << object_path_ << ")"; |
233 | |
234 | @@ -303,6 +303,19 @@ |
235 | |
236 | g_variant_iter_free (iter); |
237 | } |
238 | + |
239 | + for (const gchar *property_name = *invalidated; property_name; property_name = *(++invalidated)) |
240 | + { |
241 | + LOG_DEBUG(logger) << "Property: '" << property_name << "' invalidated"; |
242 | + |
243 | + auto handler_it = property_handlers_.find(property_name); |
244 | + |
245 | + if (handler_it != property_handlers_.end()) |
246 | + { |
247 | + for (ReplyCallback const& callback : handler_it->second) |
248 | + callback(nullptr); |
249 | + } |
250 | + } |
251 | } |
252 | |
253 | void DBusProxy::Impl::WaitForProxy(GCancellable* cancellable, |
254 | |
255 | === modified file 'UnityCore/GnomeSessionManager.cpp' |
256 | --- UnityCore/GnomeSessionManager.cpp 2015-03-16 17:29:46 +0000 |
257 | +++ UnityCore/GnomeSessionManager.cpp 2015-10-20 18:34:31 +0000 |
258 | @@ -104,7 +104,8 @@ |
259 | login_proxy_ = std::make_shared<glib::DBusProxy>(test_mode_ ? testing::DBUS_NAME : "org.freedesktop.login1", |
260 | "/org/freedesktop/login1/session/" + glib::gchar_to_string(session_id), |
261 | "org.freedesktop.login1.Session", |
262 | - test_mode_ ? G_BUS_TYPE_SESSION : G_BUS_TYPE_SYSTEM); |
263 | + test_mode_ ? G_BUS_TYPE_SESSION : G_BUS_TYPE_SYSTEM, |
264 | + G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES); |
265 | |
266 | login_proxy_->Connect("Lock", [this](GVariant*){ |
267 | manager_->PromptLockScreen(); |
268 | @@ -113,6 +114,10 @@ |
269 | login_proxy_->Connect("Unlock", [this](GVariant*){ |
270 | manager_->unlock_requested.emit(); |
271 | }); |
272 | + |
273 | + login_proxy_->ConnectProperty("Active", [this] (GVariant* active) { |
274 | + manager_->screensaver_requested.emit(!glib::Variant(active).GetBool()); |
275 | + }); |
276 | } |
277 | |
278 | { |
279 | |
280 | === modified file 'dash/DashController.cpp' |
281 | --- dash/DashController.cpp 2014-07-24 14:03:10 +0000 |
282 | +++ dash/DashController.cpp 2015-10-20 18:34:31 +0000 |
283 | @@ -308,6 +308,8 @@ |
284 | return false; |
285 | } |
286 | |
287 | + wm.SaveInputFocus(); |
288 | + |
289 | EnsureDash(); |
290 | monitor_ = GetIdealMonitor(); |
291 | screen_ungrabbed_slot_->disconnect(); |
292 | |
293 | === modified file 'dash/DashController.h' |
294 | --- dash/DashController.h 2014-04-25 02:42:01 +0000 |
295 | +++ dash/DashController.h 2015-10-20 18:34:31 +0000 |
296 | @@ -21,7 +21,6 @@ |
297 | |
298 | #include <memory> |
299 | |
300 | -#include <gdk/gdk.h> |
301 | #include <UnityCore/ConnectionManager.h> |
302 | #include <UnityCore/GLibDBusServer.h> |
303 | #include <UnityCore/GLibSignal.h> |
304 | |
305 | === modified file 'dash/DashView.cpp' |
306 | --- dash/DashView.cpp 2015-05-15 15:52:31 +0000 |
307 | +++ dash/DashView.cpp 2015-10-20 18:34:31 +0000 |
308 | @@ -59,7 +59,7 @@ |
309 | const RawPixel PREVIEW_CONTAINER_TRIANGLE_WIDTH = 14_em; |
310 | const RawPixel PREVIEW_CONTAINER_TRIANGLE_HEIGHT = 12_em; |
311 | |
312 | -const int MAX_ENTRY_ACTIVATE_WAIT_TIMEOUT = 1000; |
313 | +const int MAX_ENTRY_ACTIVATE_WAIT_TIMEOUT = 300; |
314 | } |
315 | |
316 | // This is so we can access some protected members in nux::VLayout and |
317 | @@ -120,7 +120,6 @@ |
318 | , preview_displaying_(false) |
319 | , preview_navigation_mode_(previews::Navigation::NONE) |
320 | , last_activated_timestamp_(0) |
321 | - , search_in_progress_(false) |
322 | , activate_on_finish_(false) |
323 | , visible_(false) |
324 | , opening_column_x_(-1) |
325 | @@ -1221,21 +1220,27 @@ |
326 | |
327 | void DashView::OnSearchChanged(std::string const& search_string) |
328 | { |
329 | - search_in_progress_ = true; |
330 | + activate_on_finish_ = false; |
331 | } |
332 | |
333 | void DashView::OnLiveSearchReached(std::string const& search_string) |
334 | { |
335 | - // reset and set it again once we're sure a search is happening |
336 | - search_in_progress_ = false; |
337 | - |
338 | LOG_DEBUG(logger) << "Live search reached: " << search_string; |
339 | - if (active_scope_view_) |
340 | + if (!active_scope_view_.IsValid()) |
341 | + return; |
342 | + |
343 | + if (active_scope_view_->PerformSearch(search_string, sigc::mem_fun(this, &DashView::OnScopeSearchFinished))) |
344 | { |
345 | - if (active_scope_view_->PerformSearch(search_string, sigc::mem_fun(this, &DashView::OnScopeSearchFinished))) |
346 | - { |
347 | - search_in_progress_ = true; |
348 | - } |
349 | + activate_delay_.reset(new glib::Timeout(MAX_ENTRY_ACTIVATE_WAIT_TIMEOUT, [this] { |
350 | + if (activate_on_finish_) |
351 | + { |
352 | + activate_on_finish_ = false; |
353 | + active_scope_view_->ActivateFirst(); |
354 | + } |
355 | + |
356 | + activate_delay_.reset(); |
357 | + return false; |
358 | + })); |
359 | } |
360 | } |
361 | |
362 | @@ -1254,12 +1259,15 @@ |
363 | LOG_DEBUG(logger) << "Search completed: " << search_string; |
364 | |
365 | search_bar_->SetSearchFinished(); |
366 | - search_in_progress_ = false; |
367 | - |
368 | - activate_timeout_.reset(); |
369 | - if (activate_on_finish_ && !err) |
370 | - OnEntryActivated(); |
371 | - activate_on_finish_= false; |
372 | + |
373 | + if (activate_on_finish_) |
374 | + { |
375 | + activate_on_finish_ = false; |
376 | + activate_delay_.reset(); |
377 | + |
378 | + if (!err) |
379 | + active_scope_view_->ActivateFirst(); |
380 | + } |
381 | } |
382 | } |
383 | |
384 | @@ -1407,20 +1415,12 @@ |
385 | } |
386 | void DashView::OnEntryActivated() |
387 | { |
388 | - if (active_scope_view_.IsValid() && !search_in_progress_) |
389 | - { |
390 | - active_scope_view_->ActivateFirst(); |
391 | - } |
392 | - // delay the activation until we get the SearchFinished signal |
393 | - activate_on_finish_ = search_in_progress_; |
394 | - |
395 | - if (activate_on_finish_) |
396 | - { |
397 | - activate_timeout_.reset(new glib::Timeout(MAX_ENTRY_ACTIVATE_WAIT_TIMEOUT, [this] { |
398 | - activate_on_finish_ = false; |
399 | + if (active_scope_view_.IsValid()) |
400 | + { |
401 | + if (!activate_delay_ && !search_bar_->in_live_search()) |
402 | active_scope_view_->ActivateFirst(); |
403 | - return FALSE; |
404 | - })); |
405 | + else |
406 | + activate_on_finish_ = true; |
407 | } |
408 | } |
409 | |
410 | @@ -1546,6 +1546,32 @@ |
411 | ubus_manager_.SendMessage(UBUS_OVERLAY_CLOSE_REQUEST); |
412 | } |
413 | |
414 | +nux::Area* DashView::SkipUnexpandableHeaderKeyNav() |
415 | +{ |
416 | + PlacesGroup::Ptr prev_view; |
417 | + auto category_views = active_scope_view_->GetOrderedCategoryViews(); |
418 | + |
419 | + for (auto category : category_views) |
420 | + { |
421 | + if (category->GetLayout() != nullptr) |
422 | + { |
423 | + auto header = category->GetHeaderFocusableView(); |
424 | + if (header && header->HasKeyFocus() && !category->IsExpandable()) |
425 | + { |
426 | + if (prev_view) |
427 | + return prev_view->GetChildView(); |
428 | + else |
429 | + return search_bar_->text_entry(); |
430 | + } |
431 | + |
432 | + if (category->IsVisible()) |
433 | + prev_view = category; |
434 | + } |
435 | + } |
436 | + |
437 | + return nullptr; |
438 | +} |
439 | + |
440 | nux::Area* DashView::FindKeyFocusArea(unsigned int key_symbol, |
441 | unsigned long x11_key_code, |
442 | unsigned long special_keys_state) |
443 | @@ -1576,11 +1602,9 @@ |
444 | direction = KEY_NAV_RIGHT; |
445 | break; |
446 | case NUX_VK_LEFT_TAB: |
447 | - case NUX_VK_PAGE_UP: |
448 | direction = KEY_NAV_TAB_PREVIOUS; |
449 | break; |
450 | case NUX_VK_TAB: |
451 | - case NUX_VK_PAGE_DOWN: |
452 | direction = KEY_NAV_TAB_NEXT; |
453 | break; |
454 | case NUX_VK_ENTER: |
455 | @@ -1588,6 +1612,14 @@ |
456 | // Not sure if Enter should be a navigation key |
457 | direction = KEY_NAV_ENTER; |
458 | break; |
459 | + case NUX_VK_PAGE_UP: |
460 | + case NUX_VK_PAGE_DOWN: |
461 | + if (!preview_displaying_) |
462 | + { |
463 | + active_scope_view_->PerformPageNavigation((x11_key_code == NUX_VK_PAGE_UP) ? ScrollDir::UP : ScrollDir::DOWN); |
464 | + return nux::GetWindowCompositor().GetKeyFocusArea(); |
465 | + } |
466 | + break; |
467 | default: |
468 | auto const& close_key = WindowManager::Default().close_window_key(); |
469 | |
470 | @@ -1691,6 +1723,14 @@ |
471 | } |
472 | } |
473 | |
474 | + if (direction == KEY_NAV_UP) |
475 | + { |
476 | + if (auto skip_view = SkipUnexpandableHeaderKeyNav()) |
477 | + { |
478 | + return skip_view; |
479 | + } |
480 | + } |
481 | + |
482 | bool search_key = false; |
483 | |
484 | if (direction == KEY_NAV_NONE) |
485 | |
486 | === modified file 'dash/DashView.h' |
487 | --- dash/DashView.h 2014-07-24 13:49:53 +0000 |
488 | +++ dash/DashView.h 2015-10-20 18:34:31 +0000 |
489 | @@ -137,6 +137,8 @@ |
490 | |
491 | nux::Area* KeyNavIteration(nux::KeyNavDirection direction); |
492 | |
493 | + nux::Area* SkipUnexpandableHeaderKeyNav(); |
494 | + |
495 | UBusManager ubus_manager_; |
496 | Scopes::Ptr scopes_; |
497 | ScopeViews scope_views_; |
498 | @@ -170,10 +172,8 @@ |
499 | |
500 | LocalResult last_activated_result_; |
501 | guint64 last_activated_timestamp_; |
502 | - bool search_in_progress_; |
503 | bool activate_on_finish_; |
504 | - glib::Source::UniquePtr activate_timeout_; |
505 | - |
506 | + glib::Source::UniquePtr activate_delay_; |
507 | bool visible_; |
508 | |
509 | nux::ObjectPtr<nux::IOpenGLBaseTexture> dash_view_copy_; |
510 | |
511 | === modified file 'dash/PlacesGroup.cpp' |
512 | --- dash/PlacesGroup.cpp 2014-07-24 14:14:47 +0000 |
513 | +++ dash/PlacesGroup.cpp 2015-10-20 18:34:31 +0000 |
514 | @@ -212,7 +212,12 @@ |
515 | if(direction == nux::KEY_NAV_UP) |
516 | nux::GetWindowCompositor().SetKeyFocusArea(_child_view, direction); |
517 | else |
518 | - nux::GetWindowCompositor().SetKeyFocusArea(GetHeaderFocusableView(), direction); |
519 | + { |
520 | + if (IsExpandable()) |
521 | + nux::GetWindowCompositor().SetKeyFocusArea(GetHeaderFocusableView(), direction); |
522 | + else |
523 | + nux::GetWindowCompositor().SetKeyFocusArea(_child_view, direction); |
524 | + } |
525 | }); |
526 | |
527 | UpdatePlacesGroupSize(); |
528 | @@ -567,6 +572,12 @@ |
529 | } |
530 | |
531 | bool |
532 | +PlacesGroup::IsExpandable() const |
533 | +{ |
534 | + return (_n_visible_items_in_unexpand_mode < _n_total_items); |
535 | +} |
536 | + |
537 | +bool |
538 | PlacesGroup::GetExpanded() const |
539 | { |
540 | return _is_expanded; |
541 | @@ -649,7 +660,7 @@ |
542 | |
543 | bool PlacesGroup::ShouldBeHighlighted() const |
544 | { |
545 | - return HeaderHasKeyFocus(); |
546 | + return (HeaderHasKeyFocus() && IsExpandable()); |
547 | } |
548 | |
549 | void PlacesGroup::SetResultsPreviewAnimationValue(float preview_animation) |
550 | |
551 | === modified file 'dash/PlacesGroup.h' |
552 | --- dash/PlacesGroup.h 2014-03-20 04:05:39 +0000 |
553 | +++ dash/PlacesGroup.h 2015-10-20 18:34:31 +0000 |
554 | @@ -77,6 +77,7 @@ |
555 | |
556 | void SetCounts(unsigned n_total_items); |
557 | |
558 | + virtual bool IsExpandable() const; |
559 | virtual void SetExpanded(bool is_expanded); |
560 | virtual bool GetExpanded() const; |
561 | |
562 | |
563 | === modified file 'dash/ResultView.cpp' |
564 | --- dash/ResultView.cpp 2014-03-20 05:13:04 +0000 |
565 | +++ dash/ResultView.cpp 2015-10-20 18:34:31 +0000 |
566 | @@ -23,6 +23,7 @@ |
567 | |
568 | #include "ResultView.h" |
569 | |
570 | +#include <boost/algorithm/string.hpp> |
571 | #include <Nux/Layout.h> |
572 | |
573 | #include "unity-shared/IntrospectableWrappers.h" |
574 | @@ -49,6 +50,7 @@ |
575 | , scale(DEFAULT_SCALE) |
576 | , renderer_(NULL) |
577 | , cached_result_(nullptr, nullptr, nullptr) |
578 | + , default_click_activation_(ActivateType::PREVIEW) |
579 | { |
580 | expanded.changed.connect([this](bool value) |
581 | { |
582 | @@ -61,6 +63,21 @@ |
583 | NeedRedraw(); |
584 | }); |
585 | |
586 | + default_click_activation.SetGetterFunction([this] { |
587 | + if (Settings::Instance().double_click_activate()) |
588 | + return default_click_activation_; |
589 | + return ActivateType::DIRECT; |
590 | + }); |
591 | + |
592 | + default_click_activation.SetSetterFunction([this] (ActivateType at) { |
593 | + if (default_click_activation_ != at) |
594 | + { |
595 | + default_click_activation_ = at; |
596 | + return true; |
597 | + } |
598 | + return false; |
599 | + }); |
600 | + |
601 | Settings::Instance().font_scaling.changed.connect(sigc::mem_fun(this, &ResultView::UpdateFontScale)); |
602 | enable_texture_render.changed.connect(sigc::mem_fun(this, &ResultView::OnEnableRenderToTexture)); |
603 | scale.changed.connect(sigc::mem_fun(this, &ResultView::UpdateScale)); |
604 | @@ -208,6 +225,14 @@ |
605 | return LocalResult(*GetIteratorAtRow(index)); |
606 | } |
607 | |
608 | +ResultView::ActivateType ResultView::GetLocalResultActivateType(LocalResult const& result) const |
609 | +{ |
610 | + if (boost::starts_with(result.uri, "x-unity-no-preview")) |
611 | + return ActivateType::DIRECT; |
612 | + |
613 | + return ActivateType::PREVIEW; |
614 | +} |
615 | + |
616 | void ResultView::Draw(nux::GraphicsEngine& GfxContext, bool force_draw) |
617 | {} |
618 | |
619 | |
620 | === modified file 'dash/ResultView.h' |
621 | --- dash/ResultView.h 2014-03-20 05:13:04 +0000 |
622 | +++ dash/ResultView.h 2015-10-20 18:34:31 +0000 |
623 | @@ -58,12 +58,11 @@ |
624 | class ResultView : public nux::View, public debug::Introspectable |
625 | { |
626 | public: |
627 | - typedef enum ActivateType_ |
628 | + enum class ActivateType |
629 | { |
630 | DIRECT, |
631 | - PREVIEW_LEFT_BUTTON, |
632 | PREVIEW |
633 | - } ActivateType; |
634 | + }; |
635 | |
636 | NUX_DECLARE_OBJECT_TYPE(ResultView, nux::View); |
637 | |
638 | @@ -73,8 +72,9 @@ |
639 | void SetModelRenderer(ResultRenderer* renderer); |
640 | void SetResultsModel(Results::Ptr const& results); |
641 | |
642 | - unsigned int GetIndexForLocalResult(LocalResult const& local_result); |
643 | + unsigned int GetIndexForLocalResult(LocalResult const&); |
644 | LocalResult GetLocalResultForIndex(unsigned int); |
645 | + ActivateType GetLocalResultActivateType(LocalResult const&) const; |
646 | |
647 | nux::Property<bool> expanded; |
648 | nux::Property<int> results_per_row; |
649 | @@ -82,6 +82,7 @@ |
650 | nux::Property<float> desaturation_progress; |
651 | nux::Property<bool> enable_texture_render; |
652 | nux::Property<double> scale; |
653 | + nux::RWProperty<ActivateType> default_click_activation; |
654 | |
655 | sigc::signal<void, LocalResult const&, ActivateType, GVariant*> ResultActivated; |
656 | |
657 | @@ -130,6 +131,7 @@ |
658 | void UpdateFontScale(double scale); |
659 | |
660 | Result cached_result_; |
661 | + ActivateType default_click_activation_; |
662 | connection::Manager result_connections_; |
663 | }; |
664 | |
665 | |
666 | === modified file 'dash/ResultViewGrid.cpp' |
667 | --- dash/ResultViewGrid.cpp 2014-03-20 04:05:39 +0000 |
668 | +++ dash/ResultViewGrid.cpp 2015-10-20 18:34:31 +0000 |
669 | @@ -24,9 +24,8 @@ |
670 | #include <NuxCore/Logger.h> |
671 | #include <Nux/VLayout.h> |
672 | #include <NuxGraphics/GdkGraphics.h> |
673 | -#include <gtk/gtk.h> |
674 | -#include <gdk/gdk.h> |
675 | #include <unity-protocol.h> |
676 | +#include <boost/algorithm/string.hpp> |
677 | |
678 | #include "unity-shared/IntrospectableWrappers.h" |
679 | #include "unity-shared/Timer.h" |
680 | @@ -34,8 +33,8 @@ |
681 | #include "unity-shared/UBusMessages.h" |
682 | #include "unity-shared/GraphicsUtils.h" |
683 | #include "unity-shared/RawPixel.h" |
684 | -#include "unity-shared/UnitySettings.h" |
685 | #include "unity-shared/WindowManager.h" |
686 | +#include <UnityCore/DesktopUtilities.h> |
687 | #include "ResultViewGrid.h" |
688 | #include "math.h" |
689 | |
690 | @@ -58,6 +57,8 @@ |
691 | |
692 | const RawPixel WIDTH_PADDING = 25_em; |
693 | const RawPixel SCROLLBAR_WIDTH = 3_em; |
694 | + |
695 | + const std::string APPLICATION_URI_PREFIX = "application://"; |
696 | } |
697 | |
698 | NUX_IMPLEMENT_OBJECT_TYPE(ResultViewGrid); |
699 | @@ -94,8 +95,7 @@ |
700 | scale.changed.connect(sigc::mem_fun(this, &ResultViewGrid::UpdateScale)); |
701 | |
702 | key_nav_focus_change.connect(sigc::mem_fun(this, &ResultViewGrid::OnKeyNavFocusChange)); |
703 | - key_nav_focus_activate.connect([this] (nux::Area *area) |
704 | - { |
705 | + key_nav_focus_activate.connect([this] (nux::Area *area) { |
706 | Activate(focused_result_, selected_index_, ResultView::ActivateType::DIRECT); |
707 | }); |
708 | key_down.connect(sigc::mem_fun(this, &ResultViewGrid::OnKeyDown)); |
709 | @@ -210,6 +210,12 @@ |
710 | row_y += row_index * row_height; |
711 | } |
712 | |
713 | + if (type == ActivateType::PREVIEW) |
714 | + { |
715 | + if (GetLocalResultActivateType(local_result) != type) |
716 | + type = ActivateType::DIRECT; |
717 | + } |
718 | + |
719 | active_index_ = index; |
720 | guint64 timestamp = nux::GetGraphicsDisplay()->GetCurrentEvent().x11_timestamp; |
721 | glib::Variant data(g_variant_new("(tiiiiii)", timestamp, column_x, row_y, column_width, row_height, left_results, right_results)); |
722 | @@ -796,6 +802,7 @@ |
723 | unsigned num_results = GetNumResults(); |
724 | unsigned index = GetIndexAtPosition(x, y); |
725 | mouse_over_index_ = index; |
726 | + |
727 | if (index < num_results) |
728 | { |
729 | // we got a click on a button so activate it |
730 | @@ -805,32 +812,32 @@ |
731 | focused_result_ = result; |
732 | activated_result_ = result; |
733 | |
734 | - |
735 | if (nux::GetEventButton(button_flags) == nux::NUX_MOUSE_BUTTON1) |
736 | { |
737 | - if (unity::Settings::Instance().double_click_activate) |
738 | + if (default_click_activation() == ActivateType::PREVIEW && |
739 | + GetLocalResultActivateType(activated_result_) == ActivateType::PREVIEW) |
740 | { |
741 | // delay activate for single left click. (for double click check) |
742 | - activate_timer_.reset(new glib::Timeout(DOUBLE_CLICK_SPEED, [this, index]() { |
743 | - Activate(activated_result_, index, ResultView::ActivateType::PREVIEW_LEFT_BUTTON); |
744 | + activate_timer_.reset(new glib::Timeout(DOUBLE_CLICK_SPEED, [this, index] { |
745 | + Activate(activated_result_, index, ActivateType::PREVIEW); |
746 | return false; |
747 | })); |
748 | } |
749 | else |
750 | { |
751 | - Activate(activated_result_, index, ResultView::ActivateType::DIRECT); |
752 | + Activate(activated_result_, index, ActivateType::DIRECT); |
753 | } |
754 | } |
755 | else |
756 | { |
757 | - Activate(activated_result_, index, ResultView::ActivateType::PREVIEW); |
758 | + Activate(activated_result_, index, ActivateType::PREVIEW); |
759 | } |
760 | } |
761 | } |
762 | |
763 | void ResultViewGrid::MouseDoubleClick(int x, int y, unsigned long button_flags, unsigned long key_flags) |
764 | { |
765 | - if (unity::Settings::Instance().double_click_activate == false) |
766 | + if (default_click_activation() == ActivateType::DIRECT) |
767 | return; |
768 | |
769 | unsigned num_results = GetNumResults(); |
770 | @@ -845,7 +852,7 @@ |
771 | focused_result_ = result; |
772 | |
773 | activated_result_ = result; |
774 | - Activate(activated_result_, index, ResultView::ActivateType::DIRECT); |
775 | + Activate(activated_result_, index, ActivateType::DIRECT); |
776 | } |
777 | } |
778 | |
779 | @@ -916,6 +923,15 @@ |
780 | if (current_drag_result_.empty()) |
781 | current_drag_result_.uri = current_drag_result_.uri.substr(current_drag_result_.uri.find(":") + 1); |
782 | |
783 | + if (boost::starts_with(current_drag_result_.uri, APPLICATION_URI_PREFIX)) |
784 | + { |
785 | + auto desktop_id = current_drag_result_.uri.substr(APPLICATION_URI_PREFIX.size()); |
786 | + auto desktop_path = DesktopUtilities::GetDesktopPathById(desktop_id); |
787 | + |
788 | + if (!desktop_path.empty()) |
789 | + current_drag_result_.uri = "file://" + desktop_path; |
790 | + } |
791 | + |
792 | LOG_DEBUG (logger) << "Dnd begin at " << |
793 | last_mouse_down_x_ << ", " << last_mouse_down_y_ << " - using; " |
794 | << current_drag_result_.uri; |
795 | |
796 | === modified file 'dash/ScopeView.cpp' |
797 | --- dash/ScopeView.cpp 2014-08-06 14:09:30 +0000 |
798 | +++ dash/ScopeView.cpp 2015-10-20 18:34:31 +0000 |
799 | @@ -481,47 +481,40 @@ |
800 | /* Reset result count */ |
801 | counts_[group] = 0; |
802 | |
803 | - ResultView* results_view = nullptr; |
804 | + auto* results_view = new ResultViewGrid(NUX_TRACKER_LOCATION); |
805 | + |
806 | if (category.GetContentType() == "social" && category.renderer_name == "default") |
807 | { |
808 | - results_view = new ResultViewGrid(NUX_TRACKER_LOCATION); |
809 | results_view->SetModelRenderer(new ResultRendererHorizontalTile(NUX_TRACKER_LOCATION)); |
810 | - static_cast<ResultViewGrid*> (results_view)->horizontal_spacing = CARD_VIEW_GAP_HORIZ.CP(scale()); |
811 | - static_cast<ResultViewGrid*> (results_view)->vertical_spacing = CARD_VIEW_GAP_VERT.CP(scale()); |
812 | + results_view->horizontal_spacing = CARD_VIEW_GAP_HORIZ.CP(scale()); |
813 | + results_view->vertical_spacing = CARD_VIEW_GAP_VERT.CP(scale()); |
814 | } |
815 | else |
816 | { |
817 | - results_view = new ResultViewGrid(NUX_TRACKER_LOCATION); |
818 | results_view->SetModelRenderer(new ResultRendererTile(NUX_TRACKER_LOCATION)); |
819 | } |
820 | |
821 | if (scope_) |
822 | { |
823 | - const std::string category_id = category.id(); |
824 | - std::string unique_id = category.name() + scope_->name(); |
825 | - results_view->unique_id = unique_id; |
826 | + results_view->unique_id = name + scope_->name(); |
827 | results_view->expanded = false; |
828 | |
829 | - results_view->ResultActivated.connect([this, unique_id, category_id] (LocalResult const& local_result, ResultView::ActivateType type, GVariant* data) |
830 | - { |
831 | - if (g_str_has_prefix(local_result.uri.c_str(), "x-unity-no-preview")) |
832 | - type = ResultView::ActivateType::DIRECT; |
833 | - |
834 | - // Applications scope results should be activated on left-click (instead of preview). Note that app scope can still |
835 | - // respond with preview for activation request (the case for uninstalled apps). |
836 | - bool is_app_scope_result = (scope_->id() == "applications.scope" || (scope_->id() == "home.scope" && category_id == "applications.scope")); |
837 | - |
838 | - if (is_app_scope_result && type == ResultView::ActivateType::PREVIEW_LEFT_BUTTON) |
839 | - type = ResultView::ActivateType::DIRECT; |
840 | - |
841 | - result_activated.emit(type, local_result, data, unique_id); |
842 | + if (scope_->id() == "applications.scope" || |
843 | + (scope_->id() == "home.scope" && category.id() == "applications.scope")) |
844 | + { |
845 | + results_view->default_click_activation = ResultView::ActivateType::DIRECT; |
846 | + } |
847 | + |
848 | + results_view->ResultActivated.connect([this, results_view] (LocalResult const& local_result, ResultView::ActivateType type, GVariant* data) |
849 | + { |
850 | + result_activated.emit(type, local_result, data, results_view->unique_id()); |
851 | + |
852 | switch (type) |
853 | { |
854 | case ResultView::ActivateType::DIRECT: |
855 | { |
856 | scope_->Activate(local_result, nullptr, cancellable_); |
857 | } break; |
858 | - case ResultView::ActivateType::PREVIEW_LEFT_BUTTON: |
859 | case ResultView::ActivateType::PREVIEW: |
860 | { |
861 | scope_->Preview(local_result, nullptr, cancellable_); |
862 | @@ -1007,6 +1000,11 @@ |
863 | scroll_view_->ScrollToPosition(nux::Geometry(0, 0, 0, 0)); |
864 | } |
865 | |
866 | +void ScopeView::PerformPageNavigation(ScrollDir dir) |
867 | +{ |
868 | + scroll_view_->page_direction.emit(dir); |
869 | +} |
870 | + |
871 | void ScopeView::ActivateFirst() |
872 | { |
873 | if (!scope_) |
874 | |
875 | === modified file 'dash/ScopeView.h' |
876 | --- dash/ScopeView.h 2014-08-06 14:09:30 +0000 |
877 | +++ dash/ScopeView.h 2015-10-20 18:34:31 +0000 |
878 | @@ -36,6 +36,7 @@ |
879 | #include "PlacesGroup.h" |
880 | #include "ResultViewGrid.h" |
881 | #include "unity-shared/UBusWrapper.h" |
882 | +#include "unity-shared/PlacesOverlayVScrollBar.h" |
883 | |
884 | namespace unity |
885 | { |
886 | @@ -61,6 +62,7 @@ |
887 | int GetNumRows(); |
888 | void AboutToShow(); |
889 | void JumpToTop(); |
890 | + void PerformPageNavigation(ScrollDir dir); |
891 | |
892 | virtual void ActivateFirst(); |
893 | |
894 | |
895 | === modified file 'debian/changelog' |
896 | --- debian/changelog 2015-06-03 15:22:38 +0000 |
897 | +++ debian/changelog 2015-10-20 18:34:31 +0000 |
898 | @@ -1,3 +1,54 @@ |
899 | +unity (7.2.6-0ubuntu1) UNRELEASED; urgency=medium |
900 | + |
901 | + * New upstream release |
902 | + |
903 | + [ Andrea Azzarone ] |
904 | + * Merge patch from https://launchpadlibrarian.net/216276242/low-gfx- |
905 | + override.patch (LP: #1491913) |
906 | + * Properly hide decorations when on "Show Desktop" mode. (LP: #1485073) |
907 | + * Do not handle events coming from viewports not actually containing the window. |
908 | + (LP: #1449654) |
909 | + * Make sure new icons are added to the model before calling SortAndUpdate |
910 | + (LP: #1458950) |
911 | + * GnomeSessionManager: Do not allow shutdown when screen is locked. (LP: #1460626) |
912 | + |
913 | + [ Chris Townsend ] |
914 | + * When looking for the top-most valid window in a VP, also check if the window |
915 | + is focused if the window is set to Always on Top. This allows Launcher icon |
916 | + spread to work properly when a window is minimized an Always on Top exists in |
917 | + the group. (LP: #1131385) |
918 | + * Wait on Spread to be terminated before showing the Quicklist. (LP: #1441626) |
919 | + * If dragging an application:// uri type from the Dash to the desktop, change it |
920 | + to a file:// uri type so Nautilus can understand the type a make a copy of it |
921 | + on the desktop. (LP: #1241972) |
922 | + * Enable real page up/page down key navigation in the Dash. When using these |
923 | + keys the view scrolls the length of the visible view. (LP: #913612) |
924 | + * Save the active window when showing the Hud so the correct window is focused |
925 | + when hiding the Hud. Fixes issue when "Always on Top" windows are present. |
926 | + (LP: #1366583) |
927 | + * Save the active window when showing the Dash so the correct window is focused |
928 | + when hiding the Dash. Fixes issue when "Always on Top" windows are present. |
929 | + (LP: #1446634) |
930 | + * When using keyboard navigation in the Dash, skip category headers that are not |
931 | + expandable. Also, do not highlight the category header when the mouse cursor |
932 | + is over it. (LP: #1045933) |
933 | + * Also use the Compiz show() method when forcing an unmapped window to be |
934 | + visible when clicking on it's active Launcher icon. (LP: #989588) |
935 | + * Add option to enable and disable Unity low graphics mode on the fly in ccsm or |
936 | + via gsettings. (LP: #1412937) |
937 | + |
938 | + [ Marco Trevisan (Treviño) ] |
939 | + * ResultViewGrid: wait for double-click event only if the relative result needs |
940 | + the Preview (LP: #1291950) |
941 | + * OverlayWindowButtons: trigger a queuedraw also when a child requires a redraw |
942 | + (LP: #1461618) |
943 | + * GnomeSessionManager: Request ScreenSaver (de)activation on VT changes (LP: |
944 | + #1405349) |
945 | + * UScreen, PanelService: get monitor at position, ignoring pre-multipled Gdk |
946 | + scale factor (LP: #1351591) |
947 | + |
948 | + -- Marco Trevisan (Treviño) <marco@ubuntu.com> Thu, 15 Oct 2015 17:35:51 +0100 |
949 | + |
950 | unity (7.2.5+14.04.20150603-0ubuntu1) trusty; urgency=medium |
951 | |
952 | [ Chris Townsend ] |
953 | |
954 | === modified file 'decorations/DecoratedWindow.cpp' |
955 | --- decorations/DecoratedWindow.cpp 2015-03-12 00:57:05 +0000 |
956 | +++ decorations/DecoratedWindow.cpp 2015-10-20 18:34:31 +0000 |
957 | @@ -840,6 +840,11 @@ |
958 | , impl_(new Impl(this, cwin)) |
959 | {} |
960 | |
961 | +CompWindow* Window::GetCompWindow() |
962 | +{ |
963 | + return impl_->win_; |
964 | +} |
965 | + |
966 | void Window::Update() |
967 | { |
968 | impl_->Update(); |
969 | |
970 | === modified file 'decorations/DecoratedWindow.h' |
971 | --- decorations/DecoratedWindow.h 2014-03-03 19:07:56 +0000 |
972 | +++ decorations/DecoratedWindow.h 2015-10-20 18:34:31 +0000 |
973 | @@ -45,6 +45,7 @@ |
974 | nux::Property<bool> scaled; |
975 | nux::ROProperty<double> dpi_scale; |
976 | |
977 | + CompWindow* GetCompWindow(); |
978 | void Update(); |
979 | void Undecorate(); |
980 | void UpdateDecorationPosition(); |
981 | |
982 | === modified file 'decorations/DecorationsManager.cpp' |
983 | --- decorations/DecorationsManager.cpp 2015-03-12 00:57:05 +0000 |
984 | +++ decorations/DecorationsManager.cpp 2015-10-20 18:34:31 +0000 |
985 | @@ -178,7 +178,7 @@ |
986 | { |
987 | auto const& win = GetWindowByXid(xid); |
988 | |
989 | - if (win && !win->impl_->win_->hasUnmapReference()) |
990 | + if (win && !win->GetCompWindow()->hasUnmapReference()) |
991 | { |
992 | win->Update(); |
993 | return true; |
994 | @@ -312,6 +312,10 @@ |
995 | bool Manager::Impl::HandleFrameEvent(XEvent* event) |
996 | { |
997 | auto const& win = GetWindowByFrame(event->xany.window); |
998 | + CompWindow* comp_window = win ? win->GetCompWindow() : nullptr; |
999 | + |
1000 | + if (comp_window && comp_window->defaultViewport() != screen->vp()) |
1001 | + return false; |
1002 | |
1003 | // ButtonRelease events might happen also outside the frame window, in this |
1004 | // case we must unset the mouse owner, wherever the event happens. |
1005 | |
1006 | === modified file 'hud/HudButton.cpp' |
1007 | --- hud/HudButton.cpp 2014-07-24 14:20:30 +0000 |
1008 | +++ hud/HudButton.cpp 2015-10-20 18:34:31 +0000 |
1009 | @@ -20,11 +20,6 @@ |
1010 | */ |
1011 | #include "config.h" |
1012 | |
1013 | -#include <pango/pango.h> |
1014 | -#include <pango/pangocairo.h> |
1015 | -#include <gdk/gdk.h> |
1016 | -#include <gtk/gtk.h> |
1017 | - |
1018 | #include <Nux/Nux.h> |
1019 | #include <Nux/HLayout.h> |
1020 | #include <NuxCore/Logger.h> |
1021 | |
1022 | === modified file 'hud/HudController.cpp' |
1023 | --- hud/HudController.cpp 2014-07-24 14:20:30 +0000 |
1024 | +++ hud/HudController.cpp 2015-10-20 18:34:31 +0000 |
1025 | @@ -372,6 +372,8 @@ |
1026 | focused_app_icon_ = PKGDATADIR "/launcher_bfb.png"; |
1027 | } |
1028 | |
1029 | + wm.SaveInputFocus(); |
1030 | + |
1031 | LOG_DEBUG(logger) << "Taking application icon: " << focused_app_icon_; |
1032 | SetIcon(focused_app_icon_); |
1033 | FocusWindow(); |
1034 | |
1035 | === modified file 'hud/HudController.h' |
1036 | --- hud/HudController.h 2014-07-24 14:20:30 +0000 |
1037 | +++ hud/HudController.h 2015-10-20 18:34:31 +0000 |
1038 | @@ -22,7 +22,6 @@ |
1039 | #include <functional> |
1040 | #include <memory> |
1041 | |
1042 | -#include <gdk/gdk.h> |
1043 | #include <UnityCore/Hud.h> |
1044 | #include <UnityCore/GLibSignal.h> |
1045 | |
1046 | |
1047 | === modified file 'launcher/DeviceNotificationDisplayImp.cpp' |
1048 | --- launcher/DeviceNotificationDisplayImp.cpp 2013-10-03 23:48:48 +0000 |
1049 | +++ launcher/DeviceNotificationDisplayImp.cpp 2015-10-20 18:34:31 +0000 |
1050 | @@ -17,7 +17,6 @@ |
1051 | * Authored by: Andrea Azzarone <andrea.azzarone@canonical.com> |
1052 | */ |
1053 | |
1054 | -#include <gdk/gdk.h> |
1055 | #include "config.h" |
1056 | #include <glib/gi18n-lib.h> |
1057 | #include <libnotify/notify.h> |
1058 | |
1059 | === modified file 'launcher/LauncherController.cpp' |
1060 | --- launcher/LauncherController.cpp 2015-05-15 14:50:28 +0000 |
1061 | +++ launcher/LauncherController.cpp 2015-10-20 18:34:31 +0000 |
1062 | @@ -759,14 +759,14 @@ |
1063 | *uri_ptr = new_uri; |
1064 | }); |
1065 | |
1066 | + model_->AddIcon(icon); |
1067 | + |
1068 | if (icon->GetIconType() == AbstractLauncherIcon::IconType::APPLICATION) |
1069 | { |
1070 | icon->visibility_changed.connect(sigc::hide(sigc::mem_fun(this, &Impl::SortAndUpdate))); |
1071 | SortAndUpdate(); |
1072 | } |
1073 | |
1074 | - model_->AddIcon(icon); |
1075 | - |
1076 | std::string const& path = icon->DesktopFile(); |
1077 | |
1078 | if (!path.empty()) |
1079 | |
1080 | === modified file 'launcher/LauncherIcon.cpp' |
1081 | --- launcher/LauncherIcon.cpp 2015-05-15 14:50:28 +0000 |
1082 | +++ launcher/LauncherIcon.cpp 2015-10-20 18:34:31 +0000 |
1083 | @@ -577,10 +577,6 @@ |
1084 | } |
1085 | |
1086 | WindowManager& win_manager = WindowManager::Default(); |
1087 | - |
1088 | - if (win_manager.IsScaleActive()) |
1089 | - win_manager.TerminateScale(); |
1090 | - |
1091 | auto const& pos = GetTipPosition(monitor); |
1092 | |
1093 | /* If the expo plugin is active, we need to wait it to be terminated, before |
1094 | @@ -593,6 +589,15 @@ |
1095 | conn->disconnect(); |
1096 | }); |
1097 | } |
1098 | + else if (win_manager.IsScaleActive()) |
1099 | + { |
1100 | + auto conn = std::make_shared<sigc::connection>(); |
1101 | + *conn = win_manager.terminate_spread.connect([this, conn, pos, restore_input_focus] { |
1102 | + QuicklistManager::Default()->ShowQuicklist(_quicklist, pos.x, pos.y, restore_input_focus); |
1103 | + conn->disconnect(); |
1104 | + }); |
1105 | + win_manager.TerminateScale(); |
1106 | + } |
1107 | else |
1108 | { |
1109 | QuicklistManager::Default()->ShowQuicklist(_quicklist, pos.x, pos.y, restore_input_focus); |
1110 | |
1111 | === modified file 'panel/PanelView.cpp' |
1112 | --- panel/PanelView.cpp 2014-03-06 16:26:34 +0000 |
1113 | +++ panel/PanelView.cpp 2015-10-20 18:34:31 +0000 |
1114 | @@ -64,6 +64,7 @@ |
1115 | auto& wm = WindowManager::Default(); |
1116 | panel::Style::Instance().changed.connect(sigc::mem_fun(this, &PanelView::ForceUpdateBackground)); |
1117 | Settings::Instance().dpi_changed.connect(sigc::mem_fun(this, &PanelView::Resize)); |
1118 | + Settings::Instance().low_gfx_changed.connect(sigc::mem_fun(this, &PanelView::OnLowGfxChanged)); |
1119 | |
1120 | wm.average_color.changed.connect(sigc::mem_fun(this, &PanelView::OnBackgroundUpdate)); |
1121 | wm.initiate_spread.connect(sigc::mem_fun(this, &PanelView::OnSpreadInitiate)); |
1122 | @@ -252,6 +253,22 @@ |
1123 | EnableOverlayMode(false); |
1124 | } |
1125 | |
1126 | +void PanelView::OnLowGfxChanged() |
1127 | +{ |
1128 | + if (!Settings::Instance().GetLowGfxMode()) |
1129 | + { |
1130 | + nux::ROPConfig rop; |
1131 | + |
1132 | + rop.Blend = true; |
1133 | + rop.SrcBlend = GL_ZERO; |
1134 | + rop.DstBlend = GL_SRC_COLOR; |
1135 | + nux::Color darken_colour = nux::Color(0.9f, 0.9f, 0.9f, 1.0f); |
1136 | + bg_darken_layer_.reset(new nux::ColorLayer(darken_colour, false, rop)); |
1137 | + } |
1138 | + |
1139 | + ForceUpdateBackground(); |
1140 | +} |
1141 | + |
1142 | void PanelView::AddPanelView(PanelIndicatorsView* child, |
1143 | unsigned int stretchFactor) |
1144 | { |
1145 | @@ -540,6 +557,7 @@ |
1146 | is_dirty_ = true; |
1147 | UpdateBackground(); |
1148 | |
1149 | + QueueRelayout(); |
1150 | QueueDraw(); |
1151 | } |
1152 | |
1153 | |
1154 | === modified file 'panel/PanelView.h' |
1155 | --- panel/PanelView.h 2014-03-06 16:26:34 +0000 |
1156 | +++ panel/PanelView.h 2015-10-20 18:34:31 +0000 |
1157 | @@ -98,6 +98,7 @@ |
1158 | void OnOverlayHidden(GVariant *data); |
1159 | void OnSpreadInitiate(); |
1160 | void OnSpreadTerminate(); |
1161 | + void OnLowGfxChanged(); |
1162 | void EnableOverlayMode(bool); |
1163 | |
1164 | bool ActivateFirstSensitive(); |
1165 | |
1166 | === modified file 'plugins/unityshell/src/unityshell.cpp' |
1167 | --- plugins/unityshell/src/unityshell.cpp 2015-06-03 12:46:12 +0000 |
1168 | +++ plugins/unityshell/src/unityshell.cpp 2015-10-20 18:34:31 +0000 |
1169 | @@ -259,10 +259,16 @@ |
1170 | renderer.find("Mesa X11") != std::string::npos || |
1171 | renderer.find("LLVM") != std::string::npos || |
1172 | renderer.find("on softpipe") != std::string::npos || |
1173 | - (getenv("UNITY_LOW_GFX_MODE") != NULL && atoi(getenv("UNITY_LOW_GFX_MODE")) == 1)) |
1174 | + (getenv("UNITY_LOW_GFX_MODE") != NULL && atoi(getenv("UNITY_LOW_GFX_MODE")) == 1) || |
1175 | + optionGetLowGraphicsMode()) |
1176 | { |
1177 | unity_settings_.SetLowGfxMode(true); |
1178 | } |
1179 | + |
1180 | + if (getenv("UNITY_LOW_GFX_MODE") != NULL && atoi(getenv("UNITY_LOW_GFX_MODE")) == 0) |
1181 | + { |
1182 | + unity_settings_.SetLowGfxMode(false); |
1183 | + } |
1184 | #endif |
1185 | |
1186 | if (!failed) |
1187 | @@ -340,6 +346,7 @@ |
1188 | optionSetAutohideAnimationNotify(boost::bind(&UnityScreen::optionChanged, this, _1, _2)); |
1189 | optionSetDashBlurExperimentalNotify(boost::bind(&UnityScreen::optionChanged, this, _1, _2)); |
1190 | optionSetShortcutOverlayNotify(boost::bind(&UnityScreen::optionChanged, this, _1, _2)); |
1191 | + optionSetLowGraphicsModeNotify(boost::bind(&UnityScreen::optionChanged, this, _1, _2)); |
1192 | optionSetShowLauncherInitiate(boost::bind(&UnityScreen::showLauncherKeyInitiate, this, _1, _2, _3)); |
1193 | optionSetShowLauncherTerminate(boost::bind(&UnityScreen::showLauncherKeyTerminate, this, _1, _2, _3)); |
1194 | optionSetKeyboardFocusInitiate(boost::bind(&UnityScreen::setKeyboardFocusKeyInitiate, this, _1, _2, _3)); |
1195 | @@ -1223,7 +1230,6 @@ |
1196 | |
1197 | window->updateFrameRegionSetCurrentIndex(MAXSHORT); |
1198 | window->updateFrameRegion(region); |
1199 | - deco_win_->UpdateFrameRegion(region); |
1200 | window->updateFrameRegionSetCurrentIndex(oldUpdateFrameRegionIndex); |
1201 | } |
1202 | |
1203 | @@ -3595,6 +3601,14 @@ |
1204 | case UnityshellOptions::ShortcutOverlay: |
1205 | shortcut_controller_->SetEnabled(optionGetShortcutOverlay()); |
1206 | break; |
1207 | + case UnityshellOptions::LowGraphicsMode: |
1208 | + if (optionGetLowGraphicsMode()) |
1209 | + BackgroundEffectHelper::blur_type = BLUR_NONE; |
1210 | + else |
1211 | + BackgroundEffectHelper::blur_type = (unity::BlurType)optionGetDashBlurExperimental(); |
1212 | + |
1213 | + unity::Settings::Instance().SetLowGfxMode(optionGetLowGraphicsMode()); |
1214 | + break; |
1215 | case UnityshellOptions::DecayRate: |
1216 | launcher_options->edge_decay_rate = optionGetDecayRate() * 100; |
1217 | break; |
1218 | |
1219 | === modified file 'plugins/unityshell/unityshell.xml.in' |
1220 | --- plugins/unityshell/unityshell.xml.in 2014-04-07 03:21:46 +0000 |
1221 | +++ plugins/unityshell/unityshell.xml.in 2015-10-20 18:34:31 +0000 |
1222 | @@ -146,6 +146,12 @@ |
1223 | <_long>Enables possibility to display an overlay showing available mouse and keyboard shortcuts.</_long> |
1224 | <default>true</default> |
1225 | </option> |
1226 | + |
1227 | + <option name="low_graphics_mode" type="bool"> |
1228 | + <_short>Enable Low Graphics Mode</_short> |
1229 | + <_long>Enables low graphics mode regardless of hardware in the system</_long> |
1230 | + <default>false</default> |
1231 | + </option> |
1232 | </group> |
1233 | |
1234 | <group> |
1235 | |
1236 | === modified file 'unity-shared/BGHash.cpp' |
1237 | --- unity-shared/BGHash.cpp 2015-03-11 20:54:31 +0000 |
1238 | +++ unity-shared/BGHash.cpp 2015-10-20 18:34:31 +0000 |
1239 | @@ -116,8 +116,11 @@ |
1240 | .SetDuration(skip_animation ? 0 : TRANSITION_DURATION) |
1241 | .Start(); |
1242 | |
1243 | - // This will make sure that the animation starts even if the screen is idle. |
1244 | - nux::GetWindowThread()->RequestRedraw(); |
1245 | + if (nux::WindowThread* wt = nux::GetWindowThread()) |
1246 | + { |
1247 | + // This will make sure that the animation starts even if the screen is idle. |
1248 | + wt->RequestRedraw(); |
1249 | + } |
1250 | } |
1251 | |
1252 | void BGHash::OnTransitionUpdated(nux::Color const& new_color) |
1253 | |
1254 | === modified file 'unity-shared/CompizUtils.cpp' |
1255 | --- unity-shared/CompizUtils.cpp 2014-12-16 19:35:06 +0000 |
1256 | +++ unity-shared/CompizUtils.cpp 2015-10-20 18:34:31 +0000 |
1257 | @@ -190,9 +190,6 @@ |
1258 | if (win->wmType() & (CompWindowTypeDockMask | CompWindowTypeDesktopMask)) |
1259 | return elements; |
1260 | |
1261 | - if (win->inShowDesktopMode()) |
1262 | - return elements; |
1263 | - |
1264 | auto const& region = win->region(); |
1265 | bool rectangular = (region.numRects() == 1); |
1266 | bool alpha = win->alpha(); |
1267 | |
1268 | === modified file 'unity-shared/OverlayRenderer.cpp' |
1269 | --- unity-shared/OverlayRenderer.cpp 2014-07-24 14:14:47 +0000 |
1270 | +++ unity-shared/OverlayRenderer.cpp 2015-10-20 18:34:31 +0000 |
1271 | @@ -116,6 +116,8 @@ |
1272 | { |
1273 | parent->scale = Settings::Instance().em()->DPIScale(); |
1274 | parent->scale.changed.connect(sigc::hide(sigc::mem_fun(this, &OverlayRendererImpl::LoadScaledTextures))); |
1275 | + Settings::Instance().low_gfx_changed.connect(sigc::mem_fun(this, &OverlayRendererImpl::UpdateTextures)); |
1276 | + |
1277 | UpdateTextures(); |
1278 | LoadScaledTextures(); |
1279 | } |
1280 | |
1281 | === modified file 'unity-shared/OverlayScrollView.cpp' |
1282 | --- unity-shared/OverlayScrollView.cpp 2014-08-06 14:09:30 +0000 |
1283 | +++ unity-shared/OverlayScrollView.cpp 2015-10-20 18:34:31 +0000 |
1284 | @@ -50,7 +50,11 @@ |
1285 | scale.changed.connect([this] (double scale) { |
1286 | m_MouseWheelScrollSize = MOUSE_WHEEL_SCROLL_SIZE.CP(scale); |
1287 | }); |
1288 | + |
1289 | + page_direction.connect([scrollbar] (ScrollDir dir) { |
1290 | + scrollbar->PerformPageNavigation(dir); |
1291 | + }); |
1292 | } |
1293 | |
1294 | } // dash namespace |
1295 | -} // unity namespace |
1296 | \ No newline at end of file |
1297 | +} // unity namespace |
1298 | |
1299 | === modified file 'unity-shared/OverlayScrollView.h' |
1300 | --- unity-shared/OverlayScrollView.h 2014-08-06 14:09:30 +0000 |
1301 | +++ unity-shared/OverlayScrollView.h 2015-10-20 18:34:31 +0000 |
1302 | @@ -21,6 +21,7 @@ |
1303 | #define _UNITY_SCROLL_VIEW_H_ |
1304 | |
1305 | #include <Nux/Nux.h> |
1306 | +#include "PlacesOverlayVScrollBar.h" |
1307 | |
1308 | namespace unity |
1309 | { |
1310 | @@ -33,6 +34,7 @@ |
1311 | ScrollView(NUX_FILE_LINE_PROTO); |
1312 | |
1313 | nux::RWProperty<double> scale; |
1314 | + sigc::signal<void, ScrollDir> page_direction; |
1315 | |
1316 | using nux::ScrollView::SetVScrollBar; |
1317 | }; |
1318 | |
1319 | === modified file 'unity-shared/OverlayWindowButtons.cpp' |
1320 | --- unity-shared/OverlayWindowButtons.cpp 2014-02-26 20:26:01 +0000 |
1321 | +++ unity-shared/OverlayWindowButtons.cpp 2015-10-20 18:34:31 +0000 |
1322 | @@ -36,9 +36,9 @@ |
1323 | : nux::BaseWindow("OverlayWindowButtons") |
1324 | , window_buttons_(new WindowButtons()) |
1325 | { |
1326 | - window_buttons_->queue_draw.connect([this] (nux::Layout* /*layout*/) { |
1327 | - QueueDraw(); |
1328 | - }); |
1329 | + auto queue_draw = sigc::hide(sigc::mem_fun(this, &OverlayWindowButtons::QueueDraw)); |
1330 | + window_buttons_->queue_draw.connect(queue_draw); |
1331 | + window_buttons_->child_queue_draw.connect(queue_draw); |
1332 | |
1333 | AddChild(window_buttons_.GetPointer()); |
1334 | UpdateGeometry(); |
1335 | |
1336 | === modified file 'unity-shared/PlacesOverlayVScrollBar.cpp' |
1337 | --- unity-shared/PlacesOverlayVScrollBar.cpp 2014-08-06 14:12:12 +0000 |
1338 | +++ unity-shared/PlacesOverlayVScrollBar.cpp 2015-10-20 18:34:31 +0000 |
1339 | @@ -121,6 +121,11 @@ |
1340 | animation_.SetFinishValue(stop); |
1341 | } |
1342 | |
1343 | +void PlacesOverlayVScrollBar::PerformPageNavigation(ScrollDir dir) |
1344 | +{ |
1345 | + StartScrollAnimation(dir, _slider->GetBaseHeight()); |
1346 | +} |
1347 | + |
1348 | void PlacesOverlayVScrollBar::StartScrollAnimation(ScrollDir dir, int stop) |
1349 | { |
1350 | if (animation_.CurrentState() == nux::animation::Animation::State::Stopped) |
1351 | |
1352 | === modified file 'unity-shared/PlacesOverlayVScrollBar.h' |
1353 | --- unity-shared/PlacesOverlayVScrollBar.h 2014-08-06 14:12:12 +0000 |
1354 | +++ unity-shared/PlacesOverlayVScrollBar.h 2015-10-20 18:34:31 +0000 |
1355 | @@ -34,22 +34,24 @@ |
1356 | namespace dash |
1357 | { |
1358 | |
1359 | +enum class ScrollDir : unsigned int |
1360 | +{ |
1361 | + UP, |
1362 | + DOWN, |
1363 | +}; |
1364 | + |
1365 | class PlacesOverlayVScrollBar: public PlacesVScrollBar |
1366 | { |
1367 | public: |
1368 | PlacesOverlayVScrollBar(NUX_FILE_LINE_PROTO); |
1369 | virtual ~PlacesOverlayVScrollBar() {} |
1370 | |
1371 | + void PerformPageNavigation(ScrollDir dir); |
1372 | + |
1373 | protected: |
1374 | void Draw(nux::GraphicsEngine& graphics_engine, bool force_draw); |
1375 | |
1376 | private: |
1377 | - enum class ScrollDir : unsigned int |
1378 | - { |
1379 | - UP, |
1380 | - DOWN, |
1381 | - }; |
1382 | - |
1383 | void OnTrackGeometryChanged(nux::Area* area, nux::Geometry& geo); |
1384 | void OnVisibilityChanged(nux::Area* area, bool visible); |
1385 | void OnSensitivityChanged(nux::Area* area, bool sensitive); |
1386 | |
1387 | === modified file 'unity-shared/PluginAdapter.cpp' |
1388 | --- unity-shared/PluginAdapter.cpp 2014-12-16 19:27:36 +0000 |
1389 | +++ unity-shared/PluginAdapter.cpp 2015-10-20 18:34:31 +0000 |
1390 | @@ -627,7 +627,7 @@ |
1391 | if (window->defaultViewport() == screen_vp && |
1392 | window->isViewable() && window->isMapped() && |
1393 | !window->minimized() && !window->inShowDesktopMode() && |
1394 | - !(window->state() & CompWindowStateAboveMask) && |
1395 | + !((window->state() & CompWindowStateAboveMask) && !window->focused()) && |
1396 | !(window->type() & CompWindowTypeSplashMask) && |
1397 | !(window->type() & CompWindowTypeDockMask) && |
1398 | !window->overrideRedirect() && |
1399 | @@ -772,7 +772,10 @@ |
1400 | { |
1401 | CompWindow* window = m_Screen->findWindow(window_id); |
1402 | if (window && (window->actions() & CompWindowActionMinimizeMask)) |
1403 | + { |
1404 | window->unminimize(); |
1405 | + window->show(); |
1406 | + } |
1407 | } |
1408 | |
1409 | void PluginAdapter::Shade(Window window_id) |
1410 | @@ -953,6 +956,7 @@ |
1411 | if (forced_unminimize) |
1412 | { |
1413 | top_window->unminimize(); |
1414 | + top_window->show(); |
1415 | } |
1416 | |
1417 | top_window->raise(); |
1418 | |
1419 | === modified file 'unity-shared/SearchBar.cpp' |
1420 | --- unity-shared/SearchBar.cpp 2014-12-15 19:06:58 +0000 |
1421 | +++ unity-shared/SearchBar.cpp 2015-10-20 18:34:31 +0000 |
1422 | @@ -141,6 +141,9 @@ |
1423 | : View(NUX_FILE_LINE_PARAM) |
1424 | , showing_filters(false) |
1425 | , can_refine_search(false) |
1426 | + , im_active([this] { return pango_entry_->im_active(); }) |
1427 | + , im_preedit([this] { return pango_entry_->im_preedit(); }) |
1428 | + , in_live_search([this] { return live_search_timeout_ && live_search_timeout_->IsRunning(); }) |
1429 | , live_search_wait(DEFAULT_LIVE_SEARCH_TIMEOUT) |
1430 | , scale(DEFAULT_SCALE) |
1431 | , show_filter_hint_(show_filter_hint) |
1432 | @@ -179,11 +182,11 @@ |
1433 | pango_entry_->mouse_down.connect(sigc::mem_fun(this, &SearchBar::OnMouseButtonDown)); |
1434 | pango_entry_->end_key_focus.connect(sigc::mem_fun(this, &SearchBar::OnEndKeyFocus)); |
1435 | pango_entry_->key_up.connect([this] (unsigned int, unsigned long, unsigned long) { |
1436 | - if (get_im_preedit()) |
1437 | - { |
1438 | - hint_->SetVisible(false); |
1439 | - hint_->QueueDraw(); |
1440 | - } |
1441 | + if (im_preedit()) |
1442 | + { |
1443 | + hint_->SetVisible(false); |
1444 | + hint_->QueueDraw(); |
1445 | + } |
1446 | }); |
1447 | |
1448 | layered_layout_ = new nux::LayeredLayout(); |
1449 | @@ -263,10 +266,8 @@ |
1450 | OnFontChanged(); |
1451 | |
1452 | search_hint.changed.connect([this](std::string const& s) { OnSearchHintChanged(); }); |
1453 | - search_string.SetGetterFunction(sigc::mem_fun(this, &SearchBar::get_search_string)); |
1454 | + search_string.SetGetterFunction([this] { return pango_entry_->GetText(); }); |
1455 | search_string.SetSetterFunction(sigc::mem_fun(this, &SearchBar::set_search_string)); |
1456 | - im_active.SetGetterFunction(sigc::mem_fun(this, &SearchBar::get_im_active)); |
1457 | - im_preedit.SetGetterFunction(sigc::mem_fun(this, &SearchBar::get_im_preedit)); |
1458 | showing_filters.changed.connect(sigc::mem_fun(this, &SearchBar::OnShowingFiltersChanged)); |
1459 | scale.changed.connect(sigc::mem_fun(this, &SearchBar::UpdateScale)); |
1460 | Settings::Instance().font_scaling.changed.connect(sigc::hide(sigc::mem_fun(this, &SearchBar::UpdateSearchBarSize))); |
1461 | @@ -633,11 +634,6 @@ |
1462 | return expander_view_; |
1463 | } |
1464 | |
1465 | -std::string SearchBar::get_search_string() const |
1466 | -{ |
1467 | - return pango_entry_->GetText(); |
1468 | -} |
1469 | - |
1470 | bool SearchBar::set_search_string(std::string const& string) |
1471 | { |
1472 | pango_entry_->SetText(string.c_str()); |
1473 | @@ -649,16 +645,6 @@ |
1474 | return true; |
1475 | } |
1476 | |
1477 | -bool SearchBar::get_im_active() const |
1478 | -{ |
1479 | - return pango_entry_->im_active(); |
1480 | -} |
1481 | - |
1482 | -bool SearchBar::get_im_preedit() const |
1483 | -{ |
1484 | - return pango_entry_->im_preedit(); |
1485 | -} |
1486 | - |
1487 | // |
1488 | // Highlight |
1489 | // |
1490 | |
1491 | === modified file 'unity-shared/SearchBar.h' |
1492 | --- unity-shared/SearchBar.h 2014-12-08 22:02:13 +0000 |
1493 | +++ unity-shared/SearchBar.h 2015-10-20 18:34:31 +0000 |
1494 | @@ -63,6 +63,7 @@ |
1495 | nux::Property<bool> can_refine_search; |
1496 | nux::ROProperty<bool> im_active; |
1497 | nux::ROProperty<bool> im_preedit; |
1498 | + nux::ROProperty<bool> in_live_search; |
1499 | nux::Property<unsigned> live_search_wait; |
1500 | nux::Property<double> scale; |
1501 | |
1502 | @@ -88,10 +89,7 @@ |
1503 | bool OnLiveSearchTimeout(); |
1504 | bool OnSpinnerStartCb(); |
1505 | |
1506 | - std::string get_search_string() const; |
1507 | bool set_search_string(std::string const& string); |
1508 | - bool get_im_active() const; |
1509 | - bool get_im_preedit() const; |
1510 | bool show_filter_hint_; |
1511 | |
1512 | std::string GetName() const; |
1513 | |
1514 | === modified file 'unity-shared/UnitySettings.cpp' |
1515 | --- unity-shared/UnitySettings.cpp 2015-03-12 00:57:05 +0000 |
1516 | +++ unity-shared/UnitySettings.cpp 2015-10-20 18:34:31 +0000 |
1517 | @@ -371,7 +371,12 @@ |
1518 | |
1519 | void Settings::SetLowGfxMode(const bool low_gfx) |
1520 | { |
1521 | - pimpl->lowGfx_ = low_gfx; |
1522 | + if (pimpl->lowGfx_ != low_gfx) |
1523 | + { |
1524 | + pimpl->lowGfx_ = low_gfx; |
1525 | + |
1526 | + low_gfx_changed.emit(); |
1527 | + } |
1528 | } |
1529 | |
1530 | EMConverter::Ptr const& Settings::em(int monitor) const |
1531 | |
1532 | === modified file 'unity-shared/UnitySettings.h' |
1533 | --- unity-shared/UnitySettings.h 2014-03-20 05:03:55 +0000 |
1534 | +++ unity-shared/UnitySettings.h 2015-10-20 18:34:31 +0000 |
1535 | @@ -57,6 +57,7 @@ |
1536 | nux::Property<double> font_scaling; |
1537 | |
1538 | sigc::signal<void> dpi_changed; |
1539 | + sigc::signal<void> low_gfx_changed; |
1540 | |
1541 | private: |
1542 | class Impl; |
1543 | |
1544 | === modified file 'unity-shared/WindowButtons.cpp' |
1545 | --- unity-shared/WindowButtons.cpp 2014-02-28 17:41:25 +0000 |
1546 | +++ unity-shared/WindowButtons.cpp 2015-10-20 18:34:31 +0000 |
1547 | @@ -64,6 +64,7 @@ |
1548 | if (new_state != visual_state_) |
1549 | { |
1550 | visual_state_ = new_state; |
1551 | + visual_state_change.emit(this); |
1552 | QueueDraw(); |
1553 | } |
1554 | } |