1
------------------------------------------------------------
3
committer: Marco Trevisan (Treviño) <mail@3v1n0.net>
5
timestamp: Fri 2013-02-08 02:46:52 +0000
7
Simulating direct commit to trunk
9
=== modified file 'launcher/EdgeBarrierController.cpp'
10
--- launcher/EdgeBarrierController.cpp 2012-12-11 23:38:30 +0000
11
+++ launcher/EdgeBarrierController.cpp 2013-02-08 01:00:23 +0000
15
#include "EdgeBarrierController.h"
16
+#include "EdgeBarrierControllerPrivate.h"
17
#include "Decaymulator.h"
18
#include "unity-shared/UScreen.h"
19
#include "UnityCore/GLibSource.h"
20
------------------------------------------------------------
22
committer: Launchpad Translations on behalf of webapps
24
timestamp: Fri 2013-02-08 02:46:52 +0000
26
Simulating direct commit to trunk
28
=== modified file 'launcher/EdgeBarrierController.cpp'
29
--- launcher/EdgeBarrierController.cpp 2012-12-11 23:38:30 +0000
30
+++ launcher/EdgeBarrierController.cpp 2013-02-08 01:00:23 +0000
34
#include "EdgeBarrierController.h"
35
+#include "EdgeBarrierControllerPrivate.h"
36
#include "Decaymulator.h"
37
#include "unity-shared/UScreen.h"
38
#include "UnityCore/GLibSource.h"
39
------------------------------------------------------------
41
author: Automatic PS uploader <ps-jenkins@lists.canonical.com>
44
timestamp: Thu 2013-04-18 09:36:04 +0000
46
Releasing 7.0.0daily13.04.18~13.04-0ubuntu1 to ubuntu.
48
Approved by PS Jenkins bot.
50
=== modified file 'debian/changelog'
51
--- debian/changelog 2013-04-17 04:07:04 +0000
52
+++ debian/changelog 2013-04-18 05:43:35 +0000
54
+unity (7.0.0daily13.04.18~13.04-0ubuntu1) raring; urgency=low
56
+ [ Manuel de la Pena ]
57
+ * Purchased songs won't download when not logged to U1 (LP: #1168674)
59
+ [ Ubuntu daily release ]
60
+ * Automatic snapshot from revision 3309
62
+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 18 Apr 2013 05:43:34 +0000
64
unity (7.0.0daily13.04.17~13.04-0ubuntu1) raring; urgency=low
66
[ Marco Trevisan (Treviño) ]
67
------------------------------------------------------------
69
author: Marco Trevisan (Treviño) <mail@3v1n0.net>, Brandon Schaefer <brandon.schaefer@canonical.com>
72
timestamp: Fri 2013-02-08 02:46:52 +0000
74
EdgeBarrierController: add multiple types of subscriber results, fix edges on autohide
76
Now when sticky keys are disabled, and the launcher is set to autohide, the mouse will hit both sides of the screen (instead of just the left side of the barrier); at that point we'll release the events coming from the launcher-less side of the monitor, but we'll use them to temporary keep the barrier "broken". Fixes: https://bugs.launchpad.net/bugs/1064945.
78
Approved by Brandon Schaefer.
80
=== modified file 'launcher/EdgeBarrierController.cpp'
81
--- launcher/EdgeBarrierController.cpp 2012-12-11 23:38:30 +0000
82
+++ launcher/EdgeBarrierController.cpp 2013-02-08 01:00:23 +0000
86
#include "EdgeBarrierController.h"
87
+#include "EdgeBarrierControllerPrivate.h"
88
#include "Decaymulator.h"
89
#include "unity-shared/UScreen.h"
90
#include "UnityCore/GLibSource.h"
91
------------------------------------------------------------
93
author: Sebastien Bacher <seb128@ubuntu.com>
96
timestamp: Tue 2013-04-23 15:35:41 +0000
98
Use '%s:' string for preview hints, rather than just appending ':'. Fixes: https://bugs.launchpad.net/bugs/1074038.
100
Approved by Marco Trevisan (Treviño), PS Jenkins bot.
102
=== modified file 'dash/previews/PreviewInfoHintWidget.cpp'
103
--- dash/previews/PreviewInfoHintWidget.cpp 2013-01-16 18:34:18 +0000
104
+++ dash/previews/PreviewInfoHintWidget.cpp 2013-04-23 13:04:50 +0000
110
+#include <glib/gi18n-lib.h>
112
#include "PreviewInfoHintWidget.h"
113
#include "unity-shared/IntrospectableWrappers.h"
114
#include <NuxCore/Logger.h>
116
StaticCairoTextPtr info_name;
117
if (!info_hint->display_name.empty())
119
- std::string tmp_display_name = info_hint->display_name;
120
- tmp_display_name += ":";
121
+ // The "%s" is used in the dash preview to display the "<hint>: <value>" infos
122
+ std::string tmp_display_name = glib::String(g_strdup_printf (_("%s:"), info_hint->display_name.c_str())).Str();
124
info_name = new StaticCairoText(tmp_display_name, true, NUX_TRACKER_LOCATION);
125
info_name->SetFont(style.info_hint_bold_font());
127
=== modified file 'po/POTFILES.in'
128
--- po/POTFILES.in 2013-03-22 12:47:04 +0000
129
+++ po/POTFILES.in 2013-04-23 13:04:50 +0000
132
dash/ResultViewGrid.cpp
133
dash/previews/ApplicationPreview.cpp
134
+dash/previews/PreviewInfoHintWidget.cpp
135
dash/previews/SocialPreview.cpp
136
hud/HudController.cpp
138
------------------------------------------------------------
140
author: Marco Trevisan (Treviño) <mail@3v1n0.net>
143
timestamp: Tue 2013-04-23 22:00:39 +0000
145
IconRenderer: preprocess an icon if its emblem has been shown/hidden
147
In that way we can update its transformation. Fixes: https://bugs.launchpad.net/bugs/1171476, https://bugs.launchpad.net/bugs/1171663.
149
Approved by PS Jenkins bot, Brandon Schaefer.
151
=== modified file 'launcher/LauncherIcon.cpp'
152
--- launcher/LauncherIcon.cpp 2013-03-21 16:29:34 +0000
153
+++ launcher/LauncherIcon.cpp 2013-04-23 00:49:38 +0000
154
@@ -1144,13 +1144,14 @@
155
if (!remote->CountVisible())
159
- if (remote->Count() > 9999)
161
+ if (remote->Count() / 10000 != 0)
163
+ SetEmblemText("****");
166
- text = std::to_string(remote->Count());
168
- SetEmblemText(text);
170
+ SetEmblemText(std::to_string(remote->Count()));
176
=== modified file 'unity-shared/IconRenderer.cpp'
177
--- unity-shared/IconRenderer.cpp 2013-04-10 21:41:57 +0000
178
+++ unity-shared/IconRenderer.cpp 2013-04-23 00:49:38 +0000
180
if (it->render_center == launcher_icon->LastRenderCenter(monitor) &&
181
it->logical_center == launcher_icon->LastLogicalCenter(monitor) &&
182
it->rotation == launcher_icon->LastRotation(monitor) &&
183
- it->skip == launcher_icon->WasSkipping(monitor))
184
+ it->skip == launcher_icon->WasSkipping(monitor) &&
185
+ (launcher_icon->Emblem() != nullptr) == launcher_icon->HadEmblem())
190
launcher_icon->RememberCenters(monitor, it->render_center, it->logical_center);
191
launcher_icon->RememberRotation(monitor, it->rotation);
192
launcher_icon->RememberSkip(monitor, it->skip);
193
+ launcher_icon->RememberEmblem(launcher_icon->Emblem() != nullptr);
198
=== modified file 'unity-shared/IconTextureSource.cpp'
199
--- unity-shared/IconTextureSource.cpp 2013-04-12 23:33:52 +0000
200
+++ unity-shared/IconTextureSource.cpp 2013-04-23 00:48:47 +0000
204
IconTextureSource::IconTextureSource()
205
- : skip_(RENDERERS_SIZE, false)
206
+ : had_emblem_(false)
207
+ , skip_(RENDERERS_SIZE, false)
208
, last_render_center_(RENDERERS_SIZE)
209
, last_logical_center_(RENDERERS_SIZE)
210
, last_rotation_(RENDERERS_SIZE)
212
return skip_[monitor];
215
+void IconTextureSource::RememberEmblem(bool has_emblem)
217
+ had_emblem_ = has_emblem;
220
+bool IconTextureSource::HadEmblem() const
222
+ return had_emblem_;
227
\ No newline at end of file
229
=== modified file 'unity-shared/IconTextureSource.h'
230
--- unity-shared/IconTextureSource.h 2013-04-12 23:33:52 +0000
231
+++ unity-shared/IconTextureSource.h 2013-04-23 00:48:47 +0000
233
void RememberSkip(int monitor, bool skip);
234
bool WasSkipping(int monitor) const;
236
+ void RememberEmblem(bool has_emblem);
237
+ bool HadEmblem() const;
239
virtual nux::Color BackgroundColor() const = 0;
241
virtual nux::Color GlowColor() = 0;
243
virtual nux::BaseTexture* Emblem() = 0;
247
std::vector<bool> skip_;
248
std::vector<nux::Point3> last_render_center_;
249
std::vector<nux::Point3> last_logical_center_;
250
------------------------------------------------------------
252
author: Marco Trevisan (Treviño) <mail@3v1n0.net>
255
timestamp: Wed 2013-04-24 00:04:04 +0000
257
UnityWindow: don't draw the panel shadow above a fullscreen window. Fixes: https://bugs.launchpad.net/bugs/1171934.
259
Approved by PS Jenkins bot, Andrea Azzarone.
261
=== modified file 'plugins/unityshell/src/unityshell.cpp'
262
--- plugins/unityshell/src/unityshell.cpp 2013-04-16 22:11:24 +0000
263
+++ plugins/unityshell/src/unityshell.cpp 2013-04-23 16:59:52 +0000
264
@@ -2302,8 +2302,6 @@
268
- MultiActionList expoActions;
270
for (CompOption& option : p->vTable->getOptions())
272
if (option.name() == "close_window_key")
273
@@ -2624,7 +2622,9 @@
275
draw_panel_shadow = DrawPanelShadow::BELOW_WINDOW;
277
- if (!(window->state() & MAXIMIZE_STATE))
278
+ if (!(window->state() & CompWindowStateMaximizedVertMask) &&
279
+ !(window->state() & CompWindowStateFullscreenMask) &&
280
+ !(window->type() & CompWindowTypeFullscreenMask))
282
auto const& output = uScreen->screen->currentOutputDev();
283
------------------------------------------------------------
285
author: Łukasz 'sil2100' Zemczak <lukasz.zemczak@canonical.com>
288
timestamp: Thu 2013-04-25 10:21:51 +0000
290
Now that we're using the new HUD, there have been some changes that typically cause test_hud tests to fail. Fix the tests to fit the new model.
291
The first one is that generally we do not have indicator entries visible in the HUD anymore. Only application menu entries are in it now.
292
The second one - the way the results are displayed is different. Now, instead of "Menu > Entry" we have "Entry (Menu)" etc.
294
Approved by PS Jenkins bot, Mathieu Trudel-Lapierre.
296
=== modified file 'tests/autopilot/unity/tests/test_hud.py'
297
--- tests/autopilot/unity/tests/test_hud.py 2013-03-20 22:10:59 +0000
298
+++ tests/autopilot/unity/tests/test_hud.py 2013-04-24 15:25:08 +0000
301
self.launch_test_window(window_spec)
303
+ def start_menu_app(self):
305
+ "Title": "Test menu application",
306
+ "Menu": ["Entry 1", "Entry 2", "Entry 3", "Entry 4", "Entry 5", "Quit"],
308
+ self.launch_test_window(window_spec)
312
class HudBehaviorTests(HudTestsBase):
315
self.assertThat(self.unity.hud.selected_button, Equals(0))
317
def test_check_a_values(self):
318
+ self.start_menu_app()
319
self.unity.hud.ensure_visible()
320
- self.keyboard.type('a')
321
- self.assertThat(self.unity.hud.search_string, Eventually(Equals('a')))
322
+ self.keyboard.type('e')
323
+ self.assertThat(self.unity.hud.search_string, Eventually(Equals('e')))
324
self.assertThat(self.unity.hud.num_buttons, Eventually(Equals(5)))
325
self.assertThat(self.unity.hud.selected_button, Eventually(Equals(1)))
327
def test_up_down_arrows(self):
328
+ self.start_menu_app()
329
self.unity.hud.ensure_visible()
330
- self.keyboard.type('a')
331
- self.assertThat(self.unity.hud.search_string, Eventually(Equals('a')))
332
+ self.keyboard.type('e')
333
+ self.assertThat(self.unity.hud.search_string, Eventually(Equals('e')))
334
+ self.assertThat(self.unity.hud.num_buttons, Eventually(Equals(5)))
336
self.keyboard.press_and_release('Down')
337
self.assertThat(self.unity.hud.selected_button, Eventually(Equals(2)))
338
self.keyboard.press_and_release('Down')
340
"""Hud must not change selected button when results update over time."""
341
# TODO - this test doesn't test anything. Onmy system the results never update.
342
# ideally we'd send artificial results to the hud from the test.
343
+ self.skipTest("This test makes no sense in its current state, needs reworking.")
345
self.unity.hud.ensure_visible()
346
self.keyboard.type('is')
347
self.assertThat(self.unity.hud.search_string, Eventually(Equals('is')))
350
self.keyboard.type("undo")
351
hud_query_check = lambda: self.unity.hud.selected_hud_button.label_no_formatting
352
+ # XXX: with the new HUD, command and description is separated by '\u2002' and
353
+ # not a regular space ' '. Is that correct? (LP: #1172237)
354
self.assertThat(hud_query_check,
355
- Eventually(Equals("Edit > Undo")))
356
+ Eventually(Equals(u'Undo\u2002(Edit)')))
357
self.keyboard.press_and_release('Return')
358
self.assertThat(self.unity.hud.visible, Eventually(Equals(False)))
362
self.unity.hud.ensure_visible()
364
- self.keyboard.type("File > Quit")
365
- self.assertThat(self.unity.hud.search_string, Eventually(Equals("File > Quit")))
366
+ self.keyboard.type("Quit")
367
+ self.assertThat(self.unity.hud.search_string, Eventually(Equals("Quit")))
368
+ hud_query_check = lambda: self.unity.hud.selected_hud_button.label_no_formatting
369
+ self.assertThat(hud_query_check,
370
+ Eventually(Equals(u'Quit\u2002(File)')))
372
self.keyboard.press_and_release("Enter")
374
@@ -368,10 +387,11 @@
375
"""This tests moves the mouse from the top of the screen to the bottom, this must
376
change the selected button from 1 to 5.
379
+ self.start_menu_app()
380
self.unity.hud.ensure_visible()
382
- self.keyboard.type("a")
383
+ self.keyboard.type("e")
384
+ self.assertThat(self.unity.hud.num_buttons, Eventually(Equals(5)))
385
(x,y,w,h) = self.unity.hud.view.geometry
387
# Specify a slower rate so that HUD can register the mouse movement properly
388
@@ -385,10 +405,11 @@
389
"""This tests moves the mouse from the top of the screen to the bottom,
390
then it presses the keyboard up 5 times, this must change the selected button from 5 to 1.
393
+ self.start_menu_app()
394
self.unity.hud.ensure_visible()
396
- self.keyboard.type("a")
397
+ self.keyboard.type("e")
398
+ self.assertThat(self.unity.hud.num_buttons, Eventually(Equals(5)))
399
(x,y,w,h) = self.unity.hud.view.geometry
401
self.mouse.move(w/2, 0)
402
@@ -462,13 +483,13 @@
404
def test_mouse_does_not_steal_button_focus(self):
405
"""When typing in the hud the mouse must not steal button focus."""
407
+ self.start_menu_app()
408
self.unity.hud.ensure_visible()
410
(x,y,w,h) = self.unity.hud.view.geometry
411
self.mouse.move(w/4, h/4)
413
- self.keyboard.type("a")
414
+ self.keyboard.type("e")
415
self.assertThat(self.unity.hud.view.selected_button, Eventually(Equals(1)))
416
------------------------------------------------------------
418
author: Andrea Azzarone <azzaronea@gmail.com>
421
timestamp: Thu 2013-04-25 16:22:08 +0000
423
Disable detail view for webapp icons. Fixes: https://bugs.launchpad.net/bugs/1169340.
425
Approved by PS Jenkins bot, Marco Trevisan (Treviño).
427
=== modified file 'launcher/AbstractLauncherIcon.h'
428
--- launcher/AbstractLauncherIcon.h 2013-03-14 18:55:36 +0000
429
+++ launcher/AbstractLauncherIcon.h 2013-04-17 19:16:54 +0000
431
virtual float GetProgress() = 0;
433
virtual bool ShowInSwitcher(bool current) = 0;
434
+ virtual bool AllowDetailViewInSwitcher() const = 0;
436
virtual unsigned long long SwitcherPriority() = 0;
439
=== modified file 'launcher/ApplicationLauncherIcon.cpp'
440
--- launcher/ApplicationLauncherIcon.cpp 2013-04-09 17:02:27 +0000
441
+++ launcher/ApplicationLauncherIcon.cpp 2013-04-17 19:16:54 +0000
442
@@ -1254,6 +1254,11 @@
446
+bool ApplicationLauncherIcon::AllowDetailViewInSwitcher() const
448
+ return app_->type() != "webapp";
451
unsigned long long ApplicationLauncherIcon::SwitcherPriority()
453
unsigned long long result = 0;
455
=== modified file 'launcher/ApplicationLauncherIcon.h'
456
--- launcher/ApplicationLauncherIcon.h 2013-04-05 19:09:21 +0000
457
+++ launcher/ApplicationLauncherIcon.h 2013-04-17 19:16:54 +0000
459
virtual void UnStick();
461
virtual bool ShowInSwitcher(bool current);
462
+ virtual bool AllowDetailViewInSwitcher() const override;
463
virtual unsigned long long SwitcherPriority();
465
virtual nux::Color BackgroundColor() const;
467
=== modified file 'launcher/LauncherIcon.h'
468
--- launcher/LauncherIcon.h 2013-03-18 12:57:00 +0000
469
+++ launcher/LauncherIcon.h 2013-04-17 19:16:54 +0000
474
+ virtual bool AllowDetailViewInSwitcher() const override
479
virtual unsigned long long SwitcherPriority()
483
=== modified file 'launcher/MockLauncherIcon.h'
484
--- launcher/MockLauncherIcon.h 2013-03-18 12:57:00 +0000
485
+++ launcher/MockLauncherIcon.h 2013-04-17 19:16:54 +0000
490
+ bool AllowDetailViewInSwitcher() const override
495
void InsertEntryRemote(LauncherEntryRemote::Ptr const& remote) {}
497
void RemoveEntryRemote(LauncherEntryRemote::Ptr const& remote) {}
499
=== modified file 'launcher/SwitcherController.cpp'
500
--- launcher/SwitcherController.cpp 2013-03-19 18:47:01 +0000
501
+++ launcher/SwitcherController.cpp 2013-04-18 14:04:10 +0000
502
@@ -533,13 +533,13 @@
504
void Controller::Impl::SetDetail(bool value, unsigned int min_windows)
506
- if (value && model_->DetailXids().size() >= min_windows)
507
+ if (value && model_->Selection()->AllowDetailViewInSwitcher() && model_->DetailXids().size() >= min_windows)
509
model_->detail_selection = true;
510
obj_->detail_mode_ = DetailMode::TAB_NEXT_WINDOW;
515
model_->detail_selection = false;
519
=== modified file 'tests/mock-application.h'
520
--- tests/mock-application.h 2013-03-06 16:38:17 +0000
521
+++ tests/mock-application.h 2013-04-17 19:16:54 +0000
528
seen.SetGetterFunction(sigc::mem_fun(this, &MockApplication::GetSeen));
529
seen.SetSetterFunction(sigc::mem_fun(this, &MockApplication::SetSeen));
530
@@ -105,12 +106,13 @@
533
unity::WindowList windows_;
537
virtual std::string icon() const { return icon_; }
538
virtual std::string title() const { return title_; }
539
virtual std::string desktop_file() const { return desktop_file_; }
540
- virtual std::string type() const { return "mock"; }
541
+ virtual std::string type() const { return type_; }
542
virtual std::string repr() const { return "MockApplication"; }
544
virtual unity::WindowList GetWindows() const { return windows_; }
546
=== modified file 'tests/test_application_launcher_icon.cpp'
547
--- tests/test_application_launcher_icon.cpp 2013-04-08 18:19:46 +0000
548
+++ tests/test_application_launcher_icon.cpp 2013-04-17 19:16:54 +0000
550
EXPECT_TRUE(icon->IsFileManager());
553
+TEST_F(TestApplicationLauncherIcon, AllowDetailViewInSwitcher)
555
+ mock_app->type_ = "mock";
556
+ EXPECT_TRUE(mock_icon->AllowDetailViewInSwitcher());
558
+ mock_app->type_ = "webapp";
559
+ EXPECT_FALSE(mock_icon->AllowDetailViewInSwitcher());
564
=== modified file 'tests/test_switcher_controller.cpp'
565
--- tests/test_switcher_controller.cpp 2013-03-19 01:13:43 +0000
566
+++ tests/test_switcher_controller.cpp 2013-04-17 19:16:54 +0000
568
EXPECT_LT(model->detail_selection.changed.size(), prev_size);
571
+TEST_F(TestSwitcherController, InitiateDetailWebapps)
573
+ controller_->Show(ShowMode::ALL, SortMode::LAUNCHER_ORDER, icons_);
575
+ controller_->Select(3);
576
+ controller_->InitiateDetail();
578
+ auto const& view = controller_->GetView();
579
+ auto const& model = view->GetModel();
580
+ EXPECT_EQ(controller_->detail_mode(), DetailMode::TAB_NEXT_TILE);
581
+ EXPECT_FALSE(view->animate());
582
+ EXPECT_FALSE(model->detail_selection());
586
TEST_F(TestSwitcherController, ShowSwitcher)
588
EXPECT_FALSE(controller_->Visible());
590
=== modified file 'tests/test_switcher_controller.h'
591
--- tests/test_switcher_controller.h 2013-03-19 01:13:43 +0000
592
+++ tests/test_switcher_controller.h 2013-04-17 19:16:54 +0000
594
class FakeLauncherIcon : public unity::launcher::SimpleLauncherIcon
597
- FakeLauncherIcon(std::string const& app_name, unsigned priority);
598
+ FakeLauncherIcon(std::string const& app_name, bool allow_detail_view, unsigned priority);
600
- unity::WindowList Windows();
601
- unsigned long long SwitcherPriority();
602
+ unity::WindowList Windows()override;
603
+ bool AllowDetailViewInSwitcher() const override;
604
+ unsigned long long SwitcherPriority() override;
607
+ bool allow_detail_view_;
609
unity::WindowList window_list;
612
=== modified file 'tests/test_switcher_controller_class.cpp'
613
--- tests/test_switcher_controller_class.cpp 2013-03-19 01:13:43 +0000
614
+++ tests/test_switcher_controller_class.cpp 2013-04-17 19:16:54 +0000
616
bool FakeApplicationWindow::Focus() const { return false; }
617
void FakeApplicationWindow::Quit() const {}
619
-FakeLauncherIcon::FakeLauncherIcon(std::string const& app_name, unsigned priority)
620
+FakeLauncherIcon::FakeLauncherIcon(std::string const& app_name, bool allow_detail_view, unsigned priority)
621
: launcher::SimpleLauncherIcon(IconType::APPLICATION)
622
+ , allow_detail_view_(allow_detail_view)
623
, priority_(priority)
624
, window_list{ std::make_shared<FakeApplicationWindow>(priority_ | 0x0001),
625
std::make_shared<FakeApplicationWindow>(priority_ | 0x0002) }
630
+bool FakeLauncherIcon::AllowDetailViewInSwitcher() const
632
+ return allow_detail_view_;
635
unsigned long long FakeLauncherIcon::SwitcherPriority()
637
return 0xffffffff - priority_;
640
icons_.push_back(launcher::AbstractLauncherIcon::Ptr(new launcher::DesktopLauncherIcon()));
642
- FakeLauncherIcon* first_app = new FakeLauncherIcon("First", 0x0100);
643
+ FakeLauncherIcon* first_app = new FakeLauncherIcon("First", true, 0x0100);
644
icons_.push_back(launcher::AbstractLauncherIcon::Ptr(first_app));
645
- FakeLauncherIcon* second_app = new FakeLauncherIcon("Second", 0x0200);
646
+ FakeLauncherIcon* second_app = new FakeLauncherIcon("Second", true, 0x0200);
647
icons_.push_back(launcher::AbstractLauncherIcon::Ptr(second_app));
648
+ FakeLauncherIcon* third_app = new FakeLauncherIcon("Third", false, 0x0300);
649
+ icons_.push_back(launcher::AbstractLauncherIcon::Ptr(third_app));
651
------------------------------------------------------------
652
Use --include-merged or -n0 to see merged revisions.