Merge lp:~3v1n0/unity/icon-dragging-cancels-on-windows-mapping into lp:unity

Proposed by Marco Trevisan (Treviño)
Status: Merged
Approved by: Marco Trevisan (Treviño)
Approved revision: no longer in the source branch.
Merged at revision: 2652
Proposed branch: lp:~3v1n0/unity/icon-dragging-cancels-on-windows-mapping
Merge into: lp:unity
Diff against target: 161 lines (+37/-32)
6 files modified
launcher/Launcher.cpp (+2/-24)
launcher/Launcher.h (+0/-3)
launcher/LauncherDragWindow.cpp (+12/-4)
launcher/LauncherDragWindow.h (+1/-0)
tests/test_launcher.cpp (+1/-1)
tests/test_launcher_drag_window.cpp (+21/-0)
To merge this branch: bzr merge lp:~3v1n0/unity/icon-dragging-cancels-on-windows-mapping
Reviewer Review Type Date Requested Status
Andrea Azzarone (community) Approve
Review via email: mp+122392@code.launchpad.net

Commit message

LauncherDragWindow: cancel drag on window mapped/unmapped

Description of the change

Make sure that an icon dragged from the launcher emits a drag-cancel signal when a window is mapped/unmapped.

unit tests added.

To post a comment you must log in.
Revision history for this message
Andrea Azzarone (azzar1) wrote :

LGTM.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'launcher/Launcher.cpp'
2--- launcher/Launcher.cpp 2012-08-31 21:32:38 +0000
3+++ launcher/Launcher.cpp 2012-09-01 14:28:19 +0000
4@@ -177,9 +177,8 @@
5 ql_manager.quicklist_closed.connect(sigc::mem_fun(this, &Launcher::RecvQuicklistClosed));
6
7 WindowManager& plugin_adapter = *(WindowManager::Default());
8- plugin_adapter.window_mapped.connect(sigc::mem_fun(this, &Launcher::OnWindowMapped));
9- plugin_adapter.window_unmapped.connect(sigc::mem_fun(this, &Launcher::OnWindowUnmapped));
10-
11+ plugin_adapter.window_mapped.connect(sigc::hide(sigc::mem_fun(this, &Launcher::DndTimeoutSetup)));
12+ plugin_adapter.window_unmapped.connect(sigc::hide(sigc::mem_fun(this, &Launcher::DndTimeoutSetup)));
13 plugin_adapter.initiate_spread.connect(sigc::mem_fun(this, &Launcher::OnPluginStateChanged));
14 plugin_adapter.initiate_expo.connect(sigc::mem_fun(this, &Launcher::OnPluginStateChanged));
15 plugin_adapter.terminate_spread.connect(sigc::mem_fun(this, &Launcher::OnPluginStateChanged));
16@@ -1392,27 +1391,6 @@
17 sources_.AddTimeout(200, cb_func, DND_CHECK_TIMEOUT);
18 }
19
20-void Launcher::OnWindowMapped(guint32 xid)
21-{
22- //CompWindow* window = _screen->findWindow(xid);
23- //if (window && window->type() | CompWindowTypeDndMask)
24- //{
25- DndTimeoutSetup();
26- //}
27-
28- if (GetActionState() != ACTION_NONE)
29- ResetMouseDragState();
30-}
31-
32-void Launcher::OnWindowUnmapped(guint32 xid)
33-{
34- //CompWindow* window = _screen->findWindow(xid);
35- //if (window && window->type() | CompWindowTypeDndMask)
36- //{
37- DndTimeoutSetup();
38- //}
39-}
40-
41 void Launcher::OnPluginStateChanged()
42 {
43 _hide_machine.SetQuirk (LauncherHideMachine::EXPO_ACTIVE, WindowManager::Default ()->IsExpoActive ());
44
45=== modified file 'launcher/Launcher.h'
46--- launcher/Launcher.h 2012-08-31 20:13:12 +0000
47+++ launcher/Launcher.h 2012-09-01 14:28:19 +0000
48@@ -188,9 +188,6 @@
49 void OnOptionChanged();
50 void UpdateOptions(Options::Ptr options);
51
52- void OnWindowMapped(guint32 xid);
53- void OnWindowUnmapped(guint32 xid);
54-
55 void OnDragStart(const nux::GestureEvent &event);
56 void OnDragUpdate(const nux::GestureEvent &event);
57 void OnDragFinish(const nux::GestureEvent &event);
58
59=== modified file 'launcher/LauncherDragWindow.cpp'
60--- launcher/LauncherDragWindow.cpp 2012-08-31 20:13:37 +0000
61+++ launcher/LauncherDragWindow.cpp 2012-09-01 14:28:19 +0000
62@@ -24,6 +24,7 @@
63 #include <Nux/TextureArea.h>
64
65 #include "LauncherDragWindow.h"
66+#include "unity-shared/WindowManager.h"
67
68 namespace unity
69 {
70@@ -41,11 +42,12 @@
71
72 key_down.connect([this] (unsigned long, unsigned long keysym, unsigned long, const char*, unsigned short) {
73 if (keysym == NUX_VK_ESCAPE)
74- {
75- _cancelled = true;
76- drag_cancel_request.emit();
77- }
78+ CancelDrag();
79 });
80+
81+ auto wm = WindowManager::Default();
82+ wm->window_mapped.connect(sigc::hide(sigc::mem_fun(this, &LauncherDragWindow::CancelDrag)));
83+ wm->window_unmapped.connect(sigc::hide(sigc::mem_fun(this, &LauncherDragWindow::CancelDrag)));
84 }
85
86 LauncherDragWindow::~LauncherDragWindow()
87@@ -66,6 +68,12 @@
88 return _cancelled;
89 }
90
91+void LauncherDragWindow::CancelDrag()
92+{
93+ _cancelled = true;
94+ drag_cancel_request.emit();
95+}
96+
97 void LauncherDragWindow::SetAnimationTarget(int x, int y)
98 {
99 _animation_target = nux::Point2(x, y);
100
101=== modified file 'launcher/LauncherDragWindow.h'
102--- launcher/LauncherDragWindow.h 2012-08-31 14:40:17 +0000
103+++ launcher/LauncherDragWindow.h 2012-09-01 14:28:19 +0000
104@@ -57,6 +57,7 @@
105
106 private:
107 bool OnAnimationTimeout();
108+ void CancelDrag();
109
110 bool _cancelled;
111 nux::ObjectPtr<nux::IOpenGLBaseTexture> _icon;
112
113=== modified file 'tests/test_launcher.cpp'
114--- tests/test_launcher.cpp 2012-08-31 20:14:18 +0000
115+++ tests/test_launcher.cpp 2012-09-01 14:28:19 +0000
116@@ -204,7 +204,7 @@
117 EXPECT_EQ(launcher_->IconBackgroundIntensity(third, current), 0.0f);
118 }
119
120-TEST_F(TestLauncher, CancellingDragLauncherIcon)
121+TEST_F(TestLauncher, DragLauncherIconCancelRestoresIconOrder)
122 {
123 MockMockLauncherIcon::Ptr icon1(new MockMockLauncherIcon);
124 MockMockLauncherIcon::Ptr icon2(new MockMockLauncherIcon);
125
126=== modified file 'tests/test_launcher_drag_window.cpp'
127--- tests/test_launcher_drag_window.cpp 2012-08-31 20:14:18 +0000
128+++ tests/test_launcher_drag_window.cpp 2012-09-01 14:28:19 +0000
129@@ -20,6 +20,7 @@
130 #include <gmock/gmock.h>
131
132 #include "LauncherDragWindow.h"
133+#include "WindowManager.h"
134
135 using namespace unity::launcher;
136 using namespace testing;
137@@ -67,4 +68,24 @@
138 EXPECT_TRUE(drag_window.Cancelled());
139 }
140
141+TEST_F(TestLauncherDragWindow, CancelsOnWindowMapped)
142+{
143+ bool got_signal;
144+ drag_window.drag_cancel_request.connect([&got_signal] { got_signal = true; });
145+ WindowManager::Default()->window_mapped.emit(0);
146+
147+ EXPECT_TRUE(got_signal);
148+ EXPECT_TRUE(drag_window.Cancelled());
149+}
150+
151+TEST_F(TestLauncherDragWindow, CancelsOnWindowUnmapped)
152+{
153+ bool got_signal;
154+ drag_window.drag_cancel_request.connect([&got_signal] { got_signal = true; });
155+ WindowManager::Default()->window_unmapped.emit(0);
156+
157+ EXPECT_TRUE(got_signal);
158+ EXPECT_TRUE(drag_window.Cancelled());
159+}
160+
161 }