Merge lp:~noskcaj/ubuntu/vivid/xfce4-whiskermenu-plugin/1.5.0 into lp:ubuntu/vivid/xfce4-whiskermenu-plugin

Proposed by Jackson Doak
Status: Needs review
Proposed branch: lp:~noskcaj/ubuntu/vivid/xfce4-whiskermenu-plugin/1.5.0
Merge into: lp:ubuntu/vivid/xfce4-whiskermenu-plugin
Diff against target: 24671 lines (+5639/-6710)
80 files modified
.pc/01_replace-gdmflexiserver.patch/panel-plugin/settings.cpp (+18/-7)
CMakeLists.txt (+2/-2)
ChangeLog (+0/-2575)
NEWS (+25/-0)
debian/changelog (+6/-0)
debian/patches/01_replace-gdmflexiserver.patch (+6/-2)
panel-plugin/CMakeLists.txt (+2/-1)
panel-plugin/applications-page.cpp (+99/-27)
panel-plugin/applications-page.h (+2/-0)
panel-plugin/command.cpp (+3/-3)
panel-plugin/command.h (+1/-2)
panel-plugin/configuration-dialog.cpp (+134/-82)
panel-plugin/configuration-dialog.h (+8/-1)
panel-plugin/favorites-page.cpp (+127/-6)
panel-plugin/favorites-page.h (+13/-2)
panel-plugin/launcher-view.cpp (+36/-0)
panel-plugin/launcher-view.h (+3/-0)
panel-plugin/list-page.cpp (+0/-204)
panel-plugin/list-page.h (+0/-56)
panel-plugin/page.cpp (+12/-3)
panel-plugin/plugin.cpp (+73/-19)
panel-plugin/plugin.h (+6/-2)
panel-plugin/profile-picture.cpp (+104/-0)
panel-plugin/profile-picture.h (+52/-0)
panel-plugin/recent-page.cpp (+74/-12)
panel-plugin/recent-page.h (+6/-5)
panel-plugin/resizer-widget.cpp (+35/-1)
panel-plugin/resizer-widget.h (+2/-0)
panel-plugin/search-page.cpp (+15/-12)
panel-plugin/search-page.h (+2/-1)
panel-plugin/settings.cpp (+18/-7)
panel-plugin/settings.h (+6/-2)
panel-plugin/slot.h (+1/-1)
panel-plugin/window.cpp (+112/-30)
panel-plugin/window.h (+6/-0)
po/ar.po (+103/-78)
po/ast.po (+103/-78)
po/bg.po (+102/-85)
po/ca.po (+107/-89)
po/cs.po (+104/-78)
po/da.po (+103/-78)
po/de.po (+107/-90)
po/el.po (+104/-78)
po/en_GB.po (+103/-78)
po/es.po (+104/-86)
po/et.po (+103/-80)
po/eu.po (+100/-82)
po/fa.po (+104/-78)
po/fi.po (+104/-78)
po/fr.po (+107/-90)
po/he.po (+101/-84)
po/hr.po (+103/-78)
po/hu.po (+100/-78)
po/id.po (+104/-78)
po/it.po (+101/-84)
po/ja.po (+100/-83)
po/kk.po (+104/-78)
po/lt.po (+101/-84)
po/lv.po (+103/-78)
po/ms.po (+104/-78)
po/nb.po (+104/-78)
po/ne.po (+104/-78)
po/nl.po (+101/-84)
po/pl.po (+103/-86)
po/pt.po (+102/-85)
po/pt_BR.po (+103/-78)
po/ro.po (+104/-78)
po/ru.po (+104/-78)
po/sk.po (+101/-84)
po/sl.po (+101/-84)
po/sr.po (+104/-78)
po/sr@latin.po (+103/-78)
po/sv.po (+102/-85)
po/tr.po (+102/-85)
po/uk.po (+104/-78)
po/uz.po (+104/-78)
po/vi.po (+103/-78)
po/xfce4-whiskermenu-plugin.pot (+98/-81)
po/zh_CN.po (+103/-78)
po/zh_TW.po (+101/-84)
To merge this branch: bzr merge lp:~noskcaj/ubuntu/vivid/xfce4-whiskermenu-plugin/1.5.0
Reviewer Review Type Date Requested Status
Sean Davis Pending
Review via email: mp+250199@code.launchpad.net

Description of the change

New upstream release. Xubuntu 15.04

To post a comment you must log in.

Unmerged revisions

14. By Jackson Doak

New upstream release.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.pc/01_replace-gdmflexiserver.patch/panel-plugin/settings.cpp'
2--- .pc/01_replace-gdmflexiserver.patch/panel-plugin/settings.cpp 2015-01-08 07:09:23 +0000
3+++ .pc/01_replace-gdmflexiserver.patch/panel-plugin/settings.cpp 2015-02-18 19:37:38 +0000
4@@ -1,5 +1,5 @@
5 /*
6- * Copyright (C) 2013 Graeme Gott <graeme@gottcode.org>
7+ * Copyright (C) 2013, 2104 Graeme Gott <graeme@gottcode.org>
8 *
9 * This library is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11@@ -37,7 +37,8 @@
12 { "command-lockscreen", "show-command-lockscreen" },
13 { "command-switchuser", "show-command-switchuser" },
14 { "command-logout", "show-command-logout" },
15- { "command-menueditor", "show-command-menueditor" }
16+ { "command-menueditor", "show-command-menueditor" },
17+ { "command-profile", "show-command-profile" }
18 };
19
20 //-----------------------------------------------------------------------------
21@@ -85,7 +86,7 @@
22 button_icon_name("xfce4-whiskermenu"),
23 button_title_visible(false),
24 button_icon_visible(true),
25- button_single_row(false),
26+ button_single_row(false),
27
28 launcher_show_name(true),
29 launcher_show_description(true),
30@@ -95,15 +96,18 @@
31 category_icon_size(IconSize::Smaller),
32
33 load_hierarchy(false),
34+
35+ recent_items_max(10),
36 favorites_in_recent(true),
37-
38 display_recent(false),
39+
40 position_search_alternate(false),
41 position_commands_alternate(false),
42 position_categories_alternate(false),
43
44 menu_width(400),
45- menu_height(500)
46+ menu_height(500),
47+ menu_opacity(100)
48 {
49 favorites.push_back("exo-terminal-emulator.desktop");
50 favorites.push_back("exo-file-manager.desktop");
51@@ -115,6 +119,7 @@
52 command[CommandSwitchUser] = new Command("system-users", _("Switch _Users"), "gdmflexiserver", _("Failed to switch users."));
53 command[CommandLogOut] = new Command("system-log-out", _("Log _Out"), "xfce4-session-logout", _("Failed to log out."));
54 command[CommandMenuEditor] = new Command("xfce4-menueditor", _("_Edit Applications"), "menulibre", _("Failed to launch menu editor."));
55+ command[CommandProfile] = new Command("avatar-default", _("Edit _Profile"), "mugshot", _("Failed to edit profile."));
56
57 search_actions.push_back(new SearchAction(_("Man Pages"), "#", "exo-open --launch TerminalEmulator man %s", false, true));
58 search_actions.push_back(new SearchAction(_("Wikipedia"), "!w", "exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u", false, true));
59@@ -173,15 +178,18 @@
60 category_icon_size = xfce_rc_read_int_entry(rc, "category-icon-size", category_icon_size);
61
62 load_hierarchy = xfce_rc_read_bool_entry(rc, "load-hierarchy", load_hierarchy);
63+
64+ recent_items_max = std::max(5, xfce_rc_read_int_entry(rc, "recent-items-max", recent_items_max));
65 favorites_in_recent = xfce_rc_read_bool_entry(rc, "favorites-in-recent", favorites_in_recent);
66-
67 display_recent = xfce_rc_read_bool_entry(rc, "display-recent-default", display_recent);
68+
69 position_search_alternate = xfce_rc_read_bool_entry(rc, "position-search-alternate", position_search_alternate);
70 position_commands_alternate = xfce_rc_read_bool_entry(rc, "position-commands-alternate", position_commands_alternate) && position_search_alternate;
71 position_categories_alternate = xfce_rc_read_bool_entry(rc, "position-categories-alternate", position_categories_alternate);
72
73 menu_width = std::max(300, xfce_rc_read_int_entry(rc, "menu-width", menu_width));
74 menu_height = std::max(400, xfce_rc_read_int_entry(rc, "menu-height", menu_height));
75+ menu_opacity = std::min(100, std::max(0, xfce_rc_read_int_entry(rc, "menu-opacity", menu_height)));
76
77 for (int i = 0; i < CountCommands; ++i)
78 {
79@@ -266,15 +274,18 @@
80 xfce_rc_write_int_entry(rc, "category-icon-size", category_icon_size);
81
82 xfce_rc_write_bool_entry(rc, "load-hierarchy", load_hierarchy);
83+
84+ xfce_rc_write_int_entry(rc, "recent-items-max", recent_items_max);
85 xfce_rc_write_bool_entry(rc, "favorites-in-recent", favorites_in_recent);
86-
87 xfce_rc_write_bool_entry(rc, "display-recent-default", display_recent);
88+
89 xfce_rc_write_bool_entry(rc, "position-search-alternate", position_search_alternate);
90 xfce_rc_write_bool_entry(rc, "position-commands-alternate", position_commands_alternate);
91 xfce_rc_write_bool_entry(rc, "position-categories-alternate", position_categories_alternate);
92
93 xfce_rc_write_int_entry(rc, "menu-width", menu_width);
94 xfce_rc_write_int_entry(rc, "menu-height", menu_height);
95+ xfce_rc_write_int_entry(rc, "menu-opacity", menu_opacity);
96
97 for (int i = 0; i < CountCommands; ++i)
98 {
99
100=== modified file 'CMakeLists.txt'
101--- CMakeLists.txt 2015-02-15 06:11:51 +0000
102+++ CMakeLists.txt 2015-02-18 19:37:38 +0000
103@@ -4,8 +4,8 @@
104
105 # version number
106 set(whiskermenu_version_major "1")
107-set(whiskermenu_version_minor "4")
108-set(whiskermenu_version_micro "3")
109+set(whiskermenu_version_minor "5")
110+set(whiskermenu_version_micro "0")
111 set(whiskermenu_version_tag "")
112 set(whiskermenu_version "${whiskermenu_version_major}.${whiskermenu_version_minor}.${whiskermenu_version_micro}")
113 if(${whiskermenu_version_tag} MATCHES "git")
114
115=== removed file 'ChangeLog'
116--- ChangeLog 2015-02-15 06:11:51 +0000
117+++ ChangeLog 1970-01-01 00:00:00 +0000
118@@ -1,2575 +0,0 @@
119-commit 202b8e30608987eb1d2ba607fad365b7f90b0d5b
120-Author: Graeme Gott <graeme@gottcode.org>
121-Date: 2015-02-14
122-
123- Bump version number.
124-
125-commit 5ba062bb5ec6e51e7e5ce27f8d7ef5992d5be187
126-Author: Graeme Gott <graeme@gottcode.org>
127-Date: 2015-02-14
128-
129- Update copyright notice.
130-
131-commit fa298f52efd0ee9db7762bc2a47779e9c0759f8a
132-Author: Graeme Gott <graeme@gottcode.org>
133-Date: 2015-02-14
134-
135- I18n: Update translation sk (98%).
136-
137-commit b50d3f4d6a471faaf47605221034e811ce8f3225
138-Author: Graeme Gott <graeme@gottcode.org>
139-Date: 2015-02-14
140-
141- I18n: Update translation ru (100%).
142-
143-commit 08196bc70e5c6487c2526b3d52c2aeb382275b4c
144-Author: Graeme Gott <graeme@gottcode.org>
145-Date: 2015-02-14
146-
147- I18n: Update translation hu (92%).
148-
149-commit 5941eebf3f1f06d971a243a32b239bc6c8fc3e82
150-Author: Graeme Gott <graeme@gottcode.org>
151-Date: 2015-02-14
152-
153- I18n: Update translation fr (100%).
154-
155-commit ac868a30530ad896c182ef9a077d483181008ec4
156-Author: Graeme Gott <graeme@gottcode.org>
157-Date: 2015-02-14
158-
159- Fix hang at launch by removing load thread.
160-
161-commit 7911f7153c5b19753c8a070a61d37062f04162bc
162-Author: Graeme Gott <graeme@gottcode.org>
163-Date: 2015-01-10
164-
165- FIXED: Did not save sorted favorites.
166-
167-commit 0932412af5cdb28b9d4eca3ed9125cd77bc98e81
168-Author: Graeme Gott <graeme@gottcode.org>
169-Date: 2014-12-21
170-
171- Bump version number.
172-
173-commit a9afecf7ee8e94d0489f1f7d33fa3983eec26d0d
174-Author: Graeme Gott <graeme@gottcode.org>
175-Date: 2014-12-18
176-
177- I18n: Update translation he (98%).
178-
179-commit 45ba694354e751f824037ea102c9b65a811ebe36
180-Author: Graeme Gott <graeme@gottcode.org>
181-Date: 2014-12-11
182-
183- Fix panel button border not shown when pressed.
184-
185-commit c5f0d12c787d75e381427399e5ce4b2bc0f7e3c7
186-Author: Graeme Gott <graeme@gottcode.org>
187-Date: 2014-12-10
188-
189- I18n: Update translation sr (98%).
190-
191-commit 74120fb1293c3ec2681c196dfaf4089cc937910b
192-Author: Graeme Gott <graeme@gottcode.org>
193-Date: 2014-12-10
194-
195- I18n: Update translation fr (100%).
196-
197-commit cb8c1c466e16e98805434fc17d953ee9ab0b4bef
198-Author: Graeme Gott <graeme@gottcode.org>
199-Date: 2014-12-10
200-
201- Fixed command edits were editable when disabled.
202-
203-commit 42d072f26a2c3e5541cf59298f7c7fcd8664a945
204-Author: Graeme Gott <graeme@gottcode.org>
205-Date: 2014-12-08
206-
207- Fixed incorrectly disabled checkbox for commands position.
208-
209-commit aec577dc1c33ac1042bf86e73261c4a00c84c0f3
210-Author: Graeme Gott <graeme@gottcode.org>
211-Date: 2014-12-08
212-
213- Only allow commands next to search when next to panel button.
214-
215-commit ba5a8e09e5e2b89b5372b5f3f0a7bf6fcdaa5276
216-Author: Graeme Gott <graeme@gottcode.org>
217-Date: 2014-12-05
218-
219- Bump version number.
220-
221-commit be875ff706bab971c03e36857936e27cf67ef317
222-Author: Graeme Gott <graeme@gottcode.org>
223-Date: 2014-11-21
224-
225- Fix not using secure connection to Wikipedia.
226-
227-commit 3b0a6b8ab237c3cb0897adb87053b77bb4823620
228-Author: Graeme Gott <graeme@gottcode.org>
229-Date: 2014-11-18
230-
231- I18n: Update translation uz (100%).
232-
233-commit 4f65329f8fcf6eadbcefaf1a94e32321e6c72e38
234-Author: Graeme Gott <graeme@gottcode.org>
235-Date: 2014-11-18
236-
237- I18n: Update translation uk (100%).
238-
239-commit bfa58237fbf7a5b47595348f874246cc1d2e5cdd
240-Author: Graeme Gott <graeme@gottcode.org>
241-Date: 2014-11-18
242-
243- I18n: Update translation tr (100%).
244-
245-commit a2c3db72bdbb7e3bb0d816e5f7cbc0c83ffcb4b0
246-Author: Graeme Gott <graeme@gottcode.org>
247-Date: 2014-11-18
248-
249- I18n: Update translation sv (100%).
250-
251-commit cb8b101f12704cfca9fd820bf1588cc00677b14f
252-Author: Graeme Gott <graeme@gottcode.org>
253-Date: 2014-11-18
254-
255- I18n: Update translation ro (100%).
256-
257-commit 07382527425b50ec244667c41baf293de0f336bc
258-Author: Graeme Gott <graeme@gottcode.org>
259-Date: 2014-11-18
260-
261- I18n: Update translation pl (100%).
262-
263-commit 3d168f797fa2255bfedec96d34ebc72a6513ce40
264-Author: Graeme Gott <graeme@gottcode.org>
265-Date: 2014-11-18
266-
267- I18n: Update translation nl (100%).
268-
269-commit 29f44777073d59c236938f0a763b92b7738944da
270-Author: Graeme Gott <graeme@gottcode.org>
271-Date: 2014-11-18
272-
273- I18n: Update translation ne (100%).
274-
275-commit 9e64579ff50af6de5088e0fe7a281ae1cbff1a41
276-Author: Graeme Gott <graeme@gottcode.org>
277-Date: 2014-11-18
278-
279- I18n: Add translation lt (100%).
280-
281-commit a691b09b95a9196bf0e5dac89042d7b414c6f8f0
282-Author: Graeme Gott <graeme@gottcode.org>
283-Date: 2014-11-18
284-
285- I18n: Update translation kk (100%).
286-
287-commit 900417d52c995dc7a1dc0a69a878f28b8ec378f7
288-Author: Graeme Gott <graeme@gottcode.org>
289-Date: 2014-11-18
290-
291- I18n: Update translation id (100%).
292-
293-commit ae2d897775e60c893f3032e13371dfee2c30419a
294-Author: Graeme Gott <graeme@gottcode.org>
295-Date: 2014-11-18
296-
297- I18n: Update translation fr (100%).
298-
299-commit 5c13185228b799cf7a0a4c8475417864e8b7fc81
300-Author: Graeme Gott <graeme@gottcode.org>
301-Date: 2014-11-18
302-
303- I18n: Update translation fi (100%).
304-
305-commit dd958a541bb8cf5e919126a5e11608447996694f
306-Author: Graeme Gott <graeme@gottcode.org>
307-Date: 2014-11-18
308-
309- I18n: Update translation fa (100%).
310-
311-commit a9e090c99d99fe18d8e7011076481b058f016e86
312-Author: Graeme Gott <graeme@gottcode.org>
313-Date: 2014-11-18
314-
315- I18n: Add translation eu (8%).
316-
317-commit 209a8d0863b88ed26c8a353b3f582394ffd37437
318-Author: Graeme Gott <graeme@gottcode.org>
319-Date: 2014-11-18
320-
321- I18n: Update translation es (100%).
322-
323-commit ea2f2c4ea983fe789af41338515a73b56c015ff9
324-Author: Graeme Gott <graeme@gottcode.org>
325-Date: 2014-11-18
326-
327- I18n: Update translation el (100%).
328-
329-commit 98115f3283aed1641520ed0c5de9627bca9b036f
330-Author: Graeme Gott <graeme@gottcode.org>
331-Date: 2014-11-18
332-
333- I18n: Update translation ast (97%).
334-
335-commit 3cb3e8864f7100949d12bdcaf3fdb327ec688b73
336-Author: Graeme Gott <graeme@gottcode.org>
337-Date: 2014-11-18
338-
339- Fix not searching descriptions unless shown.
340-
341-commit 6c8919e1a61c0e787a8798ea1f57ddcc4d72682a
342-Author: Graeme Gott <graeme@gottcode.org>
343-Date: 2014-11-18
344-
345- Fix crash with invalid utf8 encoding.
346-
347-commit d354c96d6421d5e4b3eb9a155c3e813f84b11221
348-Author: Graeme Gott <graeme@gottcode.org>
349-Date: 2014-06-25
350-
351- Bump version number.
352-
353-commit 38ba0f356a4bee6cc56f7e00b490511daa0b1b16
354-Author: Graeme Gott <graeme@gottcode.org>
355-Date: 2014-06-24
356-
357- I18n: Update translation pl (100%).
358-
359-commit 6fe5dae22ea816c52a1476b2cd8633243c71a240
360-Author: Graeme Gott <graeme@gottcode.org>
361-Date: 2014-06-24
362-
363- I18n: Update translation fr (100%).
364-
365-commit 3226bd6d337fbc6b985574c3f37ba31720631e25
366-Author: Graeme Gott <graeme@gottcode.org>
367-Date: 2014-06-19
368-
369- I18n: Update translation sv (97%).
370-
371-commit b5a10802313a257ab4c19904873b6400f71deea0
372-Author: Graeme Gott <graeme@gottcode.org>
373-Date: 2014-06-19
374-
375- I18n: Update translation ca (97%).
376-
377-commit 7b39f86868603821e13c5c7c5e27e3f30f933684
378-Author: Graeme Gott <graeme@gottcode.org>
379-Date: 2014-06-19
380-
381- I18n: Update translation nl (100%).
382-
383-commit 1981c39cece80bfc23a12bd18c99c98286bcac77
384-Author: Graeme Gott <graeme@gottcode.org>
385-Date: 2014-06-19
386-
387- I18n: Update translation nb (100%).
388-
389-commit 80b4eee002cd104500e0ef90c255716a70baef5e
390-Author: Graeme Gott <graeme@gottcode.org>
391-Date: 2014-06-19
392-
393- I18n: Update translation ms (100%).
394-
395-commit f290e6e871c413faf4d8c660833a1d8e6be4017b
396-Author: Graeme Gott <graeme@gottcode.org>
397-Date: 2014-06-19
398-
399- I18n: Update translation ja (100%).
400-
401-commit 2124ee787ff3759265e27b74bec859e02de5af01
402-Author: Graeme Gott <graeme@gottcode.org>
403-Date: 2014-06-19
404-
405- I18n: Update translation it (100%).
406-
407-commit 319b75a85adb28889628ac37ae815dfee8a8443c
408-Author: Graeme Gott <graeme@gottcode.org>
409-Date: 2014-06-19
410-
411- I18n: Update translation fr (100%).
412-
413-commit 9f63983c596d93f6c97f11aeffc5811a9126392a
414-Author: Graeme Gott <graeme@gottcode.org>
415-Date: 2014-06-06
416-
417- I18n: Update translation he (98%).
418-
419-commit eda87f6115bf1d197d792a4d5206ba915a8b7295
420-Author: Graeme Gott <graeme@gottcode.org>
421-Date: 2014-06-06
422-
423- I18n: Update translation ru (100%).
424-
425-commit 3c62a18789fcd5dc70dc9e2ea404f8c16e53a347
426-Author: Graeme Gott <graeme@gottcode.org>
427-Date: 2014-06-06
428-
429- I18n: Update translation es (100%).
430-
431-commit 449dca79fa74def75c221f2faad56d97d4976160
432-Author: Graeme Gott <graeme@gottcode.org>
433-Date: 2014-06-06
434-
435- I18n: Update translation bg (100%).
436-
437-commit a2f69bdf00ab60fe7e35043ad2d4c7dd1764159c
438-Author: Graeme Gott <graeme@gottcode.org>
439-Date: 2014-06-05
440-
441- I18n: Update translation zh_TW (100%).
442-
443-commit 35b30c829aa7b77ae0fb5c468b9e4a00ae1238f5
444-Author: Graeme Gott <graeme@gottcode.org>
445-Date: 2014-06-05
446-
447- I18n: Update translation sl (100%).
448-
449-commit bdee3018ff6446fde49c1ff60a30c88ff72f0555
450-Author: Graeme Gott <graeme@gottcode.org>
451-Date: 2014-06-05
452-
453- I18n: Update translation pt (100%).
454-
455-commit 7ef540d809a268fc4721df085fa0bbdb1f06bb7e
456-Author: Graeme Gott <graeme@gottcode.org>
457-Date: 2014-06-05
458-
459- I18n: Update translation de (100%).
460-
461-commit 403ea6bb9a23e7b866caa4eca22851f3dd2b3ff5
462-Author: Graeme Gott <graeme@gottcode.org>
463-Date: 2014-06-05
464-
465- I18n: Update translation cs (100%).
466-
467-commit d264c5c7deeeac070b24f400f346859822ceafd4
468-Author: Graeme Gott <graeme@gottcode.org>
469-Date: 2014-06-04
470-
471- Update strings.
472-
473-commit 82cb5127990881d38253ba01837534fa4abb6b57
474-Author: Graeme Gott <graeme@gottcode.org>
475-Date: 2014-05-02
476-
477- Load applications immediately. Closes #86.
478-
479-commit 418e199556547ec7f59deb5488318aadee402eb2
480-Author: Graeme Gott <graeme@gottcode.org>
481-Date: 2014-04-14
482-
483- Add about entry to context menu. Closes #57.
484-
485-commit 317c9a2b59b1b0385efb940637d0fc251f215320
486-Author: Graeme Gott <graeme@gottcode.org>
487-Date: 2014-04-08
488-
489- Recognize keypad enter as return for searching.
490-
491-commit ed56be30dff9b1fc793611b67d1e6aef19cacea9
492-Author: Graeme Gott <graeme@gottcode.org>
493-Date: 2014-03-25
494-
495- I18n: Add translation zh_CN (100%).
496-
497-commit 4c4704962a30bfc6029e8386b3e2568c89a910e0
498-Author: Graeme Gott <graeme@gottcode.org>
499-Date: 2014-03-18
500-
501- Update news file.
502-
503-commit 2958c9fe0b7b150d121c19c875e7f99c245cf340
504-Author: Graeme Gott <graeme@gottcode.org>
505-Date: 2014-03-14
506-
507- I18n: Update translation zh_TW (100%).
508-
509-commit b5e7b337dc22efb6dcd053ef6436f1bce6be874f
510-Author: Graeme Gott <graeme@gottcode.org>
511-Date: 2014-03-14
512-
513- I18n: Update translation vi (100%).
514-
515-commit e1bd0f492fdc30f7b64040a986126f820572e6ca
516-Author: Graeme Gott <graeme@gottcode.org>
517-Date: 2014-03-14
518-
519- I18n: Add translation sl (100%).
520-
521-commit 2a3cdc1dd4c3f983574d5953eb88dcdc8912720b
522-Author: Graeme Gott <graeme@gottcode.org>
523-Date: 2014-03-14
524-
525- I18n: Update translation pt_BR (100%).
526-
527-commit 545c08f74ebf6d47dbf115deb9208ecfde023b84
528-Author: Graeme Gott <graeme@gottcode.org>
529-Date: 2014-03-14
530-
531- I18n: Update translation ne (100%).
532-
533-commit 353fbf299f354456ab61d97f0b952fe06a556a91
534-Author: Graeme Gott <graeme@gottcode.org>
535-Date: 2014-03-14
536-
537- I18n: Update translation nb (100%).
538-
539-commit 09c59cf9395c41b6074dedf91b9f0456efcb860a
540-Author: Graeme Gott <graeme@gottcode.org>
541-Date: 2014-03-14
542-
543- I18n: Add translation lv (100%).
544-
545-commit c12b41be389f8e3a5d2aa7a7eef0fe1088b06691
546-Author: Graeme Gott <graeme@gottcode.org>
547-Date: 2014-03-14
548-
549- I18n: Update translation hr (100%).
550-
551-commit 295ede17464cf4e445464161b441266c57a18364
552-Author: Graeme Gott <graeme@gottcode.org>
553-Date: 2014-03-14
554-
555- I18n: Update translation fi (100%).
556-
557-commit 773eacec8f30d8932e43780e634f5aa04909181c
558-Author: Graeme Gott <graeme@gottcode.org>
559-Date: 2014-03-14
560-
561- I18n: Update translation ast (100%).
562-
563-commit 124fdca0d6ae069e6ded3780fe166679fd1cdc6e
564-Author: Graeme Gott <graeme@gottcode.org>
565-Date: 2014-03-14
566-
567- I18n: Update translation da (100%).
568-
569-commit 72668c1d8ae4740ff992c1e889d871188efb2d1b
570-Author: Graeme Gott <graeme@gottcode.org>
571-Date: 2014-03-14
572-
573- I18n: Update translation cs (100%).
574-
575-commit 4a9b2e51cffc377089d298d7834fc65bd2b2cc35
576-Author: Graeme Gott <graeme@gottcode.org>
577-Date: 2014-03-14
578-
579- I18n: Update translation ar (84%).
580-
581-commit 3c214f77c21ff00ef00df009ead36309cbcbf72a
582-Author: Graeme Gott <graeme@gottcode.org>
583-Date: 2014-03-12
584-
585- Fixed crash when accessing null launcher in assert.
586-
587-commit 3644410487b04cbc51f1e5ad50297298a4dfc0aa
588-Author: Kernc <kerncece@gmail.com>
589-Date: 2014-01-23
590-
591- Add padding to username.
592-
593-commit 8682cab3bf8e2d813e449693e0c7dfb468b9a2f7
594-Author: Graeme Gott <graeme@gottcode.org>
595-Date: 2014-02-28
596-
597- Fix menu flashing when button is pressed rapidly. Closes #75.
598-
599-commit bf8d5c3cb7299f69a1f2678d3f9be757111c600f
600-Author: Graeme Gott <graeme@gottcode.org>
601-Date: 2014-02-26
602-
603- Fix unable to click command buttons with focus follows mouse. Closes #70.
604-
605-commit 038bb945cb59e729447ab84c68698945b4bdcbbe
606-Author: Graeme Gott <graeme@gottcode.org>
607-Date: 2014-02-25
608-
609- Fix panel button icon alignment in deskbar mode.
610-
611-commit dd0ceb5858797e713cdf13fafdd0e964a029d47e
612-Merge: a80a787 752f89b
613-Author: Graeme Gott <graeme@gottcode.org>
614-Date: 2014-02-22
615-
616- Merge pull request #71 from kernc/window_type_dialog
617-
618- Set menu window type hint to DIALOG
619-
620-commit 752f89b80c1bc9f0c99bef67a2b22b2274f8d314
621-Author: Kernc <kerncece@gmail.com>
622-Date: 2014-02-11
623-
624- Set menu window type hint to DIALOG
625-
626- Some tiling window managers, like e.g. i3, rely on window type
627- hint to determine whether to tile or float the window.
628- Normal windows are usually tiled, and dialogs are more
629- convenient floating.
630-
631-commit a80a7878940aaa19b82bdd93b2a3188793dbdbdc
632-Author: Kernc <kerncece@gmail.com>
633-Date: 2014-01-23
634-
635- Add switching position of categories and launchers. Closes #44.
636-
637-commit 4d2737d66438de9a3179dd20633ce22291aeb990
638-Author: Kernc <kerncece@gmail.com>
639-Date: 2014-01-23
640-
641- Add waiting for grabs; allows modifier as shortcut. Closes #64.
642-
643-commit f44af509c56378a4678e7b251bebc1e451702839
644-Author: Graeme Gott <graeme@gottcode.org>
645-Date: 2014-01-06
646-
647- Update news file.
648-
649-commit cc3e05dfeca83799c5b589c3066440c49400d994
650-Author: Graeme Gott <graeme@gottcode.org>
651-Date: 2014-01-06
652-
653- I18n: Update translation vi (64%).
654-
655-commit b988950717cfdd63a337a4cb9f7cba4c4ac3a992
656-Author: Graeme Gott <graeme@gottcode.org>
657-Date: 2014-01-05
658-
659- I18n: Update translation ne (100%).
660-
661-commit 873c05ad9261286490c54b7e58f3e1da29a86ec0
662-Author: Graeme Gott <graeme@gottcode.org>
663-Date: 2014-01-05
664-
665- I18n: Update translation de (100%).
666-
667-commit c4336f9b58e1889167013fbabd62b42d6230e695
668-Author: Graeme Gott <graeme@gottcode.org>
669-Date: 2014-01-05
670-
671- I18n: Update translation pl (100%).
672-
673-commit 788b7b068509793395e38ec79ad1f8d767c9a6b6
674-Author: Graeme Gott <graeme@gottcode.org>
675-Date: 2014-01-02
676-
677- I18n: Update translation es (100%).
678-
679-commit bab5c00bda759f39bd4bbf64479dbfd2aa4a75e6
680-Author: Graeme Gott <graeme@gottcode.org>
681-Date: 2014-01-02
682-
683- Fix crash when menu items are changed.
684-
685-commit 1e83df70fa7f311c06efcdc2b8fff2caa2ca44b0
686-Author: Graeme Gott <graeme@gottcode.org>
687-Date: 2013-12-30
688-
689- I18n: Update translation ne (100%).
690-
691-commit 12c91735ddc50e622e480efebeb8df6b389a8a83
692-Author: Graeme Gott <graeme@gottcode.org>
693-Date: 2013-12-30
694-
695- I18n: Update translation uz (100%).
696-
697-commit b67bd05fd1421896ff7001acbd3899246060b72a
698-Author: Graeme Gott <graeme@gottcode.org>
699-Date: 2013-12-29
700-
701- I18n: Update translation fr (100%).
702-
703-commit 252ef814d8061fe26e1c5e42eca811c19072e105
704-Merge: e0a7930 84e3f26
705-Author: Graeme Gott <graeme@gottcode.org>
706-Date: 2013-12-29
707-
708- Merge pull request #54 from andrzej-r/master
709-
710- Button layout fixes
711-
712-commit 84e3f26535e04c1e37cf02754ff1a161630a25ce
713-Author: Andrzej <ndrwrdck@gmail.com>
714-Date: 2013-12-29
715-
716- Fixes to the button layout
717-
718- Mostly in vertical and deskbar mode.
719-
720-commit 314aa2f975e73150bf0933b87ac263c2aff0b2d4
721-Author: Andrzej <ndrwrdck@gmail.com>
722-Date: 2013-12-29
723-
724- Added "single panel row" option
725-
726-commit e0a7930b811f1186a13564366a29c48227633797
727-Author: Graeme Gott <graeme@gottcode.org>
728-Date: 2013-12-29
729-
730- Add git version number.
731-
732-commit 58f08321a46dd8704efbc6c2997b07c4be24e266
733-Author: Graeme Gott <graeme@gottcode.org>
734-Date: 2013-12-29
735-
736- Bump version number.
737-
738-commit 0b53e87c0b83c517e032673febea6c30635dd414
739-Author: Graeme Gott <graeme@gottcode.org>
740-Date: 2013-12-29
741-
742- Update string locations.
743-
744-commit 01fdd2e49aeead2b09451283eb00b4b908db18a8
745-Author: Graeme Gott <graeme@gottcode.org>
746-Date: 2013-12-28
747-
748- Tweak panel button layout.
749-
750-commit 0d56cb882ac0e265628e3104ae2e26d1e2f64a91
751-Author: Graeme Gott <graeme@gottcode.org>
752-Date: 2013-12-15
753-
754- Force panel icon size.
755-
756-commit 291814e370ff6eb1331eb59e6397244a8246a9bd
757-Author: Graeme Gott <graeme@gottcode.org>
758-Date: 2013-12-26
759-
760- Fix sorting of search action matches. Closes #52.
761-
762-commit ce23ef3c031990f618b60d48b41d9cb6c198daa5
763-Author: Graeme Gott <graeme@gottcode.org>
764-Date: 2013-12-26
765-
766- I18n: Update translation ast (100%).
767-
768-commit 6b005ff8e786a5f756a0556bc3668fd273974a13
769-Author: Graeme Gott <graeme@gottcode.org>
770-Date: 2013-12-26
771-
772- I18n: Update translation fa (100%).
773-
774-commit 38113730862e3eee11b72b64a676f76e106aeeb7
775-Author: Graeme Gott <graeme@gottcode.org>
776-Date: 2013-12-20
777-
778- I18n: Update translation nb (100%).
779-
780-commit 5d0e5727498b2f19c6596594a20d1d2db28e36b9
781-Author: Graeme Gott <graeme@gottcode.org>
782-Date: 2013-12-19
783-
784- I18n: Update translation fr (96%).
785-
786-commit 2000c421988b6dde8457772122059106fd5587bc
787-Author: Graeme Gott <graeme@gottcode.org>
788-Date: 2013-12-19
789-
790- I18n: Update translation pl (100%).
791-
792-commit bda051480f403bb4c1b7f72fac44aa6dcb07786c
793-Author: Graeme Gott <graeme@gottcode.org>
794-Date: 2013-12-17
795-
796- I18n: Update translation kk (100%).
797-
798-commit 620ac0ec8912126ba39613a694ace943d28f2f9a
799-Author: Graeme Gott <graeme@gottcode.org>
800-Date: 2013-12-17
801-
802- I18n: Update translation uz (69%).
803-
804-commit b28e3fef4f2c7012c2805f962d2041b66fe8f8cf
805-Author: Graeme Gott <graeme@gottcode.org>
806-Date: 2013-12-17
807-
808- I18n: Update translation hu (82%).
809-
810-commit fcde97c021af7536d0a9fa13ecea5dfca28635b1
811-Author: Graeme Gott <graeme@gottcode.org>
812-Date: 2013-12-17
813-
814- I18n: Update translation es (91%).
815-
816-commit ccd83d5a13040da8ebba162d1ea34bfa3c74bca0
817-Author: Graeme Gott <graeme@gottcode.org>
818-Date: 2013-12-17
819-
820- I18n: Update translation ast (92%).
821-
822-commit 873806d290a62a47872c61df4ea8326908df56da
823-Author: Graeme Gott <graeme@gottcode.org>
824-Date: 2013-12-17
825-
826- I18n: Update translation zh_TW (93%).
827-
828-commit 7569f231d468fdadf7712d527ff89d76c663dc04
829-Author: Graeme Gott <graeme@gottcode.org>
830-Date: 2013-12-17
831-
832- I18n: Update translation pl (100%).
833-
834-commit 6727cbe3bc001fd4b8d7d47440ab32f1203801f2
835-Author: Graeme Gott <graeme@gottcode.org>
836-Date: 2013-12-15
837-
838- I18n: Update translation ne (100%).
839-
840-commit 8889cc55bd56e186e2346eedeff650dfdbf4d0ce
841-Author: Graeme Gott <graeme@gottcode.org>
842-Date: 2013-12-14
843-
844- Fix undefined behavior in slot parameter types.
845-
846-commit 443d4ab50ae475f750f8d985902d16b5cf3bcd98
847-Author: Graeme Gott <graeme@gottcode.org>
848-Date: 2013-12-14
849-
850- Fix undefined behavior in slot parameter counts.
851-
852-commit 2340c799cea8b19b7adb0a4b0a7a3cf733d4c21d
853-Author: Graeme Gott <graeme@gottcode.org>
854-Date: 2013-12-14
855-
856- Fix undefined behavior in slot classes.
857-
858-commit 9406cffebfca586035ac5c38663844314e655422
859-Author: Graeme Gott <graeme@gottcode.org>
860-Date: 2013-12-14
861-
862- I18n: Update translation sr@latin (100%).
863-
864-commit efd56a88f3211cdcaba2f122d0738480b3138dd4
865-Author: Graeme Gott <graeme@gottcode.org>
866-Date: 2013-12-13
867-
868- I18n: Update translation ru (100%).
869-
870-commit c8b307c18f9074f843df608f193c0e3ec3f1f09b
871-Author: Graeme Gott <graeme@gottcode.org>
872-Date: 2013-12-13
873-
874- Fix segfault when clicking on subcategory.
875-
876-commit 822fa9fc8d19fa52d33549d9722045db08dd2be4
877-Author: Graeme Gott <graeme@gottcode.org>
878-Date: 2013-12-13
879-
880- Add support for custom menu files. Closes #48.
881-
882-commit 2c449c586ef4a410725f3cd3f663e230cc7169d4
883-Author: Graeme Gott <graeme@gottcode.org>
884-Date: 2013-12-13
885-
886- I18n: Add translation sr (100%).
887-
888-commit 6452d7fe62cb1d3251cc7977acefe469289f386e
889-Author: Graeme Gott <graeme@gottcode.org>
890-Date: 2013-12-13
891-
892- I18n: Update translation ms (100%).
893-
894-commit bbeb4285b21865fc4c8d260257338d1fb80d8722
895-Author: Graeme Gott <graeme@gottcode.org>
896-Date: 2013-12-12
897-
898- Prevent dragging search actions.
899-
900-commit c9f3b6eed1351a2da72c4b825321196fc70485da
901-Author: Graeme Gott <graeme@gottcode.org>
902-Date: 2013-12-11
903-
904- Add dragging launchers to panel or desktop. Closes #36.
905-
906-commit 7c3262d02c15487b7b2cbc62d8948ecc8bb5ce93
907-Author: Graeme Gott <graeme@gottcode.org>
908-Date: 2013-12-11
909-
910- I18n: Update translation uk (100%).
911-
912-commit be958755266ef313e67868cbff82f5697afbd6bb
913-Author: Graeme Gott <graeme@gottcode.org>
914-Date: 2013-12-11
915-
916- I18n: Update translation ne (100%).
917-
918-commit 60f4a9720a648b3ee0c75f2bb4bc422559f6d4a1
919-Author: Graeme Gott <graeme@gottcode.org>
920-Date: 2013-12-10
921-
922- Fix menu artifacts when switching categories. Closes #46.
923-
924-commit d2faa24c4f0bb800ad7f237425bb8ab661c0eda0
925-Author: Graeme Gott <graeme@gottcode.org>
926-Date: 2013-12-10
927-
928- I18n: Update translation de (100%).
929-
930-commit 7e102b8179b65d237ffb9740d90b596512fcc697
931-Author: Graeme Gott <graeme@gottcode.org>
932-Date: 2013-12-10
933-
934- I18n: Update translation ca (100%).
935-
936-commit 3949920fd7d8f402128548c40b471fc5bcd79c31
937-Author: Graeme Gott <graeme@gottcode.org>
938-Date: 2013-12-09
939-
940- I18n: Update translation tr (100%).
941-
942-commit 577c65f55e964a291c0d2e5b9425a256d2a923ba
943-Author: Graeme Gott <graeme@gottcode.org>
944-Date: 2013-12-09
945-
946- I18n: Update translation bg (100%).
947-
948-commit 147da95d1c615fdfe0e79135ba8fd202737fd5ab
949-Author: Graeme Gott <graeme@gottcode.org>
950-Date: 2013-12-09
951-
952- I18n: Update translation pl (100%).
953-
954-commit c2696f1cbe738c644627ac60ced7425c2af89965
955-Author: Graeme Gott <graeme@gottcode.org>
956-Date: 2013-12-08
957-
958- I18n: Update translation en_GB (100%).
959-
960-commit 54738f000014c18d9b1dbb7a8998c49ffcebbcc4
961-Author: Graeme Gott <graeme@gottcode.org>
962-Date: 2013-12-08
963-
964- I18n: Update translation pt (100%).
965-
966-commit 82ad1f6067d4081f063a5040c2b50026cd0a5a0b
967-Author: Graeme Gott <graeme@gottcode.org>
968-Date: 2013-12-08
969-
970- I18n: Update translation ro (100%).
971-
972-commit 5f53d0c8df01202050f90c43bf4fb7fd9ec0671b
973-Author: Graeme Gott <graeme@gottcode.org>
974-Date: 2013-12-08
975-
976- I18n: Update translation nl (100%).
977-
978-commit 07ef3f0704f69c8fa204ca028be755b421dbba83
979-Author: Graeme Gott <graeme@gottcode.org>
980-Date: 2013-12-08
981-
982- I18n: Update translation it (100%).
983-
984-commit 17fbdcc15ee56022006f02493a33651ff649475a
985-Author: Graeme Gott <graeme@gottcode.org>
986-Date: 2013-12-08
987-
988- I18n: Update translation ja (100%).
989-
990-commit 1f85da7c2426e5b30fcbc09170a16255cca1c5f5
991-Author: Graeme Gott <graeme@gottcode.org>
992-Date: 2013-12-08
993-
994- I18n: Update translation sk (100%).
995-
996-commit 808bac833c66b51e1623e68a3170e0dec897f498
997-Author: Graeme Gott <graeme@gottcode.org>
998-Date: 2013-12-08
999-
1000- I18n: Update translation he (100%).
1001-
1002-commit d0c11e2563964aab38ddcf22cdcb6e31ec6d28ee
1003-Author: Graeme Gott <graeme@gottcode.org>
1004-Date: 2013-12-08
1005-
1006- I18n: Update translation de (100%).
1007-
1008-commit 68a0010dfef3b1b89b77c4abb1dede1d0e235a52
1009-Author: Graeme Gott <graeme@gottcode.org>
1010-Date: 2013-12-07
1011-
1012- Update strings.
1013-
1014-commit 7d9f9f45c410d2e0f4b3ebcdc42b7d01bcd2286d
1015-Author: Graeme Gott <graeme@gottcode.org>
1016-Date: 2013-12-06
1017-
1018- I18n: Add translation ne (100%).
1019-
1020-commit a393cc9230c2acf16a43b52081c74df06979ac11
1021-Author: Graeme Gott <graeme@gottcode.org>
1022-Date: 2013-12-06
1023-
1024- Support case sensitive run and search actions.
1025-
1026-commit b6aa55e2fd30e5dad7de4fbcd62058a9fb8396ad
1027-Author: Graeme Gott <graeme@gottcode.org>
1028-Date: 2013-12-05
1029-
1030- Add running arbitrary programs in PATH. Closes #42.
1031-
1032-commit b80908eb0a70e461b0a522e73b6d8ecd21038fee
1033-Author: Graeme Gott <graeme@gottcode.org>
1034-Date: 2013-12-05
1035-
1036- Unify interface for searching elements.
1037-
1038-commit f8e5be9ced34cea2aca8778d128457deb677b052
1039-Author: Graeme Gott <graeme@gottcode.org>
1040-Date: 2013-12-04
1041-
1042- Remember search actions.
1043-
1044-commit 3853a61f89b5670a959e487e88cdf66efc33fd36
1045-Author: Graeme Gott <graeme@gottcode.org>
1046-Date: 2013-11-23
1047-
1048- Add configuring search actions.
1049-
1050-commit 6ec86927e03db11fa39d12043596b72c539ecdfa
1051-Author: Graeme Gott <graeme@gottcode.org>
1052-Date: 2013-11-22
1053-
1054- Add running search actions.
1055-
1056-commit f99c1906a84681ef51804bdd8f06bb4ab496edfe
1057-Author: Graeme Gott <graeme@gottcode.org>
1058-Date: 2013-11-22
1059-
1060- Add search action class.
1061-
1062-commit 3bc137caf38f0c16019fe9a3a87c1f10a6d8d1c2
1063-Author: Graeme Gott <graeme@gottcode.org>
1064-Date: 2013-11-21
1065-
1066- Add support for running other types of elements.
1067-
1068-commit f2d60070d588f6f288b5afd97b62370d5771e2cd
1069-Author: Graeme Gott <graeme@gottcode.org>
1070-Date: 2013-12-04
1071-
1072- Use empty file for saving settings.
1073-
1074-commit c7f255ed3f6752de6e6b40de4b4a3df6912af6d6
1075-Author: Graeme Gott <graeme@gottcode.org>
1076-Date: 2013-12-03
1077-
1078- Adjust packing of panel button label.
1079-
1080-commit ed94498dd2e575e0ac6aea0fce9fcd342d6a0f22
1081-Author: Graeme Gott <graeme@gottcode.org>
1082-Date: 2013-12-03
1083-
1084- Update news file.
1085-
1086-commit f01f352647d5e6276c47aabe7c4b076252e39fef
1087-Author: Graeme Gott <graeme@gottcode.org>
1088-Date: 2013-12-02
1089-
1090- Use proper size request for small panels.
1091-
1092-commit d70125c58befdd0d715a9c6fe8e6defbf6048b23
1093-Author: Graeme Gott <graeme@gottcode.org>
1094-Date: 2013-12-02
1095-
1096- I18n: Update translation uk (100%).
1097-
1098-commit d9a9805b30d13e0d8a143ab129b0da1244275c5d
1099-Author: Graeme Gott <graeme@gottcode.org>
1100-Date: 2013-12-01
1101-
1102- I18n: Update translation es (100%).
1103-
1104-commit 9c60540e499e12bb3f96ea549bc1d8bf968b9147
1105-Author: Graeme Gott <graeme@gottcode.org>
1106-Date: 2013-12-01
1107-
1108- I18n: Update translation ar (100%).
1109-
1110-commit 6e6aa9890192dc2c02dd94d35bc225d08e022107
1111-Author: Graeme Gott <graeme@gottcode.org>
1112-Date: 2013-12-01
1113-
1114- I18n: Update translation uk (62%).
1115-
1116-commit f0fb4bda3b6efd8184ea5089d2c2c1e1dd63f832
1117-Author: Graeme Gott <graeme@gottcode.org>
1118-Date: 2013-11-24
1119-
1120- Replace slot class functions with templates.
1121-
1122-commit 7f3b08099e9551f65060104f73d25f1513880d3b
1123-Author: Graeme Gott <graeme@gottcode.org>
1124-Date: 2013-11-21
1125-
1126- Fix regression where commands were always shown.
1127-
1128-commit e403a7a73b3a01c4b9b47321a77f67ef0a969ab8
1129-Author: Graeme Gott <graeme@gottcode.org>
1130-Date: 2013-11-20
1131-
1132- Use an array for commands.
1133-
1134-commit 2277003b3c870b3ee3c8ebb114bac6528ad96d6d
1135-Author: Graeme Gott <graeme@gottcode.org>
1136-Date: 2013-11-20
1137-
1138- Merge configuration dialog behavior tabs.
1139-
1140-commit fad8c07640e830bccfb053c442b3ac48ef2a3e85
1141-Author: Graeme Gott <graeme@gottcode.org>
1142-Date: 2013-11-20
1143-
1144- Rename option for showing generic application names. Closes #40.
1145-
1146-commit 4e159d67db87f388955dbfbed18cb97cf99c0590
1147-Author: Graeme Gott <graeme@gottcode.org>
1148-Date: 2013-11-20
1149-
1150- Rename option for showing menu hierarchy. References #40.
1151-
1152-commit 5948856da67bc1a28b94dde2f57c4136a0154d80
1153-Author: Graeme Gott <graeme@gottcode.org>
1154-Date: 2013-11-20
1155-
1156- Use a single row in Xfce 4.10 panel. Closes #39.
1157-
1158-commit 9b324693409065a615fbf41f6d567cd5015ac014
1159-Author: Graeme Gott <graeme@gottcode.org>
1160-Date: 2013-11-20
1161-
1162- I18n: Update translation de (100%).
1163-
1164-commit ba49a0fd07e9ceb383a2d931b769a112d9cc881c
1165-Author: Graeme Gott <graeme@gottcode.org>
1166-Date: 2013-11-20
1167-
1168- Fix incorrect fetching of panel orientation in Xfce 4.10. Closes #37.
1169-
1170-commit 3d878da38aa50661f14667d7eece3ec85882b992
1171-Author: Graeme Gott <graeme@gottcode.org>
1172-Date: 2013-11-20
1173-
1174- Fix menu item icons colored by selection background.
1175-
1176-commit 2c56f1934a390367804e7301f57a6b9f62381212
1177-Author: Graeme Gott <graeme@gottcode.org>
1178-Date: 2013-11-19
1179-
1180- Fix unable to use custom commands with parameters. Closes #38.
1181-
1182-commit 8cbb8c94164507405b9df78fadeada6a02ee4c7e
1183-Author: Graeme Gott <graeme@gottcode.org>
1184-Date: 2013-11-19
1185-
1186- Update news file.
1187-
1188-commit a66dd8b5900b01ed258922ed57078ab3fd8501b0
1189-Author: Graeme Gott <graeme@gottcode.org>
1190-Date: 2013-11-19
1191-
1192- I18n: Update translation hu (90%).
1193-
1194-commit 02ced55ad32d411feb46f3f3fc4cd9ed103f7320
1195-Author: Graeme Gott <graeme@gottcode.org>
1196-Date: 2013-11-18
1197-
1198- Replace search model code.
1199-
1200-commit c88573acf41467966e7148fa5fd4d657cc345e61
1201-Author: Graeme Gott <graeme@gottcode.org>
1202-Date: 2013-11-19
1203-
1204- Fix warning about missing parameter in Command::activated.
1205-
1206-commit f582d598118e3064f72a4923dd18bb4e7c56a645
1207-Author: Graeme Gott <graeme@gottcode.org>
1208-Date: 2013-11-17
1209-
1210- Add tips to README for popup script and compiz workaround. Closes #35.
1211-
1212-commit 28fe02b66a0fe8e03f99e87711e1a505a0ca2989
1213-Author: Graeme Gott <graeme@gottcode.org>
1214-Date: 2013-11-17
1215-
1216- Add window title to allow identifying menu window. References #35.
1217-
1218-commit 365429142136c42cdb72726c131ad64b0e555bba
1219-Author: Graeme Gott <graeme@gottcode.org>
1220-Date: 2013-11-16
1221-
1222- I18n: Update translation fa (100%).
1223-
1224-commit c8f539dee6c9945a09bd75b480e5e377955213ce
1225-Author: Graeme Gott <graeme@gottcode.org>
1226-Date: 2013-11-16
1227-
1228- I18n: Update translation sv (85%).
1229-
1230-commit 3a6c14adb92619bf76d4ffe01b07f29e987b4ade
1231-Author: Graeme Gott <graeme@gottcode.org>
1232-Date: 2013-11-15
1233-
1234- Minor improvements to build system files.
1235-
1236- Allow disabling visibility.
1237- Remove GTK type checks in release builds.
1238- Check that all symbols are resolved in development builds.
1239-
1240-commit ae16209426f2912ed12f62120653d814399cf2e0
1241-Author: Graeme Gott <graeme@gottcode.org>
1242-Date: 2013-11-15
1243-
1244- Clean up includes.
1245-
1246-commit 7057110cfa3838b20f9dd2630403f328c4e1d512
1247-Author: Graeme Gott <graeme@gottcode.org>
1248-Date: 2013-11-15
1249-
1250- Don't set command twice.
1251-
1252-commit 630148a5f35212af75d53743ea49589c6e824f75
1253-Author: Graeme Gott <graeme@gottcode.org>
1254-Date: 2013-11-14
1255-
1256- Immediately hide or show commands.
1257-
1258-commit fb69d6c2a9d786fb248ee0540fc91bd1a464e77c
1259-Author: Graeme Gott <graeme@gottcode.org>
1260-Date: 2013-11-11
1261-
1262- Only save settings when changed.
1263-
1264-commit c4bf1f123107044dc46322312c769e0a22046961
1265-Author: Graeme Gott <graeme@gottcode.org>
1266-Date: 2013-11-11
1267-
1268- Merge configuration dialog appearance tabs.
1269-
1270-commit 050ccb4212b670ab3567b3f4a0321c5e97785afa
1271-Author: Graeme Gott <graeme@gottcode.org>
1272-Date: 2013-11-11
1273-
1274- Add command to switch users.
1275-
1276-commit d35af9be2891970f0e34a7ebbb194647aba5311e
1277-Author: Graeme Gott <graeme@gottcode.org>
1278-Date: 2013-11-10
1279-
1280- Refactor code for editting commands.
1281-
1282-commit 8870e2e2e4dcc908737713ce69dc41331fc9dcca
1283-Author: Graeme Gott <graeme@gottcode.org>
1284-Date: 2013-11-10
1285-
1286- Add support for hiding commands.
1287-
1288-commit c7c18104d0d0d6bf40d95ecc6c1d4bbd56c344f7
1289-Author: Graeme Gott <graeme@gottcode.org>
1290-Date: 2013-11-10
1291-
1292- Remove mnemonics fromn command tooltips.
1293-
1294-commit 773d4f84db56fe41f137c733cb6bb158cd85f572
1295-Author: Graeme Gott <graeme@gottcode.org>
1296-Date: 2013-11-12
1297-
1298- I18n: Add translation fa (25%).
1299-
1300-commit 8a7fa0a38e41dcb82129700ed13b8f2e5db4231a
1301-Author: Graeme Gott <graeme@gottcode.org>
1302-Date: 2013-11-12
1303-
1304- I18n: Update translation zh_TW (100%).
1305-
1306-commit b3dc1c4e8426fe7a777506805db4b88c5ffde10d
1307-Author: Graeme Gott <graeme@gottcode.org>
1308-Date: 2013-11-09
1309-
1310- I18n: Update translation de (100%).
1311-
1312-commit 68d8770fcb7713029e33da3f85a931ec286d7a37
1313-Author: Graeme Gott <graeme@gottcode.org>
1314-Date: 2013-11-09
1315-
1316- I18n: Update translation tr (100%).
1317-
1318-commit 49d3736d3626cf9693e46f1c78408fad03f5fc05
1319-Author: Graeme Gott <graeme@gottcode.org>
1320-Date: 2013-11-09
1321-
1322- I18n: Update translation ast (100%).
1323-
1324-commit 359118dd5f563db11ea32ad1f840a0a7e8eb7ae9
1325-Author: Graeme Gott <graeme@gottcode.org>
1326-Date: 2013-11-07
1327-
1328- Add options to hide category and launcher icons.
1329-
1330-commit 39a13c0b61aa1df3cea9375fffb4f70880f47683
1331-Author: Graeme Gott <graeme@gottcode.org>
1332-Date: 2013-11-07
1333-
1334- I18n: Add translation ast (14%).
1335-
1336-commit 9622124adff690021e9260eb9446a52d055339de
1337-Author: Graeme Gott <graeme@gottcode.org>
1338-Date: 2013-11-07
1339-
1340- Add command to launch menu editor.
1341-
1342-commit 884f0f9de6f3d024a5eebf3174f13d1300d0e429
1343-Author: Graeme Gott <graeme@gottcode.org>
1344-Date: 2013-11-07
1345-
1346- Move management of commands into settings.
1347-
1348-commit d45525567d5d444ede1aaf6dfb4750adb5cf1578
1349-Author: Graeme Gott <graeme@gottcode.org>
1350-Date: 2013-11-04
1351-
1352- I18n: Update translation cs (100%).
1353-
1354-commit 044cf1b7a83842afc70edc758c3a9ad2dbe15052
1355-Author: Graeme Gott <graeme@gottcode.org>
1356-Date: 2013-11-04
1357-
1358- I18n: Update translation id (100%).
1359-
1360-commit 88b811937ace62cb7d35f1f202d5003042b79e68
1361-Author: Graeme Gott <graeme@gottcode.org>
1362-Date: 2013-11-03
1363-
1364- Defer loading applications until window is shown.
1365-
1366-commit 642bf9f8f545e910bcdb96cd59e0bb9d36067919
1367-Author: Graeme Gott <graeme@gottcode.org>
1368-Date: 2013-11-03
1369-
1370- Remove unnecessary reloading of applications.
1371-
1372-commit 0c6cf57b313fd9af82e0ba4eea4cf79d4e199b7b
1373-Author: Graeme Gott <graeme@gottcode.org>
1374-Date: 2013-11-02
1375-
1376- Remove LauncherModel class.
1377-
1378-commit ad7adcbe0b095645e35ed7f1ca481da4fda7bd1c
1379-Author: Graeme Gott <graeme@gottcode.org>
1380-Date: 2013-11-02
1381-
1382- Add support for loading default settings from a file.
1383-
1384-commit 520a61de521532c4ac23a7cb45b9127f011aa148
1385-Author: Graeme Gott <graeme@gottcode.org>
1386-Date: 2013-11-02
1387-
1388- Use a singleton for settings.
1389-
1390-commit 1038f86e56bb987f1ea873f0d71be3342c00e094
1391-Author: Graeme Gott <graeme@gottcode.org>
1392-Date: 2013-11-01
1393-
1394- Use a category for all applications.
1395-
1396-commit c364af9902f5c230494a7f827b7cef10d4f660a0
1397-Author: Graeme Gott <graeme@gottcode.org>
1398-Date: 2013-11-01
1399-
1400- Fix incorrect comparison for checking icon sizes.
1401-
1402-commit e7c411c5cef7fb8fa343fdfef6f48b08ba4d8864
1403-Author: Graeme Gott <graeme@gottcode.org>
1404-Date: 2013-11-01
1405-
1406- I18n: Add translation zh_TW (18%).
1407-
1408-commit 5f02bd02310b9f6d75721c13e3924bcc4dea909d
1409-Author: Graeme Gott <graeme@gottcode.org>
1410-Date: 2013-11-01
1411-
1412- I18n: Update translation fr (100%).
1413-
1414-commit 66efb64ec1ab7d529f644b9ab7447f1f3cf2ff3a
1415-Author: Graeme Gott <graeme@gottcode.org>
1416-Date: 2013-10-31
1417-
1418- Improve handling of translations.
1419-
1420-commit bc68a122cd8c9ad7cb57bb68218a559b0c6410ac
1421-Author: Graeme Gott <graeme@gottcode.org>
1422-Date: 2013-10-31
1423-
1424- Change license notice style.
1425-
1426-commit dfe06fe0a428cbe5ba91b3d20fe3ca37b0b921e7
1427-Author: Graeme Gott <graeme@gottcode.org>
1428-Date: 2013-10-31
1429-
1430- Rearrange files to match standard layout of Xfce plugins.
1431-
1432-commit 87255c398372fb99d82316fe996710804c5165f8
1433-Author: Graeme Gott <graeme@gottcode.org>
1434-Date: 2013-10-31
1435-
1436- Rename PanelPlugin class to Plugin.
1437-
1438-commit c66e5e9fdbf1689872d32cc650100a6d38dd454d
1439-Author: Graeme Gott <graeme@gottcode.org>
1440-Date: 2013-10-31
1441-
1442- Rename Menu class to Window.
1443-
1444-commit c6d46ff834f2d5336c15bd52ce20bebd6e658e52
1445-Author: Graeme Gott <graeme@gottcode.org>
1446-Date: 2013-10-31
1447-
1448- Improve build system.
1449-
1450-commit 1917692c8df898933ad0686a8cdb0e8d960e77b8
1451-Author: Graeme Gott <graeme@gottcode.org>
1452-Date: 2013-10-30
1453-
1454- Refactor command button.
1455-
1456-commit 0caab81d36f175d1c02201e1ad12dcbbbe04a0d1
1457-Author: Graeme Gott <graeme@gottcode.org>
1458-Date: 2013-10-30
1459-
1460- I18n: Update translation et (55%).
1461-
1462-commit 362a90e06e4b858398765e3da189da761eb3d4dc
1463-Author: Graeme Gott <graeme@gottcode.org>
1464-Date: 2013-10-30
1465-
1466- I18n: Update translation ru (100%).
1467-
1468-commit 3d8e4df0c217821e7123f28ca3595cef2e92a736
1469-Author: Graeme Gott <graeme@gottcode.org>
1470-Date: 2013-10-30
1471-
1472- I18n: Update translation es (100%).
1473-
1474-commit e3047997536385ed46b52c7e668a26c5728ed084
1475-Author: Graeme Gott <graeme@gottcode.org>
1476-Date: 2013-10-30
1477-
1478- I18n: Update translation ca (100%).
1479-
1480-commit 7f81f417f49c501f4397fb06409051a8a7ecd9a1
1481-Author: Graeme Gott <graeme@gottcode.org>
1482-Date: 2013-10-29
1483-
1484- Bump version number.
1485-
1486-commit 46f72cee1f7b3ede1e2fa5878523fe7c34e0ae43
1487-Author: Graeme Gott <graeme@gottcode.org>
1488-Date: 2013-10-29
1489-
1490- Update French translation.
1491-
1492-commit 0e51731ce225c94547d4d4422d69983071869d66
1493-Author: Graeme Gott <graeme@gottcode.org>
1494-Date: 2013-10-29
1495-
1496- Add partial Estonian and Ukrainian translations.
1497-
1498-commit dc14f46d7a10cc99989b757fe008dd4bc3cb8362
1499-Author: Graeme Gott <graeme@gottcode.org>
1500-Date: 2013-10-29
1501-
1502- Disable command buttons for invalid user specified commands.
1503-
1504-commit 1f0a77c1a1d6d303f3451309ea334825e6b12414
1505-Author: Graeme Gott <graeme@gottcode.org>
1506-Date: 2013-10-28
1507-
1508- Update Brazilian Portuguese translation.
1509-
1510-commit c71005d67dc9ab2cec7f4d173b75bfec55d9346d
1511-Author: Graeme Gott <graeme@gottcode.org>
1512-Date: 2013-10-27
1513-
1514- Update Danish translation.
1515-
1516-commit a9f7afbdbbb170b52a2d6bf0656301f8ee15cb10
1517-Author: Graeme Gott <graeme@gottcode.org>
1518-Date: 2013-10-26
1519-
1520- Update Malay translation.
1521-
1522-commit f5b3f85a43b986ffb85ce36eb4232fc3f1df6446
1523-Author: Graeme Gott <graeme@gottcode.org>
1524-Date: 2013-10-26
1525-
1526- Add Finnish translation.
1527-
1528-commit 0b2e8561cbc730c022f6a6e35e1ba0166fa861a9
1529-Author: Graeme Gott <graeme@gottcode.org>
1530-Date: 2013-10-24
1531-
1532- Update Russian translation.
1533-
1534-commit 87cefa62ee98d573a1225296c2cfbcfa9e0ed7c0
1535-Author: Graeme Gott <graeme@gottcode.org>
1536-Date: 2013-10-21
1537-
1538- Fix favorites and recent deleted when menu failed to load.
1539-
1540-commit 22fe3031282410aeee39d1398e753482a4ff15ee
1541-Author: Graeme Gott <graeme@gottcode.org>
1542-Date: 2013-10-22
1543-
1544- Update Norwegian Bokmål translation.
1545-
1546-commit 7144529ae139c8314fec0acb4fdc1e32cf45f0b4
1547-Author: Graeme Gott <graeme@gottcode.org>
1548-Date: 2013-10-21
1549-
1550- Update Spanish translation.
1551-
1552-commit de68df7a3c14b74f59ac2e38981fceba497afffe
1553-Author: Graeme Gott <graeme@gottcode.org>
1554-Date: 2013-10-20
1555-
1556- Update Bulgarian and Polish translations.
1557-
1558-commit a9a4dcb72285d94a9b9994aed903f2a02b40a3e3
1559-Author: Graeme Gott <graeme@gottcode.org>
1560-Date: 2013-10-20
1561-
1562- Add Serbian (Latin) translation.
1563-
1564-commit 6c885b0fe322bd7c88ecd2376ebdb0353ea22617
1565-Author: Graeme Gott <graeme@gottcode.org>
1566-Date: 2013-10-19
1567-
1568- Update Catalan, Dutch, German, Japanese, Russian, Uzbek translations.
1569-
1570-commit 3fa101f5f6d4cb7c28a227b915d70163fdf43514
1571-Author: Graeme Gott <graeme@gottcode.org>
1572-Date: 2013-10-15
1573-
1574- Only create subcategories when loading hierarchy.
1575-
1576-commit 27a09eb1118ca3e8d0e3e4d6b771b5e0308363e0
1577-Author: Graeme Gott <graeme@gottcode.org>
1578-Date: 2013-10-15
1579-
1580- Remove unnecessary flushing of garcon cache.
1581-
1582-commit 78c69fed938b948cc984af4fa2db2a5e57301621
1583-Author: Graeme Gott <graeme@gottcode.org>
1584-Date: 2013-10-15
1585-
1586- Fix memory leak when reloading applications.
1587-
1588-commit 177a131d8e7955f6d56ce0c9b74fb0e741bd0a10
1589-Author: Graeme Gott <graeme@gottcode.org>
1590-Date: 2013-10-15
1591-
1592- Update Hebrew translation.
1593-
1594-commit f762dca5e8fd044c1a3c9d55fa568554288a6d8e
1595-Author: Graeme Gott <graeme@gottcode.org>
1596-Date: 2013-10-13
1597-
1598- Add Croatian translation.
1599-
1600-commit 990e67108bafc88b5349a40006e5b56c1a0218e1
1601-Author: Graeme Gott <graeme@gottcode.org>
1602-Date: 2013-10-13
1603-
1604- Update Italian translation.
1605-
1606-commit dc793268a53e270dbd3638aa4de084adbe45c67e
1607-Author: Graeme Gott <graeme@gottcode.org>
1608-Date: 2013-10-10
1609-
1610- Update Romanian and Spanish translations.
1611-
1612-commit cefdaeb323ce289de6733e71dfb911333b88e9b2
1613-Author: Graeme Gott <graeme@gottcode.org>
1614-Date: 2013-10-10
1615-
1616- Update Hebrew, Portuguese, Slovak, Uzbek translations.
1617-
1618-commit 624c3b087de41a5f3b28174ededeaddc859ca9d2
1619-Author: Graeme Gott <graeme@gottcode.org>
1620-Date: 2013-10-10
1621-
1622- Add man page for popup script.
1623-
1624-commit 6189b126d68577035727c31b8f6df6cc43aca398
1625-Author: Graeme Gott <graeme@gottcode.org>
1626-Date: 2013-10-09
1627-
1628- Update strings.
1629-
1630-commit 7c2b461b3b92895ed878ea12323667ee9d107a74
1631-Author: Graeme Gott <graeme@gottcode.org>
1632-Date: 2013-10-09
1633-
1634- Make sure tab labels are translated.
1635-
1636-commit 42d5da33950ced5eeccdc5016f237d3d3231e407
1637-Author: Graeme Gott <graeme@gottcode.org>
1638-Date: 2013-10-09
1639-
1640- Update popup to show correct version information.
1641-
1642-commit 48300ac080bd34848026ce57d5c3130cae4f11da
1643-Author: Graeme Gott <graeme@gottcode.org>
1644-Date: 2013-10-09
1645-
1646- Add option to position command buttons next to search entry.
1647-
1648-commit 3b9e61cf4ddfb77f0b31167629fbede4c66739fa
1649-Author: Graeme Gott <graeme@gottcode.org>
1650-Date: 2013-10-09
1651-
1652- Add option to position search entry next to panel button. Closes #27.
1653-
1654-commit 0c0fd174f25e8c5eb98b38207339bffd90cffa36
1655-Author: Graeme Gott <graeme@gottcode.org>
1656-Date: 2013-10-09
1657-
1658- Add option to display recently used by default. Closes #30.
1659-
1660-commit 2e574172afd8407cd938127b3ad2fde325f62b62
1661-Author: Graeme Gott <graeme@gottcode.org>
1662-Date: 2013-10-08
1663-
1664- Remember custom commands.
1665-
1666-commit 0f21215a649543292d24130cc103edf18194ec1b
1667-Author: Graeme Gott <graeme@gottcode.org>
1668-Date: 2013-10-08
1669-
1670- Add options to set custom commands. Closes #25.
1671-
1672-commit c41c9f55686a521f7c0c9b834b2e8070e8392ce4
1673-Author: Graeme Gott <graeme@gottcode.org>
1674-Date: 2013-09-22
1675-
1676- Update Catalan and Spanish translations.
1677-
1678-commit 10cc4aa6e76a0c3405c442bf6e413d49373181f0
1679-Author: Graeme Gott <graeme@gottcode.org>
1680-Date: 2013-09-22
1681-
1682- Use tabs for configuration dialog layout.
1683-
1684-commit 0a01dcb26e746c638c0ff90fc8ff1c543284ab6d
1685-Author: Graeme Gott <graeme@gottcode.org>
1686-Date: 2013-09-20
1687-
1688- Add option to not include favorites in recently used.
1689-
1690-commit 3d1f843bfab4f2a1452f56da8dbf13f81eb95c2b
1691-Author: Graeme Gott <graeme@gottcode.org>
1692-Date: 2013-08-24
1693-
1694- Update Greek translation.
1695-
1696-commit 2e262a3764e2e91174e3f29c4eb20440cb7db7f9
1697-Author: Graeme Gott <graeme@gottcode.org>
1698-Date: 2013-08-21
1699-
1700- Add Czech translation.
1701-
1702-commit 33901483d7c7b71687df0578944fb41856539870
1703-Author: Graeme Gott <graeme@gottcode.org>
1704-Date: 2013-08-20
1705-
1706- Only use tree models when necessary.
1707-
1708-commit 7ede4fc47100ceca63cd40da365555825c2db0cd
1709-Author: Graeme Gott <graeme@gottcode.org>
1710-Date: 2013-08-20
1711-
1712- Fix crash with multi-level subcategories.
1713-
1714-commit 6d7f9bae47bda118763b6a622e4de836a4482233
1715-Author: Graeme Gott <graeme@gottcode.org>
1716-Date: 2013-08-14
1717-
1718- Add Uzbek translation.
1719-
1720-commit 2f19d3258c0ce2eb4dfaca4cc8b1f26784886e70
1721-Author: Graeme Gott <graeme@gottcode.org>
1722-Date: 2013-08-14
1723-
1724- Update Japanese translation.
1725-
1726-commit b14aa5dff3b4509959bebeac189f1e35fdec683c
1727-Author: Graeme Gott <graeme@gottcode.org>
1728-Date: 2013-08-13
1729-
1730- Allow pango markup in launcher title. Closes #28.
1731-
1732-commit e03bea00a00d262dcffc31e1311760b27a136ed7
1733-Author: Graeme Gott <graeme@gottcode.org>
1734-Date: 2013-08-08
1735-
1736- Update news file.
1737-
1738-commit 1a79fa717c1a26d6bb5704df9352ec5f38395407
1739-Author: Graeme Gott <graeme@gottcode.org>
1740-Date: 2013-08-08
1741-
1742- Update Arabic translation.
1743-
1744-commit 944761b0c7fa98083683b752184f2e4f1a8e68bf
1745-Author: Graeme Gott <graeme@gottcode.org>
1746-Date: 2013-08-08
1747-
1748- Build as module.
1749-
1750-commit c1b3ec6717780ddd9087810840cd27f08c641857
1751-Author: Graeme Gott <graeme@gottcode.org>
1752-Date: 2013-08-07
1753-
1754- Update Catalan and Spanish translations.
1755-
1756-commit 0ace36cf1c01ec5f7d33df7803fdeced547117fd
1757-Author: Graeme Gott <graeme@gottcode.org>
1758-Date: 2013-08-01
1759-
1760- Collapse tree when switching categories.
1761-
1762-commit 413eb752a7098aecbfe2f9dbcf0f48cfa4a624c7
1763-Author: Graeme Gott <graeme@gottcode.org>
1764-Date: 2013-08-01
1765-
1766- Add option to load menu hierarchy.
1767-
1768-commit ffa1d1d906fd8dc8603eaa186fd47ab75a6360d7
1769-Author: Graeme Gott <graeme@gottcode.org>
1770-Date: 2013-07-29
1771-
1772- Add support for separators.
1773-
1774-commit f905c1e8c7a51533aab5988cab42b6977c1a814b
1775-Author: Graeme Gott <graeme@gottcode.org>
1776-Date: 2013-07-29
1777-
1778- Use STL to sort items and categories.
1779-
1780-commit 711907edbab6679962d45b985797c20327cec40b
1781-Author: Graeme Gott <graeme@gottcode.org>
1782-Date: 2013-08-01
1783-
1784- Derive category and launcher from shared class.
1785-
1786-commit 00d5b608fd2c3a0926d57fc6e330b0a554b9e538
1787-Author: Graeme Gott <graeme@gottcode.org>
1788-Date: 2013-07-29
1789-
1790- Derive search page from page.
1791-
1792-commit 5f911c32b00fcf44073b38c75d43194e78098ee4
1793-Author: Graeme Gott <graeme@gottcode.org>
1794-Date: 2013-07-20
1795-
1796- Derive applications page from page.
1797-
1798-commit 1eae68076e4530b167e00a004f27d2236db92222
1799-Author: Graeme Gott <graeme@gottcode.org>
1800-Date: 2013-07-20
1801-
1802- Add models to categories.
1803-
1804-commit f74b9cfdad130a668cae4591e5859815700b7bbc
1805-Author: Graeme Gott <graeme@gottcode.org>
1806-Date: 2013-08-02
1807-
1808- Update Catalan translation.
1809-
1810-commit 6bcc6f5b3fcad3ef7c72994ea415b78b26840bc7
1811-Author: Graeme Gott <graeme@gottcode.org>
1812-Date: 2013-08-01
1813-
1814- Update Indonesian and Russian translations.
1815-
1816-commit 69dfc84af0fd58d5216ff3a39235c6fc4e839c1f
1817-Author: Graeme Gott <graeme@gottcode.org>
1818-Date: 2013-07-30
1819-
1820- Update Spanish translation.
1821-
1822-commit 0c5ab25c774e78610617028317522c2cc05426cc
1823-Author: Graeme Gott <graeme@gottcode.org>
1824-Date: 2013-07-29
1825-
1826- Update Malay translation.
1827-
1828-commit dc77561a6b5c9e601d3fa83a8c92e23708453536
1829-Author: Graeme Gott <graeme@gottcode.org>
1830-Date: 2013-07-28
1831-
1832- Update Spanish translation.
1833-
1834-commit 915a35b9e0bb5a6852e0d8cc94a7960a0d8b49ae
1835-Author: Graeme Gott <graeme@gottcode.org>
1836-Date: 2013-07-26
1837-
1838- Add name to main widget to allow styling. Closes #14.
1839-
1840-commit 71ae563f8c6344695e4dbca0d5a58123c52d9fb7
1841-Author: Graeme Gott <graeme@gottcode.org>
1842-Date: 2013-07-26
1843-
1844- Update French translation.
1845-
1846-commit 915b5ae7b09a61c1ffd0c2eee811b4ea87f54578
1847-Author: Graeme Gott <graeme@gottcode.org>
1848-Date: 2013-07-25
1849-
1850- Add Japanese translation.
1851-
1852-commit fcac7b029edb267c0e93e41f6cafa34afc1dbb2a
1853-Author: Graeme Gott <graeme@gottcode.org>
1854-Date: 2013-07-25
1855-
1856- Update Russian translation.
1857-
1858-commit 36eb321e23b9693ddfe05b63be4a46738017623b
1859-Author: Graeme Gott <graeme@gottcode.org>
1860-Date: 2013-07-24
1861-
1862- Bump version number.
1863-
1864-commit 431ee92e52b5c5013356e76737e172239cd3e992
1865-Author: Graeme Gott <graeme@gottcode.org>
1866-Date: 2013-07-24
1867-
1868- Update Indonesian translation.
1869-
1870-commit 7a581559675635d401340bf2d6dd8b5e792339f6
1871-Author: Graeme Gott <graeme@gottcode.org>
1872-Date: 2013-07-24
1873-
1874- Add Hungarian translation.
1875-
1876-commit d7d8a16349e7ab6ddbef1d2741c2f29db70937a0
1877-Author: Graeme Gott <graeme@gottcode.org>
1878-Date: 2013-07-24
1879-
1880- Update Swedish translation.
1881-
1882-commit f21ab68471845d6c3a61518b6cc0b2b2b97d816a
1883-Author: Graeme Gott <graeme@gottcode.org>
1884-Date: 2013-07-22
1885-
1886- Update Portugese translation.
1887-
1888-commit 6a096c2a136fc38387b0087e9fd425b093955ba1
1889-Author: Graeme Gott <graeme@gottcode.org>
1890-Date: 2013-07-20
1891-
1892- Fix not showing items with duplicate text. Closes #22.
1893-
1894-commit 993de8fd07bc017e2dda79ce50248c97d3feb967
1895-Author: Graeme Gott <graeme@gottcode.org>
1896-Date: 2013-07-19
1897-
1898- Fix duplicate all applications sidebar button.
1899-
1900-commit 056da7f9f95ad986bbcb9d676f1ade01acb4b241
1901-Author: Graeme Gott <graeme@gottcode.org>
1902-Date: 2013-07-19
1903-
1904- Add Danish translation.
1905-
1906-commit e2a3c159570a7382837cf1956371794388a55b2c
1907-Author: Graeme Gott <graeme@gottcode.org>
1908-Date: 2013-07-19
1909-
1910- Move category out of applications page.
1911-
1912-commit ded8f71e7253ccc7ab11adcb2e2975718ce6f270
1913-Author: Graeme Gott <graeme@gottcode.org>
1914-Date: 2013-07-19
1915-
1916- Remove duplicate scroll to top code.
1917-
1918-commit af22962c0003bc4a3e1257277b48da4693da94e7
1919-Author: Fábio Luciano <fabio@naoimporta.com>
1920-Date: 2013-07-18
1921-
1922- Add portuguese translation on .desktop file and fix translation
1923-
1924-commit 50d46612201326c90236098172fb18bb063bd6b6
1925-Author: Fábio Luciano <fabio@naoimporta.com>
1926-Date: 2013-07-18
1927-
1928- Added translations to Brazilian Portuguese and Portugal Portuguese, also a correction on Espanish translation.
1929-
1930-commit 0a57ed64289edb6cb9633d03e627f19f1aa4c0c2
1931-Author: Graeme Gott <graeme@gottcode.org>
1932-Date: 2013-07-18
1933-
1934- Fix pango errors.
1935-
1936-commit f58c147ff53e2062670fc4ba78c507606228157e
1937-Author: Graeme Gott <graeme@gottcode.org>
1938-Date: 2013-07-18
1939-
1940- Fix filter applied when button is deselected.
1941-
1942-commit 2512af91fdb12f52bb626a770433ed3acf3574ca
1943-Author: Baurzhan Muftakhidinov <baurthefirst@gmail.com>
1944-Date: 2013-07-18
1945-
1946- Updated Kazakh translation.
1947-
1948-commit d50bf7c0cfc201023f04eb51818569d95abdd0a5
1949-Author: Graeme Gott <graeme@gottcode.org>
1950-Date: 2013-07-18
1951-
1952- Update Norwegian Bokmål translation.
1953-
1954-commit 9fee2135e341e2b98d8f55b6af28d624f9324100
1955-Author: hasufell <julian.ospald@googlemail.com>
1956-Date: 2013-07-18
1957-
1958- BUILD: reorder flags
1959-
1960- This enables environment overrides without the need
1961- for patching such as -fno-visibility=hidden.
1962-
1963-commit 504888759e8f30ee6c2919e31a4c77056a562367
1964-Author: hasufell <julian.ospald@googlemail.com>
1965-Date: 2013-07-18
1966-
1967- BUILD: don't overwrite env ldflags and make as-needed optional
1968-
1969-commit c1907db50b334e0c4394d20cb586995ff197ef37
1970-Author: hasufell <julian.ospald@googlemail.com>
1971-Date: 2013-07-18
1972-
1973- BUILD: make -Werror optional
1974-
1975- -Werror can break the build in so many ways that it
1976- should only be used for development or if it's a specific
1977- -Werror=foo flag.
1978-
1979-commit 04f162ddd9660119050e232b3893d1fcf7942fe7
1980-Author: Graeme Gott <graeme@gottcode.org>
1981-Date: 2013-07-16
1982-
1983- Update Norwegian Bokmål and Polish translations.
1984-
1985-commit 962e14ce96412e9a09347f9dfe693dc1cb245b81
1986-Author: Graeme Gott <graeme@gottcode.org>
1987-Date: 2013-07-15
1988-
1989- Update Hebrew and Norwegian Bokmål translations.
1990-
1991-commit 7d9926083da80ddab4da6df35afc188bf6f5c41d
1992-Author: Graeme Gott <graeme@gottcode.org>
1993-Date: 2013-07-15
1994-
1995- Stop unnecessarily tracking pointer motion.
1996-
1997-commit 18ad19b8f885804b282ec2f88e78b163189101ed
1998-Author: Graeme Gott <graeme@gottcode.org>
1999-Date: 2013-07-15
2000-
2001- Fix context menu disabling detection of clicks outside menu.
2002-
2003-commit 5532d21325374198a978046de10350c323721246
2004-Author: Graeme Gott <graeme@gottcode.org>
2005-Date: 2013-07-15
2006-
2007- Fix menu not hiding when configuration dialog is clicked.
2008-
2009-commit 3453311365d4390179fc9c408c903da35bcaab0d
2010-Author: Graeme Gott <graeme@gottcode.org>
2011-Date: 2013-07-15
2012-
2013- Clear search results when releasing menu items.
2014-
2015-commit b00ced8e7a065e9cb647d45116b44bbdab4c579c
2016-Author: Graeme Gott <graeme@gottcode.org>
2017-Date: 2013-07-14
2018-
2019- Update German translation.
2020-
2021-commit 22ca7de7757f9593522c7bc0db07340afd69f602
2022-Author: Graeme Gott <graeme@gottcode.org>
2023-Date: 2013-07-14
2024-
2025- Fix focus selection not properly reset when switching categories.
2026-
2027-commit c7e13e5780899702df83bbb8f168374fdfba7d4e
2028-Author: Graeme Gott <graeme@gottcode.org>
2029-Date: 2013-07-14
2030-
2031- Update German and Turkish translations.
2032-
2033-commit fa5e92e1c882a06caf108dbf826edce6a9b34764
2034-Author: Graeme Gott <graeme@gottcode.org>
2035-Date: 2013-07-14
2036-
2037- Fixed hang at launch when there are too many recent items.
2038-
2039-commit d9b9e0baf2c05b6c452dccf451a66e2511dc1850
2040-Author: Graeme Gott <graeme@gottcode.org>
2041-Date: 2013-07-14
2042-
2043- Sort all matches in names above matches in executables.
2044-
2045-commit 449c2f0266a6bc6a182f4e19e46a748693b52195
2046-Author: Graeme Gott <graeme@gottcode.org>
2047-Date: 2013-07-14
2048-
2049- Make rows be fixed height.
2050-
2051-commit 1e82cccab4a2c2a179fa0c9a6eab09516da0f045
2052-Author: Graeme Gott <graeme@gottcode.org>
2053-Date: 2013-07-14
2054-
2055- Move search results out of launcher.
2056-
2057-commit 7eb290b6f8dace93d4554f201dcddee657703557
2058-Author: Graeme Gott <graeme@gottcode.org>
2059-Date: 2013-07-14
2060-
2061- Update Greek translation.
2062-
2063-commit d41852cd8ae8daa91b4d10ac0534db4aad8fd2a9
2064-Author: Graeme Gott <graeme@gottcode.org>
2065-Date: 2013-07-14
2066-
2067- Update Romanian translation.
2068-
2069-commit 974f0f9f131ac7513a32bf85fa5f5806d87848d8
2070-Author: Graeme Gott <graeme@gottcode.org>
2071-Date: 2013-07-13
2072-
2073- Work around interaction between scrolling and hover selection. Closes #7.
2074-
2075-commit fe0e6c45888e6aff8072a4e7e168f25e2236fcfc
2076-Author: Graeme Gott <graeme@gottcode.org>
2077-Date: 2013-07-13
2078-
2079- Add Dutch translation.
2080-
2081-commit fe6becbfcfb19434848ba7df0bb8841374d905bc
2082-Author: Graeme Gott <graeme@gottcode.org>
2083-Date: 2013-07-13
2084-
2085- Prevent duplicate entries in list page.
2086-
2087-commit 4ea274c64307be2869d70b25a0419412d9c960d7
2088-Author: Graeme Gott <graeme@gottcode.org>
2089-Date: 2013-07-13
2090-
2091- Update Hebrew, Italian, Slovak, and Vietnamese translations.
2092-
2093-commit c3910ef3b9616006b4248a2a3908f6ac8484e02c
2094-Author: Graeme Gott <graeme@gottcode.org>
2095-Date: 2013-07-13
2096-
2097- Add Bulgarian translation.
2098-
2099-commit afd590322b865b5bdb34dfad466b3cd20b405ae1
2100-Author: Graeme Gott <graeme@gottcode.org>
2101-Date: 2013-07-13
2102-
2103- Remove slot macros.
2104-
2105-commit 659d041557f938518ad5e6adff51aeb49313beaa
2106-Author: Graeme Gott <graeme@gottcode.org>
2107-Date: 2013-07-12
2108-
2109- Update strings.
2110-
2111-commit 9fad231ebcb3293f05828788c181251bda55a144
2112-Author: Graeme Gott <graeme@gottcode.org>
2113-Date: 2013-07-12
2114-
2115- Add icons to context menu.
2116-
2117-commit a11ae0aea66884025bd0310005802ea7ba61f505
2118-Author: Graeme Gott <graeme@gottcode.org>
2119-Date: 2013-07-12
2120-
2121- Show launcher name in context menu.
2122-
2123-commit 179355f5ba9720555ed3d16aac6f0968a6339b1b
2124-Author: Graeme Gott <graeme@gottcode.org>
2125-Date: 2013-07-12
2126-
2127- Add menu actions to sort favorites alphabetically.
2128-
2129-commit d4c0f187f01992ad39709fdce2f6eaf0418580ca
2130-Author: Graeme Gott <graeme@gottcode.org>
2131-Date: 2013-07-12
2132-
2133- Hide implementation of loading launcher details.
2134-
2135-commit cb445d3709feff11e67f57f1dbc6b63508ef8f8c
2136-Author: Graeme Gott <graeme@gottcode.org>
2137-Date: 2013-07-12
2138-
2139- Hide implementation of finding launchers.
2140-
2141-commit f5bf0dbc25ed259ccb991d2ce6add5b424b96f69
2142-Author: Graeme Gott <graeme@gottcode.org>
2143-Date: 2013-07-12
2144-
2145- Add menu action to clear recently used.
2146-
2147-commit bad61c2a585bde3a008ceb37e0e78bfefe1f85c7
2148-Author: Graeme Gott <graeme@gottcode.org>
2149-Date: 2013-07-12
2150-
2151- Allow subclasses to extend context menu.
2152-
2153-commit 62f7dff219128a95730e243a2f294c4247e59b5f
2154-Author: Graeme Gott <graeme@gottcode.org>
2155-Date: 2013-07-10
2156-
2157- Check for null launchers.
2158-
2159-commit ade6b8ee072e2072f74265b3967661ecf5591e38
2160-Author: Graeme Gott <graeme@gottcode.org>
2161-Date: 2013-07-12
2162-
2163- Simplify handling of keyboard focus.
2164-
2165-commit cb2264d0cedfff229786d702c4b610774717a26e
2166-Author: Graeme Gott <graeme@gottcode.org>
2167-Date: 2013-07-12
2168-
2169- Add scrolling to sidebar.
2170-
2171-commit 8408358a98966b5da221ff6f926f7ce42e2b31aa
2172-Author: Graeme Gott <graeme@gottcode.org>
2173-Date: 2013-07-11
2174-
2175- Add choosing icon sizes of launchers and categories. Closes #12.
2176-
2177-commit 0238a3e57e485a24b63969c4bf582b8fa1ff948a
2178-Author: Graeme Gott <graeme@gottcode.org>
2179-Date: 2013-07-11
2180-
2181- Make section button a class.
2182-
2183-commit a540b040645de03082439ef15b9a284898121d5f
2184-Author: Graeme Gott <graeme@gottcode.org>
2185-Date: 2013-07-11
2186-
2187- Add Slovak translation.
2188-
2189-commit 82ed7c3fdea41e2d665185c45d7042ac0032d9cc
2190-Author: Graeme Gott <graeme@gottcode.org>
2191-Date: 2013-07-11
2192-
2193- Treat popup command as toggle. Closes #17.
2194-
2195-commit 2c64ac2899852a2405a04db4cb095ca8b64f54ed
2196-Author: Graeme Gott <graeme@gottcode.org>
2197-Date: 2013-07-10
2198-
2199- Add Norwegian Bokmål translation.
2200-
2201-commit 94e7dfc125a3feb5c55962517a614ad4e4b19de0
2202-Author: Graeme Gott <graeme@gottcode.org>
2203-Date: 2013-07-10
2204-
2205- Make panel button icon optional. References #4.
2206-
2207-commit 0818c4a57cf24d840a9f40433487e6a2ea4e18a0
2208-Author: Graeme Gott <graeme@gottcode.org>
2209-Date: 2013-07-10
2210-
2211- Fix panel button size issues.
2212-
2213-commit c6bbf752734ed854fd31afbf45231c7c177d1186
2214-Author: Graeme Gott <graeme@gottcode.org>
2215-Date: 2013-07-09
2216-
2217- Add optional button title to panel button. Closes #4.
2218-
2219-commit d2c4daefe1edec87424cd61b4dce4fa7f2f8d179
2220-Author: Graeme Gott <graeme@gottcode.org>
2221-Date: 2013-07-08
2222-
2223- Update Russian translation.
2224-
2225-commit 9ccf61f42bf857412651027262517b38ad7281e3
2226-Author: Baurzhan Muftakhidinov <baurthefirst@gmail.com>
2227-Date: 2013-07-08
2228-
2229- Add Kazakh translation
2230-
2231-commit 7fe4f7c047277147b8bbb3d4ba72f4ee9b100057
2232-Author: Graeme Gott <graeme@gottcode.org>
2233-Date: 2013-07-05
2234-
2235- Also search executable names. Closes #13.
2236-
2237-commit 23df6dd6a1b93a145399dd18941d480a783907bd
2238-Author: Graeme Gott <graeme@gottcode.org>
2239-Date: 2013-07-06
2240-
2241- Optimize showing search results.
2242-
2243-commit 03ec77407cbd6f3ec1f554ace8825fb31d0dba6c
2244-Author: Graeme Gott <graeme@gottcode.org>
2245-Date: 2013-07-06
2246-
2247- Tweak search algorithm.
2248-
2249-commit 69e604f88f9433e3903021ba14364001e199d9d3
2250-Author: Graeme Gott <graeme@gottcode.org>
2251-Date: 2013-07-05
2252-
2253- Update news file.
2254-
2255-commit cffa8fec650776100551995e1f956b7dafa99bb6
2256-Author: Graeme Gott <graeme@gottcode.org>
2257-Date: 2013-07-05
2258-
2259- Add Malay and Russian translations.
2260-
2261-commit 13110181b8c5400cf474085819ee554932960e7c
2262-Author: Graeme Gott <graeme@gottcode.org>
2263-Date: 2013-07-05
2264-
2265- Fix changes to favorites not always saved. Closes #9.
2266-
2267-commit 0de7f7b9f2bd15bd14630e3ea94f1cabe4a7a1b2
2268-Author: Graeme Gott <graeme@gottcode.org>
2269-Date: 2013-07-05
2270-
2271- Fix crash when categories have empty icons or names.
2272-
2273-commit c2f37b116935231e84750aecb0eb7fa15d9d2e27
2274-Author: Graeme Gott <graeme@gottcode.org>
2275-Date: 2013-07-05
2276-
2277- Always show search results.
2278-
2279-commit a8eeb05a9317f3a708d20092f46ceee656c027a5
2280-Author: Graeme Gott <graeme@gottcode.org>
2281-Date: 2013-07-04
2282-
2283- Reuse code and strings from Xfce applications menu popup.
2284-
2285-commit 278c139dcc31a8f0646fec90d6213d54ccec4dd2
2286-Author: Graeme Gott <graeme@gottcode.org>
2287-Date: 2013-07-04
2288-
2289- Add popping up menu at mouse cursor.
2290-
2291-commit 195e6177c2d0e520f400a12cefc9353fcb7cd9ea
2292-Author: Graeme Gott <graeme@gottcode.org>
2293-Date: 2013-07-04
2294-
2295- Fix menu position in mulithead.
2296-
2297-commit c410ea351102187ed365b3c10e2a3e706a9f0095
2298-Author: Graeme Gott <graeme@gottcode.org>
2299-Date: 2013-07-04
2300-
2301- Fix RTL alignment of menu items in LTR locales.
2302-
2303-commit d83ab6eb5393c159743e808dc696ccdb94db1684
2304-Author: Graeme Gott <graeme@gottcode.org>
2305-Date: 2013-07-03
2306-
2307- Fix RTL alignment of menu items.
2308-
2309-commit dabb1fbc79a217518b032f9841c0682762a60471
2310-Author: Graeme Gott <graeme@gottcode.org>
2311-Date: 2013-07-03
2312-
2313- Tweak relevance of search results.
2314-
2315-commit 3a694902793b5e4ccabe1c9683967056fccb02b0
2316-Author: Graeme Gott <graeme@gottcode.org>
2317-Date: 2013-07-03
2318-
2319- Minor optimization of search algorithm.
2320-
2321-commit 865bb2628eb5c3a1ff612c79bd2de8207132d0d3
2322-Author: Graeme Gott <graeme@gottcode.org>
2323-Date: 2013-07-03
2324-
2325- Prevent accidental implicit typecasting.
2326-
2327-commit d585e1a7adb3602f1d8186b501ff7903405cd070
2328-Author: Graeme Gott <graeme@gottcode.org>
2329-Date: 2013-07-03
2330-
2331- Make fetching search results constant again.
2332-
2333- Remove accidental commit of test code.
2334-
2335-commit 9d61b9c9fb2256f2a67fdaa00e15d582bb8ab7f3
2336-Author: Graeme Gott <graeme@gottcode.org>
2337-Date: 2013-07-02
2338-
2339- Revert make fetching search results constant.
2340-
2341-commit 8e469ad405b584842e1b4d518847d134ea494fc0
2342-Author: Graeme Gott <graeme@gottcode.org>
2343-Date: 2013-07-02
2344-
2345- More improvements to search algorithm.
2346-
2347-commit e95b0304c0e62a30165657b339c6ccc520b73ec2
2348-Author: Graeme Gott <graeme@gottcode.org>
2349-Date: 2013-07-01
2350-
2351- Make fetching search results constant.
2352-
2353-commit f8f3080a2d09c519542078d9c4756a58cf17571c
2354-Author: Graeme Gott <graeme@gottcode.org>
2355-Date: 2013-07-01
2356-
2357- Add sorting search results by relevance.
2358-
2359-commit 65e76ba7d85db44dc9be5f6547a44e0f7dbcb5c7
2360-Author: Graeme Gott <graeme@gottcode.org>
2361-Date: 2013-07-01
2362-
2363- Select first search result.
2364-
2365-commit f9d6ce1e847187a8d49c16584519cf832f30e121
2366-Author: Graeme Gott <graeme@gottcode.org>
2367-Date: 2013-07-01
2368-
2369- Start search immediately. Closes #8.
2370-
2371-commit 54bfe16f9e4658801fbcaaf58d1fa1a440f53359
2372-Author: Graeme Gott <graeme@gottcode.org>
2373-Date: 2013-07-02
2374-
2375- Add French, Polish, and Swedish translations.
2376-
2377-commit 29470a1a307fbec4215b2725a9930e7009d72b87
2378-Author: Graeme Gott <graeme@gottcode.org>
2379-Date: 2013-07-01
2380-
2381- Improve search algorithm.
2382-
2383-commit 14411b14b4a26b092ecbfe7bd876a37a9e20bf7b
2384-Author: Graeme Gott <graeme@gottcode.org>
2385-Date: 2013-07-01
2386-
2387- Move search logic into launcher.
2388-
2389-commit e4b245315cbc23059bf7d6664d4ea25dbc01b965
2390-Author: Graeme Gott <graeme@gottcode.org>
2391-Date: 2013-07-01
2392-
2393- Update news file.
2394-
2395-commit 2f5c73b6f37f01435eac4133a926e85796cfa52f
2396-Author: Graeme Gott <graeme@gottcode.org>
2397-Date: 2013-06-30
2398-
2399- Add Arabic and Catalan translations.
2400-
2401-commit 8ca71d69d761e9364eeb8b9c26daa1bf4212d5cf
2402-Author: Graeme Gott <graeme@gottcode.org>
2403-Date: 2013-06-30
2404-
2405- Add option to switch categories by hovering.
2406-
2407-commit 65fb61631bfac7f6c0e5b5c825562c3b2b86dc73
2408-Author: Graeme Gott <graeme@gottcode.org>
2409-Date: 2013-06-30
2410-
2411- Fix position being reset when scrolling with directional keys. Closes #7.
2412-
2413-commit 8cb979dda3c585d2a74d574b885078cbb81682dd
2414-Author: Graeme Gott <graeme@gottcode.org>
2415-Date: 2013-06-30
2416-
2417- Draw resize triangle in lighter color. Closes #5.
2418-
2419-commit 159be8bfa1191437f7057718e3e096c1248fa57f
2420-Author: Graeme Gott <graeme@gottcode.org>
2421-Date: 2013-06-30
2422-
2423- Add Greek and Vietnamese translations.
2424-
2425-commit ae45b01bcd45c40fbe7b60bbfa3979c637f5fad1
2426-Author: Graeme Gott <graeme@gottcode.org>
2427-Date: 2013-06-29
2428-
2429- Fix issues with detecting when to grab pointer.
2430-
2431-commit be32726cc8cef3930f46c2d04d2aa77cb06a8eb4
2432-Author: Graeme Gott <graeme@gottcode.org>
2433-Date: 2013-06-28
2434-
2435- Update Turkish translation.
2436-
2437-commit 0fd3922c1dbade4a3c7b1de12def832a30878027
2438-Author: Graeme Gott <graeme@gottcode.org>
2439-Date: 2013-06-28
2440-
2441- Fix not always saving configuration changes.
2442-
2443-commit 4e7cf4cad5b87cb4df08f06f15b72568478513d2
2444-Author: Graeme Gott <graeme@gottcode.org>
2445-Date: 2013-06-27
2446-
2447- Add news file.
2448-
2449-commit 18d3f3510dd7090345f802ccff8641360cef80e8
2450-Author: Graeme Gott <graeme@gottcode.org>
2451-Date: 2013-06-27
2452-
2453- Fix excessive menu reloading when apps are installed.
2454-
2455-commit 173f099ef725e971d2f7bafd1d6116090e836f92
2456-Author: Graeme Gott <graeme@gottcode.org>
2457-Date: 2013-06-27
2458-
2459- Fix plugin not respecting panel row height.
2460-
2461-commit 2f657b312adc91e9256c3f75a4f73d02c5319d84
2462-Author: Graeme Gott <graeme@gottcode.org>
2463-Date: 2013-06-26
2464-
2465- Fix not loading localizations.
2466-
2467-commit d784da53269efb3873631cf7fd698541c84ce9b0
2468-Author: Graeme Gott <graeme@gottcode.org>
2469-Date: 2013-06-26
2470-
2471- Fix regression in default favorites.
2472-
2473-commit 5e836f93efd5fae5cb32611af329b4a2af96db1c
2474-Author: Graeme Gott <graeme@gottcode.org>
2475-Date: 2013-06-26
2476-
2477- Reduce C++ version
2478-
2479- Downgrade to C++98.
2480-
2481-commit f8a9936362e298e3cb5d0bf5fedd41425c425437
2482-Author: Graeme Gott <graeme@gottcode.org>
2483-Date: 2013-06-26
2484-
2485- Remove automatically detected types.
2486-
2487- Downgrade to C++98.
2488-
2489-commit 52765937d811112a7eeaa018fd389223e9dababe
2490-Author: Graeme Gott <graeme@gottcode.org>
2491-Date: 2013-06-26
2492-
2493- Remove extended initializer lists.
2494-
2495- Downgrade to C++98.
2496-
2497-commit e5ad2f872275b2ab9acac72c18751a7af5eb1a54
2498-Author: Graeme Gott <graeme@gottcode.org>
2499-Date: 2013-06-26
2500-
2501- Remove constant begin/end container calls.
2502-
2503- Downgrade to C++98.
2504-
2505-commit 4b8613814df389b7c0d0bbf517a6b31dd0c67a5e
2506-Author: Graeme Gott <graeme@gottcode.org>
2507-Date: 2013-06-26
2508-
2509- Remove deleted function declarations.
2510-
2511- Downgrade to C++98.
2512-
2513-commit dd0727759bfaa08a435bb7bd5d0fa5bb301cdc9a
2514-Author: Graeme Gott <graeme@gottcode.org>
2515-Date: 2013-06-26
2516-
2517- Remove rvalue references.
2518-
2519- Downgrade to C++98.
2520-
2521-commit 7e96351266de715f971d85c45cc4bb82a2d83012
2522-Author: Graeme Gott <graeme@gottcode.org>
2523-Date: 2013-06-26
2524-
2525- Replace unordered_map with map.
2526-
2527- Downgrade to C++98.
2528-
2529-commit 36e12dda4bffce7486500cccae6c2fad9760421b
2530-Author: Graeme Gott <graeme@gottcode.org>
2531-Date: 2013-06-26
2532-
2533- Replace null constant pointer.
2534-
2535- Downgrade to C++98.
2536-
2537-commit 211b93c1f13562a19b90dcd7221b55f1ab20dd27
2538-Author: Graeme Gott <graeme@gottcode.org>
2539-Date: 2013-06-26
2540-
2541- Fix handling of non-standard icon extensions.
2542-
2543-commit 4c6ad31e7982e6c14e8fae815acdd32c56db355c
2544-Author: Graeme Gott <graeme@gottcode.org>
2545-Date: 2013-06-25
2546-
2547- Add Indonesian and Italian translations.
2548-
2549-commit 278326a51bf6e8e5f621cd69bb1aa1a24b2e27c9
2550-Author: Graeme Gott <graeme@gottcode.org>
2551-Date: 2013-06-25
2552-
2553- Add German and Spanish translations.
2554-
2555-commit 547a81b7e47215f4bd842e3a8bead0358ef05d43
2556-Author: Graeme Gott <graeme@gottcode.org>
2557-Date: 2013-06-24
2558-
2559- Fix menu not positioned correctly when panel button is moved.
2560-
2561-commit a30f75357a5c098f5464f8e77011b9442b22da32
2562-Author: Graeme Gott <graeme@gottcode.org>
2563-Date: 2013-06-24
2564-
2565- Fix cmake errors in Ubuntu 12.04.
2566-
2567-commit 798b42a237ea6d49bfabcc4bcc106cf55bedc203
2568-Author: Graeme Gott <graeme@gottcode.org>
2569-Date: 2013-06-24
2570-
2571- Remove use of C++11 emplace.
2572-
2573- Necessary for GCC 4.6 to compile it.
2574-
2575-commit 7ecf7494ad37427f654982c5322ca286dbd5ba15
2576-Author: Graeme Gott <graeme@gottcode.org>
2577-Date: 2013-06-23
2578-
2579- Replace slot templates with macros.
2580-
2581-commit b9a14aef4e3bd42f9dd58eada1037e427a2f1ec0
2582-Author: Graeme Gott <graeme@gottcode.org>
2583-Date: 2013-06-24
2584-
2585- Fix cmake policy warning.
2586-
2587-commit ee762ee3831e9579527585e5c68276fba66fdfec
2588-Author: Graeme Gott <graeme@gottcode.org>
2589-Date: 2013-06-24
2590-
2591- Update translation headers.
2592-
2593-commit bbd40a85e8471312a3a5d9e5c1f50faa56760a80
2594-Author: Graeme Gott <graeme@gottcode.org>
2595-Date: 2013-06-24
2596-
2597- Add Romanian translation.
2598-
2599-commit 731d7f37e97f74583641d711220625e937830287
2600-Author: Graeme Gott <graeme@gottcode.org>
2601-Date: 2013-06-24
2602-
2603- Update install instructions.
2604-
2605-commit 3ce0d7017959922221ee71a4afba87046fb35d6d
2606-Author: Graeme Gott <graeme@gottcode.org>
2607-Date: 2013-06-23
2608-
2609- Strip release builds.
2610-
2611-commit aa2ed7673898e89255c91bc9ccc30b6c64abcdf7
2612-Author: Graeme Gott <graeme@gottcode.org>
2613-Date: 2013-06-23
2614-
2615- Relax C++ version slightly.
2616-
2617-commit 5d33c1a639d8b7db62a02fd0ad2ac1649a951fe6
2618-Author: Graeme Gott <graeme@gottcode.org>
2619-Date: 2013-06-23
2620-
2621- Add uninstall target.
2622-
2623-commit 9a161509364bc8da9e0088fcaa127bb585df994c
2624-Author: Graeme Gott <graeme@gottcode.org>
2625-Date: 2013-06-22
2626-
2627- Fix incorrect menu position for auto-hidden panels.
2628-
2629-commit 0ba56a1980b87a20990017663ffdba847865c0b6
2630-Author: Graeme Gott <graeme@gottcode.org>
2631-Date: 2013-06-22
2632-
2633- Switch to using GNU install variables.
2634-
2635-commit e71dc4617ed14c394087796999c133062501f957
2636-Author: Graeme Gott <graeme@gottcode.org>
2637-Date: 2013-06-22
2638-
2639- Add external command to popup menu. Closes #1.
2640-
2641-commit 2460f1b4d8477128254ae0dfe3ad725a887843e2
2642-Author: Graeme Gott <graeme@gottcode.org>
2643-Date: 2013-06-22
2644-
2645- Update Hebrew translation.
2646-
2647-commit aa826f528fed1a9d554eb867e0551d36ccb937dd
2648-Author: Graeme Gott <graeme@gottcode.org>
2649-Date: 2013-06-21
2650-
2651- Add README file.
2652-
2653-commit 3786cd50acac43bfd291b432065821674b92d923
2654-Author: Graeme Gott <graeme@gottcode.org>
2655-Date: 2013-06-21
2656-
2657- Add Turkish translation.
2658-
2659-commit ad816f509c84115b1899661e6fe04a87ba349a4a
2660-Author: Graeme Gott <graeme@gottcode.org>
2661-Date: 2013-06-21
2662-
2663- Fix not showing username when real name is unknown.
2664-
2665-commit 33a80581c501405887fd869397a1b8a0ba425dc2
2666-Author: Graeme Gott <graeme@gottcode.org>
2667-Date: 2013-06-21
2668-
2669- Fix arrow keys not changing selection in search results.
2670-
2671-commit 9400f0aa25b088d1acf5ab386ff8f84ace4b4ee5
2672-Author: Graeme Gott <graeme@gottcode.org>
2673-Date: 2013-06-21
2674-
2675- Add installation directions. Closes #3.
2676-
2677-commit 4ad179ec9f6aac8bed12c983d52e8a45f76d6d74
2678-Author: Graeme Gott <graeme@gottcode.org>
2679-Date: 2013-06-21
2680-
2681- Add missing name to Hebrew translation.
2682-
2683-commit 990050f66c9abf32d80c209c4f54c62a8fb0b4dc
2684-Author: Graeme Gott <graeme@gottcode.org>
2685-Date: 2013-06-21
2686-
2687- Add Hebrew translation.
2688-
2689-commit 3aa6792cd4855e84e5d835db70a50a1c62cca6a7
2690-Author: Graeme Gott <graeme@gottcode.org>
2691-Date: 2013-06-20
2692-
2693- Initial import.
2694
2695=== modified file 'NEWS'
2696--- NEWS 2015-02-15 06:11:51 +0000
2697+++ NEWS 2015-02-18 19:37:38 +0000
2698@@ -1,3 +1,28 @@
2699+1.5.0
2700+=====
2701+- Fix search activation to allow input methods.
2702+- Fix broken menu when closed by window manager.
2703+- Fix unnecessary assignment to NULL.
2704+- Fix possible null pointer dereference.
2705+- Add option to set background opacity.
2706+- Add command to edit profile.
2707+- Add profile picture.
2708+- Add customizable limit for recently used.
2709+- Add support for non-square panel button icon.
2710+- Add items of Xfce settings manager to allow searching.
2711+- Expand subcategories when activated.
2712+- Load default settings from XDG location.
2713+- Make launchers executable when they are added to desktop.
2714+- Rearrange options in configuration dialog.
2715+- Refactor list page code.
2716+- Rename option for including favorites in recently used.
2717+- Rename option to use single panel row.
2718+- Rename button to match default menu applet.
2719+- Use a single instance of the garcon menu.
2720+- Translation updates: Bulgarian, Catalan, Dutch, French, German, Hebrew,
2721+ Italian, Japanese, Lithuanian, Polish, Portuguese, Slovak, Slovenian,
2722+ Spanish, Swedish, Turkish, Chinese (Taiwan).
2723+
2724 1.4.3
2725 =====
2726 - Fix hang at launch by removing load thread.
2727
2728=== modified file 'debian/changelog'
2729--- debian/changelog 2015-02-15 06:11:51 +0000
2730+++ debian/changelog 2015-02-18 19:37:38 +0000
2731@@ -1,3 +1,9 @@
2732+xfce4-whiskermenu-plugin (1.5.0-0ubuntu1) vivid; urgency=medium
2733+
2734+ * New upstream release.
2735+
2736+ -- Jackson Doak <noskcaj@ubuntu.com> Thu, 19 Feb 2015 06:30:06 +1100
2737+
2738 xfce4-whiskermenu-plugin (1.4.3-0ubuntu1) vivid; urgency=medium
2739
2740 * New upstream release.
2741
2742=== modified file 'debian/patches/01_replace-gdmflexiserver.patch'
2743--- debian/patches/01_replace-gdmflexiserver.patch 2014-10-14 06:39:57 +0000
2744+++ debian/patches/01_replace-gdmflexiserver.patch 2015-02-18 19:37:38 +0000
2745@@ -5,9 +5,13 @@
2746 Last-Update: 2014-09-07
2747 ---
2748 This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
2749+---
2750+ panel-plugin/settings.cpp | 2 +-
2751+ 1 file changed, 1 insertion(+), 1 deletion(-)
2752+
2753 --- a/panel-plugin/settings.cpp
2754 +++ b/panel-plugin/settings.cpp
2755-@@ -112,7 +112,7 @@
2756+@@ -116,7 +116,7 @@ Settings::Settings() :
2757
2758 command[CommandSettings] = new Command("preferences-desktop", _("All _Settings"), "xfce4-settings-manager", _("Failed to open settings manager."));
2759 command[CommandLockScreen] = new Command("system-lock-screen", _("_Lock Screen"), "xflock4", _("Failed to lock screen."));
2760@@ -15,4 +19,4 @@
2761 + command[CommandSwitchUser] = new Command("system-users", _("Switch _Users"), "dm-tool switch-to-greeter", _("Failed to switch users."));
2762 command[CommandLogOut] = new Command("system-log-out", _("Log _Out"), "xfce4-session-logout", _("Failed to log out."));
2763 command[CommandMenuEditor] = new Command("xfce4-menueditor", _("_Edit Applications"), "menulibre", _("Failed to launch menu editor."));
2764-
2765+ command[CommandProfile] = new Command("avatar-default", _("Edit _Profile"), "mugshot", _("Failed to edit profile."));
2766
2767=== modified file 'panel-plugin/CMakeLists.txt'
2768--- panel-plugin/CMakeLists.txt 2014-10-14 06:39:57 +0000
2769+++ panel-plugin/CMakeLists.txt 2015-02-18 19:37:38 +0000
2770@@ -42,6 +42,7 @@
2771 -DPACKAGE_VERSION="${whiskermenu_version}"
2772 -DBINDIR="${CMAKE_INSTALL_FULL_BINDIR}"
2773 -DDATADIR="${CMAKE_INSTALL_FULL_DATADIR}"
2774+ -DSETTINGS_MENUFILE="${CMAKE_INSTALL_FULL_SYSCONFDIR}/xdg/menus/xfce-settings-manager.menu"
2775 -DG_LOG_DOMAIN="whiskermenu"
2776 -DGSEAL_ENABLE
2777 -DGTK_MULTIHEAD_SAFE
2778@@ -79,9 +80,9 @@
2779 icon-size.cpp
2780 launcher.cpp
2781 launcher-view.cpp
2782- list-page.cpp
2783 page.cpp
2784 plugin.cpp
2785+ profile-picture.cpp
2786 query.cpp
2787 recent-page.cpp
2788 register-plugin.c
2789
2790=== modified file 'panel-plugin/applications-page.cpp'
2791--- panel-plugin/applications-page.cpp 2015-02-15 06:11:51 +0000
2792+++ panel-plugin/applications-page.cpp 2015-02-18 19:37:38 +0000
2793@@ -27,6 +27,11 @@
2794
2795 #include <algorithm>
2796
2797+extern "C"
2798+{
2799+#include <libxfce4util/libxfce4util.h>
2800+}
2801+
2802 using namespace WhiskerMenu;
2803
2804 //-----------------------------------------------------------------------------
2805@@ -43,6 +48,7 @@
2806 ApplicationsPage::ApplicationsPage(Window* window) :
2807 Page(window),
2808 m_garcon_menu(NULL),
2809+ m_garcon_settings_menu(NULL),
2810 m_load_status(STATUS_INVALID)
2811 {
2812 // Set desktop environment for applications
2813@@ -63,6 +69,58 @@
2814 ApplicationsPage::~ApplicationsPage()
2815 {
2816 clear_applications();
2817+
2818+ // Free menu
2819+ if (G_LIKELY(m_garcon_menu))
2820+ {
2821+ g_object_unref(m_garcon_menu);
2822+ }
2823+
2824+ // Free settings menu
2825+ if (G_LIKELY(m_garcon_settings_menu))
2826+ {
2827+ g_object_unref(m_garcon_settings_menu);
2828+ }
2829+}
2830+
2831+//-----------------------------------------------------------------------------
2832+
2833+GtkTreeModel* ApplicationsPage::create_launcher_model(std::vector<std::string>& desktop_ids) const
2834+{
2835+ // Create new model for treeview
2836+ GtkListStore* store = gtk_list_store_new(
2837+ LauncherView::N_COLUMNS,
2838+ G_TYPE_STRING,
2839+ G_TYPE_STRING,
2840+ G_TYPE_POINTER);
2841+
2842+ // Fetch menu items or remove them from list if missing
2843+ for (std::vector<std::string>::iterator i = desktop_ids.begin(); i != desktop_ids.end(); ++i)
2844+ {
2845+ if (i->empty())
2846+ {
2847+ continue;
2848+ }
2849+
2850+ Launcher* launcher = get_application(*i);
2851+ if (launcher)
2852+ {
2853+ gtk_list_store_insert_with_values(
2854+ store, NULL, G_MAXINT,
2855+ LauncherView::COLUMN_ICON, launcher->get_icon(),
2856+ LauncherView::COLUMN_TEXT, launcher->get_text(),
2857+ LauncherView::COLUMN_LAUNCHER, launcher,
2858+ -1);
2859+ }
2860+ else
2861+ {
2862+ i = desktop_ids.erase(i);
2863+ --i;
2864+ wm_settings->set_modified();
2865+ }
2866+ }
2867+
2868+ return GTK_TREE_MODEL(store);
2869 }
2870
2871 //-----------------------------------------------------------------------------
2872@@ -159,46 +217,60 @@
2873 delete i->second;
2874 }
2875 m_items.clear();
2876-
2877- // Unreference menu
2878- if (m_garcon_menu)
2879- {
2880- g_object_unref(m_garcon_menu);
2881- m_garcon_menu = NULL;
2882- }
2883 }
2884
2885 //-----------------------------------------------------------------------------
2886
2887 void ApplicationsPage::load_contents()
2888 {
2889- // Load garcon menu
2890- if (wm_settings->custom_menu_file.empty())
2891- {
2892- m_garcon_menu = garcon_menu_new_applications();
2893- }
2894- else
2895- {
2896- m_garcon_menu = garcon_menu_new_for_path(wm_settings->custom_menu_file.c_str());
2897- }
2898-
2899- if (m_garcon_menu && !garcon_menu_load(m_garcon_menu, NULL, NULL))
2900- {
2901- g_object_unref(m_garcon_menu);
2902- m_garcon_menu = NULL;
2903- }
2904-
2905+ // Create menu
2906 if (!m_garcon_menu)
2907 {
2908+ if (wm_settings->custom_menu_file.empty())
2909+ {
2910+ m_garcon_menu = garcon_menu_new_applications();
2911+ }
2912+ else
2913+ {
2914+ m_garcon_menu = garcon_menu_new_for_path(wm_settings->custom_menu_file.c_str());
2915+ }
2916+
2917+ if (!m_garcon_menu)
2918+ {
2919+ m_load_status = STATUS_INVALID;
2920+ return;
2921+ }
2922+
2923+ g_signal_connect_slot<GarconMenu*>(m_garcon_menu, "reload-required", &ApplicationsPage::invalidate_applications, this);
2924+ }
2925+
2926+ // Create settings menu
2927+ if (!m_garcon_settings_menu)
2928+ {
2929+ gchar* path = xfce_resource_lookup(XFCE_RESOURCE_CONFIG, "menus/xfce-settings-manager.menu");
2930+ m_garcon_settings_menu = garcon_menu_new_for_path(path != NULL ? path : SETTINGS_MENUFILE);
2931+ g_free(path);
2932+
2933+ if (m_garcon_settings_menu)
2934+ {
2935+ g_signal_connect_slot<GarconMenu*>(m_garcon_settings_menu, "reload-required", &ApplicationsPage::invalidate_applications, this);
2936+ }
2937+ }
2938+
2939+ // Load menu
2940+ if (!garcon_menu_load(m_garcon_menu, NULL, NULL))
2941+ {
2942 m_load_status = STATUS_INVALID;
2943-
2944 return;
2945 }
2946-
2947- // Populate map of menu data
2948- g_signal_connect_slot<GarconMenu*>(m_garcon_menu, "reload-required", &ApplicationsPage::invalidate_applications, this);
2949 load_menu(m_garcon_menu, NULL);
2950
2951+ // Load settings menu
2952+ if (m_garcon_settings_menu && garcon_menu_load(m_garcon_settings_menu, NULL, NULL))
2953+ {
2954+ load_menu(m_garcon_settings_menu, NULL);
2955+ }
2956+
2957 // Sort items and categories
2958 if (!wm_settings->load_hierarchy)
2959 {
2960
2961=== modified file 'panel-plugin/applications-page.h'
2962--- panel-plugin/applications-page.h 2015-02-15 06:11:51 +0000
2963+++ panel-plugin/applications-page.h 2015-02-18 19:37:38 +0000
2964@@ -39,6 +39,7 @@
2965 explicit ApplicationsPage(Window* window);
2966 ~ApplicationsPage();
2967
2968+ GtkTreeModel* create_launcher_model(std::vector<std::string>& desktop_ids) const;
2969 Launcher* get_application(const std::string& desktop_id) const;
2970
2971 void invalidate_applications();
2972@@ -55,6 +56,7 @@
2973
2974 private:
2975 GarconMenu* m_garcon_menu;
2976+ GarconMenu* m_garcon_settings_menu;
2977 std::vector<Category*> m_categories;
2978 std::map<std::string, Launcher*> m_items;
2979 int m_load_status;
2980
2981=== modified file 'panel-plugin/command.cpp'
2982--- panel-plugin/command.cpp 2013-12-29 21:15:12 +0000
2983+++ panel-plugin/command.cpp 2015-02-18 19:37:38 +0000
2984@@ -92,7 +92,7 @@
2985 m_button = gtk_button_new();
2986 gtk_button_set_relief(GTK_BUTTON(m_button), GTK_RELIEF_NONE);
2987 gtk_widget_set_tooltip_text(m_button, tooltip.c_str());
2988- g_signal_connect_slot<GtkButton*>(m_button, "clicked", &Command::activated, this);
2989+ g_signal_connect_slot<GtkButton*>(m_button, "clicked", &Command::activate, this);
2990
2991 GtkWidget* image = gtk_image_new_from_icon_name(m_icon, GTK_ICON_SIZE_LARGE_TOOLBAR);
2992 gtk_container_add(GTK_CONTAINER(m_button), GTK_WIDGET(image));
2993@@ -117,7 +117,7 @@
2994 m_menuitem = gtk_image_menu_item_new_with_mnemonic(m_text);
2995 GtkWidget* image = gtk_image_new_from_icon_name(m_icon, GTK_ICON_SIZE_MENU);
2996 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m_menuitem), image);
2997- g_signal_connect_slot<GtkMenuItem*>(m_menuitem, "activate", &Command::activated, this);
2998+ g_signal_connect_slot<GtkMenuItem*>(m_menuitem, "activate", &Command::activate, this);
2999
3000 gtk_widget_set_visible(m_menuitem, m_shown);
3001 gtk_widget_set_sensitive(m_menuitem, m_status == WHISKERMENU_COMMAND_VALID);
3002@@ -198,7 +198,7 @@
3003
3004 //-----------------------------------------------------------------------------
3005
3006-void Command::activated()
3007+void Command::activate()
3008 {
3009 GError* error = NULL;
3010 if (g_spawn_command_line_async(m_command, &error) == false)
3011
3012=== modified file 'panel-plugin/command.h'
3013--- panel-plugin/command.h 2013-12-29 21:15:12 +0000
3014+++ panel-plugin/command.h 2015-02-18 19:37:38 +0000
3015@@ -53,8 +53,7 @@
3016
3017 void check();
3018
3019-private:
3020- void activated();
3021+ void activate();
3022
3023 private:
3024 GtkWidget* m_button;
3025
3026=== modified file 'panel-plugin/configuration-dialog.cpp'
3027--- panel-plugin/configuration-dialog.cpp 2015-01-08 07:09:23 +0000
3028+++ panel-plugin/configuration-dialog.cpp 2015-02-18 19:37:38 +0000
3029@@ -1,5 +1,5 @@
3030 /*
3031- * Copyright (C) 2013 Graeme Gott <graeme@gottcode.org>
3032+ * Copyright (C) 2013, 2015 Graeme Gott <graeme@gottcode.org>
3033 *
3034 * This library is free software; you can redistribute it and/or modify
3035 * it under the terms of the GNU General Public License as published by
3036@@ -53,7 +53,6 @@
3037 static void whiskermenu_config_dialog_delete(ConfigurationDialog* dialog)
3038 {
3039 delete dialog;
3040- dialog = NULL;
3041 }
3042
3043 //-----------------------------------------------------------------------------
3044@@ -78,6 +77,7 @@
3045 GtkNotebook* notebook = GTK_NOTEBOOK(gtk_notebook_new());
3046 gtk_notebook_append_page(notebook, init_appearance_tab(), gtk_label_new_with_mnemonic(_("_Appearance")));
3047 gtk_notebook_append_page(notebook, init_behavior_tab(), gtk_label_new_with_mnemonic(_("_Behavior")));
3048+ gtk_notebook_append_page(notebook, init_commands_tab(), gtk_label_new_with_mnemonic(_("_Commands")));
3049 gtk_notebook_append_page(notebook, init_search_actions_tab(), gtk_label_new_with_mnemonic(_("Search Actio_ns")));
3050
3051 // Add tabs to dialog
3052@@ -241,9 +241,17 @@
3053
3054 //-----------------------------------------------------------------------------
3055
3056+void ConfigurationDialog::recent_items_max_changed(GtkSpinButton* button)
3057+{
3058+ wm_settings->recent_items_max = gtk_spin_button_get_value_as_int(button);
3059+ wm_settings->set_modified();
3060+}
3061+
3062+//-----------------------------------------------------------------------------
3063+
3064 void ConfigurationDialog::toggle_remember_favorites(GtkToggleButton* button)
3065 {
3066- wm_settings->favorites_in_recent = gtk_toggle_button_get_active(button);
3067+ wm_settings->favorites_in_recent = !gtk_toggle_button_get_active(button);
3068 wm_settings->set_modified();
3069 }
3070
3071@@ -257,6 +265,14 @@
3072
3073 //-----------------------------------------------------------------------------
3074
3075+void ConfigurationDialog::background_opacity_changed(GtkRange* range)
3076+{
3077+ wm_settings->menu_opacity = gtk_range_get_value(range);
3078+ wm_settings->set_modified();
3079+}
3080+
3081+//-----------------------------------------------------------------------------
3082+
3083 SearchAction* ConfigurationDialog::get_selected_action(GtkTreeIter* iter) const
3084 {
3085 GtkTreeIter selected_iter;
3086@@ -456,127 +472,102 @@
3087
3088 GtkWidget* ConfigurationDialog::init_appearance_tab()
3089 {
3090- // Create page
3091+ // Create appearance page
3092 GtkWidget* page = gtk_alignment_new(0, 0, 1, 0);
3093+ gtk_container_set_border_width(GTK_CONTAINER(page), 8);
3094 GtkBox* contents_vbox = GTK_BOX(gtk_vbox_new(false, 0));
3095 gtk_container_add(GTK_CONTAINER(page), GTK_WIDGET(contents_vbox));
3096
3097+
3098 // Create panel button section
3099- GtkSizeGroup* label_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
3100- GtkBox* panel_vbox = GTK_BOX(gtk_vbox_new(false, 6));
3101- GtkWidget* panel_frame = xfce_gtk_frame_box_new_with_content(_("Panel Button"), GTK_WIDGET(panel_vbox));
3102- gtk_box_pack_start(contents_vbox, panel_frame, false, false, 0);
3103- gtk_container_set_border_width(GTK_CONTAINER(panel_frame), 6);
3104+ GtkTable* panel_table = GTK_TABLE(gtk_table_new(4, 2, false));
3105+ gtk_table_set_col_spacings(panel_table, 12);
3106+ gtk_table_set_row_spacings(panel_table, 6);
3107+
3108+ GtkWidget* panel_frame = xfce_gtk_frame_box_new_with_content(_("Panel Button"), GTK_WIDGET(panel_table));
3109+ gtk_box_pack_start(contents_vbox, panel_frame, false, false, 6);
3110+ gtk_container_set_border_width(GTK_CONTAINER(panel_frame), 0);
3111
3112 // Add button style selector
3113- GtkBox* hbox = GTK_BOX(gtk_hbox_new(false, 12));
3114- gtk_box_pack_start(panel_vbox, GTK_WIDGET(hbox), false, false, 0);
3115-
3116 GtkWidget* label = gtk_label_new_with_mnemonic(_("Di_splay:"));
3117 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3118- gtk_box_pack_start(hbox, label, false, false, 0);
3119- gtk_size_group_add_widget(label_size_group, label);
3120+ gtk_table_attach(panel_table, label, 0, 1, 0, 1, GTK_FILL, GtkAttachOptions(GTK_EXPAND | GTK_FILL), 0, 0);
3121
3122 m_button_style = gtk_combo_box_text_new();
3123 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(m_button_style), _("Icon"));
3124 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(m_button_style), _("Title"));
3125 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(m_button_style), _("Icon and title"));
3126 gtk_combo_box_set_active(GTK_COMBO_BOX(m_button_style), static_cast<int>(m_plugin->get_button_style()) - 1);
3127- gtk_box_pack_start(hbox, m_button_style, false, false, 0);
3128+ gtk_table_attach_defaults(panel_table, m_button_style, 1, 2, 0, 1);
3129 gtk_label_set_mnemonic_widget(GTK_LABEL(label), m_button_style);
3130 g_signal_connect_slot(m_button_style, "changed", &ConfigurationDialog::style_changed, this);
3131
3132 // Add title selector
3133- hbox = GTK_BOX(gtk_hbox_new(false, 12));
3134- gtk_box_pack_start(panel_vbox, GTK_WIDGET(hbox), false, false, 0);
3135-
3136 label = gtk_label_new_with_mnemonic(_("_Title:"));
3137 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3138- gtk_box_pack_start(hbox, label, false, false, 0);
3139- gtk_size_group_add_widget(label_size_group, label);
3140+ gtk_table_attach(panel_table, label, 0, 1, 1, 2, GTK_FILL, GtkAttachOptions(GTK_EXPAND | GTK_FILL), 0, 0);
3141
3142 m_title = gtk_entry_new();
3143 gtk_entry_set_text(GTK_ENTRY(m_title), m_plugin->get_button_title().c_str());
3144- gtk_box_pack_start(hbox, m_title, true, true, 0);
3145+ gtk_table_attach_defaults(panel_table, m_title, 1, 2, 1, 2);
3146 gtk_label_set_mnemonic_widget(GTK_LABEL(label), m_title);
3147 g_signal_connect_slot(m_title, "changed", &ConfigurationDialog::title_changed, this);
3148
3149 // Add icon selector
3150- hbox = GTK_BOX(gtk_hbox_new(false, 12));
3151- gtk_box_pack_start(panel_vbox, GTK_WIDGET(hbox), false, false, 0);
3152-
3153 label = gtk_label_new_with_mnemonic(_("_Icon:"));
3154 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3155- gtk_box_pack_start(hbox, label, false, false, 0);
3156- gtk_size_group_add_widget(label_size_group, label);
3157+ gtk_table_attach(panel_table, label, 0, 1, 2, 3, GTK_FILL, GtkAttachOptions(GTK_EXPAND | GTK_FILL), 0, 0);
3158
3159 m_icon_button = gtk_button_new();
3160- gtk_box_pack_start(hbox, m_icon_button, false, false, 0);
3161 gtk_label_set_mnemonic_widget(GTK_LABEL(label), m_icon_button);
3162 g_signal_connect_slot<GtkButton*>(m_icon_button, "clicked", &ConfigurationDialog::choose_icon, this);
3163+ GtkWidget* icon_alignment = gtk_alignment_new(0, 0, 0, 1);
3164+ gtk_container_add(GTK_CONTAINER(icon_alignment), m_icon_button);
3165+ gtk_table_attach_defaults(panel_table, icon_alignment, 1, 2, 2, 3);
3166
3167 m_icon = xfce_panel_image_new_from_source(m_plugin->get_button_icon_name().c_str());
3168 xfce_panel_image_set_size(XFCE_PANEL_IMAGE(m_icon), 48);
3169 gtk_container_add(GTK_CONTAINER(m_icon_button), m_icon);
3170
3171- m_button_single_row = gtk_check_button_new_with_mnemonic(_("Lay out icon in a single _panel row"));
3172- gtk_box_pack_start(panel_vbox, m_button_single_row, true, true, 0);
3173+ m_button_single_row = gtk_check_button_new_with_mnemonic(_("Use a single _panel row"));
3174+ gtk_table_attach_defaults(panel_table, m_button_single_row, 1, 2, 3, 4);
3175 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_button_single_row), wm_settings->button_single_row);
3176 gtk_widget_set_sensitive(m_button_single_row, gtk_combo_box_get_active(GTK_COMBO_BOX (m_button_style)) == 0);
3177 g_signal_connect_slot(m_button_single_row, "toggled", &ConfigurationDialog::toggle_button_single_row, this);
3178+ gtk_widget_show(m_button_single_row);
3179+
3180
3181 // Create menu section
3182- label_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
3183- GtkBox* appearance_vbox = GTK_BOX(gtk_vbox_new(false, 6));
3184- GtkWidget* appearance_frame = xfce_gtk_frame_box_new_with_content(_("Menu"), GTK_WIDGET(appearance_vbox));
3185- gtk_box_pack_start(contents_vbox, appearance_frame, false, false, 0);
3186- gtk_container_set_border_width(GTK_CONTAINER(appearance_frame), 6);
3187+ GtkTable* menu_table = GTK_TABLE(gtk_table_new(6, 2, false));
3188+ gtk_table_set_col_spacings(menu_table, 12);
3189+ gtk_table_set_row_spacings(menu_table, 6);
3190+
3191+ GtkWidget* appearance_frame = xfce_gtk_frame_box_new_with_content(_("Menu"), GTK_WIDGET(menu_table));
3192+ gtk_box_pack_start(contents_vbox, appearance_frame, false, false, 6);
3193+ gtk_container_set_border_width(GTK_CONTAINER(appearance_frame), 0);
3194
3195 // Add option to use generic names
3196 m_show_generic_names = gtk_check_button_new_with_mnemonic(_("Show generic application _names"));
3197- gtk_box_pack_start(appearance_vbox, m_show_generic_names, true, true, 0);
3198+ gtk_table_attach_defaults(menu_table, m_show_generic_names, 0, 2, 0, 1);
3199 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_show_generic_names), !wm_settings->launcher_show_name);
3200 g_signal_connect_slot(m_show_generic_names, "toggled", &ConfigurationDialog::toggle_show_generic_name, this);
3201
3202 // Add option to hide descriptions
3203 m_show_descriptions = gtk_check_button_new_with_mnemonic(_("Show application _descriptions"));
3204- gtk_box_pack_start(appearance_vbox, m_show_descriptions, true, true, 0);
3205+ gtk_table_attach_defaults(menu_table, m_show_descriptions, 0, 2, 1, 2);
3206 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_show_descriptions), wm_settings->launcher_show_description);
3207 g_signal_connect_slot(m_show_descriptions, "toggled", &ConfigurationDialog::toggle_show_description, this);
3208
3209 // Add option to show menu hierarchy
3210 m_show_hierarchy = gtk_check_button_new_with_mnemonic(_("Show menu hie_rarchy"));
3211- gtk_box_pack_start(appearance_vbox, m_show_hierarchy, true, true, 0);
3212+ gtk_table_attach_defaults(menu_table, m_show_hierarchy, 0, 2, 2, 3);
3213 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_show_hierarchy), wm_settings->load_hierarchy);
3214 g_signal_connect_slot(m_show_hierarchy, "toggled", &ConfigurationDialog::toggle_show_hierarchy, this);
3215
3216- // Add option to use alternate search entry position
3217- m_position_search_alternate = gtk_check_button_new_with_mnemonic(_("Position _search entry next to panel button"));
3218- gtk_box_pack_start(appearance_vbox, m_position_search_alternate, true, true, 0);
3219- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_position_search_alternate), wm_settings->position_search_alternate);
3220- g_signal_connect_slot(m_position_search_alternate, "toggled", &ConfigurationDialog::toggle_position_search_alternate, this);
3221-
3222- // Add option to use alternate commands position
3223- m_position_commands_alternate = gtk_check_button_new_with_mnemonic(_("Position commands next to search _entry"));
3224- gtk_box_pack_start(appearance_vbox, m_position_commands_alternate, true, true, 0);
3225- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_position_commands_alternate), wm_settings->position_commands_alternate);
3226- gtk_widget_set_sensitive(GTK_WIDGET(m_position_commands_alternate), wm_settings->position_search_alternate);
3227- g_signal_connect_slot(m_position_commands_alternate, "toggled", &ConfigurationDialog::toggle_position_commands_alternate, this);
3228-
3229- // Add option to use alternate categories position
3230- m_position_categories_alternate = gtk_check_button_new_with_mnemonic(_("Position cate_gories next to panel button"));
3231- gtk_box_pack_start(appearance_vbox, m_position_categories_alternate, true, true, 0);
3232- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_position_categories_alternate), wm_settings->position_categories_alternate);
3233- g_signal_connect_slot(m_position_categories_alternate, "toggled", &ConfigurationDialog::toggle_position_categories_alternate, this);
3234-
3235 // Add item icon size selector
3236- hbox = GTK_BOX(gtk_hbox_new(false, 12));
3237- gtk_box_pack_start(appearance_vbox, GTK_WIDGET(hbox), false, false, 0);
3238-
3239 label = gtk_label_new_with_mnemonic(_("Ite_m icon size:"));
3240 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3241- gtk_box_pack_start(hbox, label, false, false, 0);
3242- gtk_size_group_add_widget(label_size_group, label);
3243+ gtk_table_attach(menu_table, label, 0, 1, 3, 4, GTK_FILL, GtkAttachOptions(GTK_EXPAND | GTK_FILL), 0, 0);
3244
3245 m_item_icon_size = gtk_combo_box_text_new();
3246 std::vector<std::string> icon_sizes = IconSize::get_strings();
3247@@ -585,18 +576,14 @@
3248 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(m_item_icon_size), i->c_str());
3249 }
3250 gtk_combo_box_set_active(GTK_COMBO_BOX(m_item_icon_size), wm_settings->launcher_icon_size + 1);
3251- gtk_box_pack_start(hbox, m_item_icon_size, false, false, 0);
3252+ gtk_table_attach_defaults(menu_table, m_item_icon_size, 1, 2, 3, 4);
3253 gtk_label_set_mnemonic_widget(GTK_LABEL(label), m_item_icon_size);
3254 g_signal_connect_slot(m_item_icon_size, "changed", &ConfigurationDialog::item_icon_size_changed, this);
3255
3256 // Add category icon size selector
3257- hbox = GTK_BOX(gtk_hbox_new(false, 12));
3258- gtk_box_pack_start(appearance_vbox, GTK_WIDGET(hbox), false, false, 0);
3259-
3260 label = gtk_label_new_with_mnemonic(_("Categ_ory icon size:"));
3261 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3262- gtk_box_pack_start(hbox, label, false, false, 0);
3263- gtk_size_group_add_widget(label_size_group, label);
3264+ gtk_table_attach(menu_table, label, 0, 1, 4, 5, GTK_FILL, GtkAttachOptions(GTK_EXPAND | GTK_FILL), 0, 0);
3265
3266 m_category_icon_size = gtk_combo_box_text_new();
3267 for (std::vector<std::string>::const_iterator i = icon_sizes.begin(), end = icon_sizes.end(); i != end; ++i)
3268@@ -604,10 +591,21 @@
3269 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(m_category_icon_size), i->c_str());
3270 }
3271 gtk_combo_box_set_active(GTK_COMBO_BOX(m_category_icon_size), wm_settings->category_icon_size + 1);
3272- gtk_box_pack_start(hbox, m_category_icon_size, false, false, 0);
3273+ gtk_table_attach_defaults(menu_table, m_category_icon_size, 1, 2, 4, 5);
3274 gtk_label_set_mnemonic_widget(GTK_LABEL(label), m_category_icon_size);
3275 g_signal_connect_slot(m_category_icon_size, "changed", &ConfigurationDialog::category_icon_size_changed, this);
3276
3277+ // Add option to control background opacity
3278+ label = gtk_label_new_with_mnemonic(_("Background opacit_y:"));
3279+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3280+ gtk_table_attach(menu_table, label, 0, 1, 5, 6, GTK_FILL, GtkAttachOptions(GTK_EXPAND | GTK_FILL), 0, 0);
3281+
3282+ m_background_opacity = gtk_hscale_new_with_range(0.0, 100.0, 1.0);
3283+ gtk_table_attach_defaults(menu_table, m_background_opacity, 1, 2, 5, 6);
3284+ gtk_scale_set_value_pos(GTK_SCALE(m_background_opacity), GTK_POS_RIGHT);
3285+ gtk_range_set_value(GTK_RANGE(m_background_opacity), wm_settings->menu_opacity);
3286+ g_signal_connect_slot(m_background_opacity, "value-changed", &ConfigurationDialog::background_opacity_changed, this);
3287+
3288 return page;
3289 }
3290
3291@@ -615,11 +613,18 @@
3292
3293 GtkWidget* ConfigurationDialog::init_behavior_tab()
3294 {
3295- // Create behavior section
3296+ // Create behavior page
3297 GtkWidget* page = gtk_alignment_new(0, 0, 1, 0);
3298 gtk_container_set_border_width(GTK_CONTAINER(page), 8);
3299- GtkBox* behavior_vbox = GTK_BOX(gtk_vbox_new(false, 8));
3300- gtk_container_add(GTK_CONTAINER(page), GTK_WIDGET(behavior_vbox));
3301+ GtkBox* contents_vbox = GTK_BOX(gtk_vbox_new(false, 8));
3302+ gtk_container_add(GTK_CONTAINER(page), GTK_WIDGET(contents_vbox));
3303+
3304+
3305+ // Create menu section
3306+ GtkBox* behavior_vbox = GTK_BOX(gtk_vbox_new(false, 6));
3307+ GtkWidget* behavior_frame = xfce_gtk_frame_box_new_with_content(_("Menu"), GTK_WIDGET(behavior_vbox));
3308+ gtk_box_pack_start(contents_vbox, behavior_frame, false, false, 6);
3309+ gtk_container_set_border_width(GTK_CONTAINER(behavior_frame), 0);
3310
3311 // Add option to switch categories by hovering
3312 m_hover_switch_category = gtk_check_button_new_with_mnemonic(_("Switch categories by _hovering"));
3313@@ -627,24 +632,71 @@
3314 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_hover_switch_category), wm_settings->category_hover_activate);
3315 g_signal_connect_slot(m_hover_switch_category, "toggled", &ConfigurationDialog::toggle_hover_switch_category, this);
3316
3317+ // Add option to use alternate search entry position
3318+ m_position_search_alternate = gtk_check_button_new_with_mnemonic(_("Position _search entry next to panel button"));
3319+ gtk_box_pack_start(behavior_vbox, m_position_search_alternate, true, true, 0);
3320+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_position_search_alternate), wm_settings->position_search_alternate);
3321+ g_signal_connect_slot(m_position_search_alternate, "toggled", &ConfigurationDialog::toggle_position_search_alternate, this);
3322+
3323+ // Add option to use alternate commands position
3324+ m_position_commands_alternate = gtk_check_button_new_with_mnemonic(_("Position commands next to search _entry"));
3325+ gtk_box_pack_start(behavior_vbox, m_position_commands_alternate, true, true, 0);
3326+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_position_commands_alternate), wm_settings->position_commands_alternate);
3327+ gtk_widget_set_sensitive(GTK_WIDGET(m_position_commands_alternate), wm_settings->position_search_alternate);
3328+ g_signal_connect_slot(m_position_commands_alternate, "toggled", &ConfigurationDialog::toggle_position_commands_alternate, this);
3329+
3330+ // Add option to use alternate categories position
3331+ m_position_categories_alternate = gtk_check_button_new_with_mnemonic(_("Position cate_gories next to panel button"));
3332+ gtk_box_pack_start(behavior_vbox, m_position_categories_alternate, true, true, 0);
3333+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_position_categories_alternate), wm_settings->position_categories_alternate);
3334+ g_signal_connect_slot(m_position_categories_alternate, "toggled", &ConfigurationDialog::toggle_position_categories_alternate, this);
3335+
3336+
3337+ // Create recently used section
3338+ GtkTable* recent_table = GTK_TABLE(gtk_table_new(3, 2, false));
3339+ gtk_table_set_col_spacings(recent_table, 12);
3340+ gtk_table_set_row_spacings(recent_table, 6);
3341+
3342+ GtkWidget* recent_frame = xfce_gtk_frame_box_new_with_content(_("Recently Used"), GTK_WIDGET(recent_table));
3343+ gtk_box_pack_start(contents_vbox, recent_frame, false, false, 6);
3344+ gtk_container_set_border_width(GTK_CONTAINER(recent_frame), 0);
3345+
3346+ // Add value to change maximum number of recently used entries
3347+ GtkWidget* label = gtk_label_new_with_mnemonic(_("Amount of _items:"));
3348+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3349+ gtk_table_attach(recent_table, label, 0, 1, 0, 1, GTK_FILL, GtkAttachOptions(GTK_EXPAND | GTK_FILL), 0, 0);
3350+
3351+ m_recent_items_max = gtk_spin_button_new_with_range(5, 100, 1);
3352+ gtk_table_attach_defaults(recent_table, m_recent_items_max, 1, 2, 0, 1);
3353+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), m_recent_items_max);
3354+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(m_recent_items_max), wm_settings->recent_items_max);
3355+ g_signal_connect_slot(m_recent_items_max, "value-changed", &ConfigurationDialog::recent_items_max_changed, this);
3356+
3357 // Add option to remember favorites
3358- m_remember_favorites = gtk_check_button_new_with_mnemonic(_("Include _favorites in recently used"));
3359- gtk_box_pack_start(behavior_vbox, m_remember_favorites, true, true, 0);
3360- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_remember_favorites), wm_settings->favorites_in_recent);
3361+ m_remember_favorites = gtk_check_button_new_with_mnemonic(_("Ignore _favorites"));
3362+ gtk_table_attach_defaults(recent_table, m_remember_favorites, 0, 2, 1, 2);
3363+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_remember_favorites), !wm_settings->favorites_in_recent);
3364 g_signal_connect_slot(m_remember_favorites, "toggled", &ConfigurationDialog::toggle_remember_favorites, this);
3365
3366 // Add option to display recently used
3367- m_display_recent = gtk_check_button_new_with_mnemonic(_("Display recently _used by default"));
3368- gtk_box_pack_start(behavior_vbox, m_display_recent, true, true, 0);
3369+ m_display_recent = gtk_check_button_new_with_mnemonic(_("Display by _default"));
3370+ gtk_table_attach_defaults(recent_table, m_display_recent, 0, 2, 2, 3);
3371 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_display_recent), wm_settings->display_recent);
3372 g_signal_connect_slot(m_display_recent, "toggled", &ConfigurationDialog::toggle_display_recent, this);
3373
3374- // Create commands section
3375+ return page;
3376+}
3377+
3378+//-----------------------------------------------------------------------------
3379+
3380+GtkWidget* ConfigurationDialog::init_commands_tab()
3381+{
3382+ // Create commands page
3383+ GtkWidget* page = gtk_alignment_new(0, 0, 1, 0);
3384+ gtk_container_set_border_width(GTK_CONTAINER(page), 8);
3385+ GtkBox* commands_vbox = GTK_BOX(gtk_vbox_new(false, 8));
3386+ gtk_container_add(GTK_CONTAINER(page), GTK_WIDGET(commands_vbox));
3387 GtkSizeGroup* label_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
3388- GtkBox* commands_vbox = GTK_BOX(gtk_vbox_new(false, 6));
3389- GtkWidget* commands_frame = xfce_gtk_frame_box_new_with_content(_("Commands"), GTK_WIDGET(commands_vbox));
3390- gtk_box_pack_start(behavior_vbox, commands_frame, false, false, 6);
3391- gtk_container_set_border_width(GTK_CONTAINER(commands_frame), 0);
3392
3393 // Add command entries
3394 for (int i = 0; i < Settings::CountCommands; ++i)
3395@@ -661,7 +713,7 @@
3396
3397 GtkWidget* ConfigurationDialog::init_search_actions_tab()
3398 {
3399- // Create search actions section
3400+ // Create search actions page
3401 GtkWidget* page = gtk_alignment_new(0, 0, 1, 1);
3402 gtk_container_set_border_width(GTK_CONTAINER(page), 8);
3403 GtkTable* actions_table = GTK_TABLE(gtk_table_new(3, 2, false));
3404
3405=== modified file 'panel-plugin/configuration-dialog.h'
3406--- panel-plugin/configuration-dialog.h 2014-10-14 06:39:57 +0000
3407+++ panel-plugin/configuration-dialog.h 2015-02-18 19:37:38 +0000
3408@@ -1,5 +1,5 @@
3409 /*
3410- * Copyright (C) 2013 Graeme Gott <graeme@gottcode.org>
3411+ * Copyright (C) 2013,2015 Graeme Gott <graeme@gottcode.org>
3412 *
3413 * This library is free software; you can redistribute it and/or modify
3414 * it under the terms of the GNU General Public License as published by
3415@@ -56,9 +56,13 @@
3416
3417 void toggle_button_single_row(GtkToggleButton* button);
3418 void toggle_hover_switch_category(GtkToggleButton* button);
3419+
3420+ void recent_items_max_changed(GtkSpinButton* button);
3421 void toggle_remember_favorites(GtkToggleButton* button);
3422 void toggle_display_recent(GtkToggleButton* button);
3423
3424+ void background_opacity_changed(GtkRange* range);
3425+
3426 SearchAction* get_selected_action(GtkTreeIter* iter = NULL) const;
3427 void action_selected(GtkTreeView* view);
3428 void action_name_changed(GtkEditable* editable);
3429@@ -71,6 +75,7 @@
3430 void response(GtkDialog*, int response_id);
3431 GtkWidget* init_appearance_tab();
3432 GtkWidget* init_behavior_tab();
3433+ GtkWidget* init_commands_tab();
3434 GtkWidget* init_search_actions_tab();
3435
3436 private:
3437@@ -86,6 +91,7 @@
3438 GtkWidget* m_position_categories_alternate;
3439 GtkWidget* m_category_icon_size;
3440 GtkWidget* m_item_icon_size;
3441+ GtkWidget* m_background_opacity;
3442
3443 GtkWidget* m_button_style;
3444 GtkWidget* m_title;
3445@@ -95,6 +101,7 @@
3446 GtkWidget* m_hover_switch_category;
3447 GtkWidget* m_remember_favorites;
3448 GtkWidget* m_display_recent;
3449+ GtkWidget* m_recent_items_max;
3450 std::vector<CommandEdit*> m_commands;
3451
3452 GtkTreeView* m_actions_view;
3453
3454=== modified file 'panel-plugin/favorites-page.cpp'
3455--- panel-plugin/favorites-page.cpp 2015-02-15 06:11:51 +0000
3456+++ panel-plugin/favorites-page.cpp 2015-02-18 19:37:38 +0000
3457@@ -1,5 +1,5 @@
3458 /*
3459- * Copyright (C) 2013, 2015 Graeme Gott <graeme@gottcode.org>
3460+ * Copyright (C) 2013 Graeme Gott <graeme@gottcode.org>
3461 *
3462 * This library is free software; you can redistribute it and/or modify
3463 * it under the terms of the GNU General Public License as published by
3464@@ -33,13 +33,33 @@
3465 //-----------------------------------------------------------------------------
3466
3467 FavoritesPage::FavoritesPage(Window* window) :
3468- ListPage(wm_settings->favorites, window)
3469+ Page(window)
3470 {
3471 get_view()->set_reorderable(true);
3472 }
3473
3474 //-----------------------------------------------------------------------------
3475
3476+FavoritesPage::~FavoritesPage()
3477+{
3478+ unset_menu_items();
3479+}
3480+
3481+//-----------------------------------------------------------------------------
3482+
3483+bool FavoritesPage::contains(Launcher* launcher) const
3484+{
3485+ if (!launcher)
3486+ {
3487+ return false;
3488+ }
3489+
3490+ std::string desktop_id(launcher->get_desktop_id());
3491+ return std::find(wm_settings->favorites.begin(), wm_settings->favorites.end(), desktop_id) != wm_settings->favorites.end();
3492+}
3493+
3494+//-----------------------------------------------------------------------------
3495+
3496 void FavoritesPage::add(Launcher* launcher)
3497 {
3498 if (!launcher || contains(launcher))
3499@@ -59,6 +79,48 @@
3500
3501 //-----------------------------------------------------------------------------
3502
3503+void FavoritesPage::remove(Launcher* launcher)
3504+{
3505+ GtkTreeModel* model = GTK_TREE_MODEL(get_view()->get_model());
3506+ GtkListStore* store = GTK_LIST_STORE(model);
3507+ GtkTreeIter iter;
3508+ Launcher* test_launcher = NULL;
3509+
3510+ bool valid = gtk_tree_model_get_iter_first(model, &iter);
3511+ while (valid)
3512+ {
3513+ gtk_tree_model_get(model, &iter, LauncherView::COLUMN_LAUNCHER, &test_launcher, -1);
3514+ if (test_launcher == launcher)
3515+ {
3516+ gtk_list_store_remove(store, &iter);
3517+ break;
3518+ }
3519+ valid = gtk_tree_model_iter_next(model, &iter);
3520+ }
3521+}
3522+
3523+//-----------------------------------------------------------------------------
3524+
3525+void FavoritesPage::set_menu_items()
3526+{
3527+ GtkTreeModel* model = get_window()->get_applications()->create_launcher_model(wm_settings->favorites);
3528+ get_view()->set_model(model);
3529+ g_signal_connect_slot(model, "row-changed", &FavoritesPage::on_row_changed, this);
3530+ g_signal_connect_slot(model, "row-inserted", &FavoritesPage::on_row_inserted, this);
3531+ g_signal_connect_slot(model, "row-deleted", &FavoritesPage::on_row_deleted, this);
3532+ g_object_unref(model);
3533+}
3534+
3535+//-----------------------------------------------------------------------------
3536+
3537+void FavoritesPage::unset_menu_items()
3538+{
3539+ // Clear treeview
3540+ get_view()->unset_model();
3541+}
3542+
3543+//-----------------------------------------------------------------------------
3544+
3545 void FavoritesPage::extend_context_menu(GtkWidget* menu)
3546 {
3547 GtkWidget* menuitem = gtk_separator_menu_item_new();
3548@@ -86,6 +148,65 @@
3549
3550 //-----------------------------------------------------------------------------
3551
3552+void FavoritesPage::on_row_changed(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter)
3553+{
3554+ size_t pos = gtk_tree_path_get_indices(path)[0];
3555+ if (pos >= wm_settings->favorites.size())
3556+ {
3557+ return;
3558+ }
3559+
3560+ Launcher* launcher;
3561+ gtk_tree_model_get(model, iter, LauncherView::COLUMN_LAUNCHER, &launcher, -1);
3562+ if (launcher)
3563+ {
3564+ g_assert(launcher->get_type() == Launcher::Type);
3565+ wm_settings->favorites[pos] = launcher->get_desktop_id();
3566+ wm_settings->set_modified();
3567+ }
3568+}
3569+
3570+//-----------------------------------------------------------------------------
3571+
3572+void FavoritesPage::on_row_inserted(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter)
3573+{
3574+ size_t pos = gtk_tree_path_get_indices(path)[0];
3575+
3576+ std::string desktop_id;
3577+ Launcher* launcher;
3578+ gtk_tree_model_get(model, iter, LauncherView::COLUMN_LAUNCHER, &launcher, -1);
3579+ if (launcher)
3580+ {
3581+ g_assert(launcher->get_type() == Launcher::Type);
3582+ desktop_id = launcher->get_desktop_id();
3583+ }
3584+
3585+ if (pos >= wm_settings->favorites.size())
3586+ {
3587+ wm_settings->favorites.push_back(desktop_id);
3588+ wm_settings->set_modified();
3589+ }
3590+ else if (wm_settings->favorites.at(pos) != desktop_id)
3591+ {
3592+ wm_settings->favorites.insert(wm_settings->favorites.begin() + pos, desktop_id);
3593+ wm_settings->set_modified();
3594+ }
3595+}
3596+
3597+//-----------------------------------------------------------------------------
3598+
3599+void FavoritesPage::on_row_deleted(GtkTreeModel*, GtkTreePath* path)
3600+{
3601+ size_t pos = gtk_tree_path_get_indices(path)[0];
3602+ if (pos < wm_settings->favorites.size())
3603+ {
3604+ wm_settings->favorites.erase(wm_settings->favorites.begin() + pos);
3605+ wm_settings->set_modified();
3606+ }
3607+}
3608+
3609+//-----------------------------------------------------------------------------
3610+
3611 void FavoritesPage::sort(std::vector<Launcher*>& items) const
3612 {
3613 for (std::vector<std::string>::const_iterator i = wm_settings->favorites.begin(), end = wm_settings->favorites.end(); i != end; ++i)
3614@@ -112,9 +233,9 @@
3615 {
3616 desktop_ids.push_back((*i)->get_desktop_id());
3617 }
3618- set_desktop_ids(desktop_ids);
3619-
3620+ wm_settings->favorites = desktop_ids;
3621 wm_settings->set_modified();
3622+ set_menu_items();
3623 }
3624
3625 //-----------------------------------------------------------------------------
3626@@ -129,9 +250,9 @@
3627 {
3628 desktop_ids.push_back((*i)->get_desktop_id());
3629 }
3630- set_desktop_ids(desktop_ids);
3631-
3632+ wm_settings->favorites = desktop_ids;
3633 wm_settings->set_modified();
3634+ set_menu_items();
3635 }
3636
3637 //-----------------------------------------------------------------------------
3638
3639=== modified file 'panel-plugin/favorites-page.h'
3640--- panel-plugin/favorites-page.h 2013-12-29 21:15:12 +0000
3641+++ panel-plugin/favorites-page.h 2015-02-18 19:37:38 +0000
3642@@ -18,21 +18,32 @@
3643 #ifndef WHISKERMENU_FAVORITES_PAGE_H
3644 #define WHISKERMENU_FAVORITES_PAGE_H
3645
3646-#include "list-page.h"
3647+#include "page.h"
3648+
3649+#include <vector>
3650
3651 namespace WhiskerMenu
3652 {
3653
3654-class FavoritesPage : public ListPage
3655+class FavoritesPage : public Page
3656 {
3657 public:
3658 FavoritesPage(Window* window);
3659+ ~FavoritesPage();
3660+
3661+ bool contains(Launcher* launcher) const;
3662
3663 void add(Launcher* launcher);
3664+ void remove(Launcher* launcher);
3665+ void set_menu_items();
3666+ void unset_menu_items();
3667
3668 private:
3669 void extend_context_menu(GtkWidget* menu);
3670 bool remember_launcher(Launcher* launcher);
3671+ void on_row_changed(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter);
3672+ void on_row_inserted(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter);
3673+ void on_row_deleted(GtkTreeModel*, GtkTreePath* path);
3674 void sort(std::vector<Launcher*>& items) const;
3675 void sort_ascending();
3676 void sort_descending();
3677
3678=== modified file 'panel-plugin/launcher-view.cpp'
3679--- panel-plugin/launcher-view.cpp 2013-12-29 21:15:12 +0000
3680+++ panel-plugin/launcher-view.cpp 2015-02-18 19:37:38 +0000
3681@@ -47,6 +47,7 @@
3682 m_pressed_launcher(NULL),
3683 m_drag_enabled(true),
3684 m_launcher_dragged(false),
3685+ m_row_activated(false),
3686 m_reorderable(false)
3687 {
3688 // Create the view
3689@@ -76,6 +77,9 @@
3690 g_signal_connect_slot(m_view, "button-release-event", &LauncherView::on_button_release_event, this);
3691 g_signal_connect_slot(m_view, "drag-data-get", &LauncherView::on_drag_data_get, this);
3692 g_signal_connect_slot(m_view, "drag-end", &LauncherView::on_drag_end, this);
3693+ g_signal_connect_slot(m_view, "row-activated", &LauncherView::on_row_activated, this);
3694+ g_signal_connect_slot<GtkTreeView*,GtkTreeIter*,GtkTreePath*>(m_view, "test-collapse-row", &LauncherView::test_row_toggle, this);
3695+ g_signal_connect_slot<GtkTreeView*,GtkTreeIter*,GtkTreePath*>(m_view, "test-expand-row", &LauncherView::test_row_toggle, this);
3696 set_reorderable(false);
3697 }
3698
3699@@ -284,6 +288,8 @@
3700
3701 gboolean LauncherView::on_button_press_event(GtkWidget*, GdkEvent* event)
3702 {
3703+ m_row_activated = false;
3704+
3705 GdkEventButton* button_event = reinterpret_cast<GdkEventButton*>(event);
3706 if (button_event->button != 1)
3707 {
3708@@ -366,3 +372,33 @@
3709 }
3710
3711 //-----------------------------------------------------------------------------
3712+
3713+void LauncherView::on_row_activated(GtkTreeView* tree_view, GtkTreePath* path, GtkTreeViewColumn*)
3714+{
3715+ if (m_pressed_launcher)
3716+ {
3717+ return;
3718+ }
3719+
3720+ m_row_activated = true;
3721+
3722+ if (gtk_tree_view_row_expanded(tree_view, path))
3723+ {
3724+ gtk_tree_view_collapse_row(tree_view, path);
3725+ }
3726+ else
3727+ {
3728+ gtk_tree_view_expand_row(tree_view, path, false);
3729+ }
3730+}
3731+
3732+//-----------------------------------------------------------------------------
3733+
3734+gboolean LauncherView::test_row_toggle()
3735+{
3736+ bool allow = !m_row_activated;
3737+ m_row_activated = false;
3738+ return allow;
3739+}
3740+
3741+//-----------------------------------------------------------------------------
3742
3743=== modified file 'panel-plugin/launcher-view.h'
3744--- panel-plugin/launcher-view.h 2013-12-29 21:15:12 +0000
3745+++ panel-plugin/launcher-view.h 2015-02-18 19:37:38 +0000
3746@@ -76,6 +76,8 @@
3747 gboolean on_button_release_event(GtkWidget*, GdkEvent* event);
3748 void on_drag_data_get(GtkWidget*, GdkDragContext*, GtkSelectionData* data, guint info, guint);
3749 void on_drag_end(GtkWidget*, GdkDragContext*);
3750+ void on_row_activated(GtkTreeView* tree_view, GtkTreePath* path, GtkTreeViewColumn* column);
3751+ gboolean test_row_toggle();
3752
3753 private:
3754 Window* m_window;
3755@@ -88,6 +90,7 @@
3756 Launcher* m_pressed_launcher;
3757 bool m_drag_enabled;
3758 bool m_launcher_dragged;
3759+ bool m_row_activated;
3760 bool m_reorderable;
3761 };
3762
3763
3764=== removed file 'panel-plugin/list-page.cpp'
3765--- panel-plugin/list-page.cpp 2014-03-18 21:55:14 +0000
3766+++ panel-plugin/list-page.cpp 1970-01-01 00:00:00 +0000
3767@@ -1,204 +0,0 @@
3768-/*
3769- * Copyright (C) 2013 Graeme Gott <graeme@gottcode.org>
3770- *
3771- * This library is free software; you can redistribute it and/or modify
3772- * it under the terms of the GNU General Public License as published by
3773- * the Free Software Foundation, either version 2 of the License, or
3774- * (at your option) any later version.
3775- *
3776- * This library is distributed in the hope that it will be useful,
3777- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3778- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3779- * GNU General Public License for more details.
3780- *
3781- * You should have received a copy of the GNU General Public License
3782- * along with this library. If not, see <http://www.gnu.org/licenses/>.
3783- */
3784-
3785-#include "list-page.h"
3786-
3787-#include "applications-page.h"
3788-#include "launcher.h"
3789-#include "launcher-view.h"
3790-#include "settings.h"
3791-#include "slot.h"
3792-#include "window.h"
3793-
3794-#include <algorithm>
3795-
3796-using namespace WhiskerMenu;
3797-
3798-//-----------------------------------------------------------------------------
3799-
3800-ListPage::ListPage(std::vector<std::string>& desktop_ids, Window* window) :
3801- Page(window),
3802- m_desktop_ids(desktop_ids)
3803-{
3804-}
3805-
3806-//-----------------------------------------------------------------------------
3807-
3808-ListPage::~ListPage()
3809-{
3810- unset_menu_items();
3811-}
3812-
3813-//-----------------------------------------------------------------------------
3814-
3815-bool ListPage::contains(Launcher* launcher) const
3816-{
3817- if (!launcher)
3818- {
3819- return false;
3820- }
3821-
3822- std::string desktop_id(launcher->get_desktop_id());
3823- return std::find(m_desktop_ids.begin(), m_desktop_ids.end(), desktop_id) != m_desktop_ids.end();
3824-}
3825-
3826-//-----------------------------------------------------------------------------
3827-
3828-void ListPage::remove(Launcher* launcher)
3829-{
3830- GtkTreeModel* model = GTK_TREE_MODEL(get_view()->get_model());
3831- GtkListStore* store = GTK_LIST_STORE(model);
3832- GtkTreeIter iter;
3833- Launcher* test_launcher = NULL;
3834-
3835- bool valid = gtk_tree_model_get_iter_first(model, &iter);
3836- while (valid)
3837- {
3838- gtk_tree_model_get(model, &iter, LauncherView::COLUMN_LAUNCHER, &test_launcher, -1);
3839- if (test_launcher == launcher)
3840- {
3841- gtk_list_store_remove(store, &iter);
3842- break;
3843- }
3844- valid = gtk_tree_model_iter_next(model, &iter);
3845- }
3846-}
3847-
3848-//-----------------------------------------------------------------------------
3849-
3850-void ListPage::set_menu_items()
3851-{
3852- // Create new model for treeview
3853- GtkListStore* store = gtk_list_store_new(
3854- LauncherView::N_COLUMNS,
3855- G_TYPE_STRING,
3856- G_TYPE_STRING,
3857- G_TYPE_POINTER);
3858-
3859- // Fetch menu items or remove them from list if missing
3860- for (std::vector<std::string>::iterator i = m_desktop_ids.begin(); i != m_desktop_ids.end(); ++i)
3861- {
3862- if (i->empty())
3863- {
3864- continue;
3865- }
3866-
3867- Launcher* launcher = get_window()->get_applications()->get_application(*i);
3868- if (launcher)
3869- {
3870- gtk_list_store_insert_with_values(
3871- store, NULL, G_MAXINT,
3872- LauncherView::COLUMN_ICON, launcher->get_icon(),
3873- LauncherView::COLUMN_TEXT, launcher->get_text(),
3874- LauncherView::COLUMN_LAUNCHER, launcher,
3875- -1);
3876- }
3877- else
3878- {
3879- i = m_desktop_ids.erase(i);
3880- --i;
3881- }
3882- }
3883-
3884- // Replace treeview contents
3885- GtkTreeModel* model = GTK_TREE_MODEL(store);
3886- get_view()->set_model(model);
3887- g_signal_connect_slot(model, "row-changed", &ListPage::on_row_changed, this);
3888- g_signal_connect_slot(model, "row-inserted", &ListPage::on_row_inserted, this);
3889- g_signal_connect_slot(model, "row-deleted", &ListPage::on_row_deleted, this);
3890- g_object_unref(model);
3891-}
3892-
3893-//-----------------------------------------------------------------------------
3894-
3895-void ListPage::unset_menu_items()
3896-{
3897- // Clear treeview
3898- get_view()->unset_model();
3899-}
3900-
3901-//-----------------------------------------------------------------------------
3902-
3903-void ListPage::set_desktop_ids(const std::vector<std::string>& desktop_ids)
3904-{
3905- m_desktop_ids = desktop_ids;
3906- if (get_view()->get_model())
3907- {
3908- set_menu_items();
3909- }
3910-}
3911-
3912-//-----------------------------------------------------------------------------
3913-
3914-void ListPage::on_row_changed(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter)
3915-{
3916- size_t pos = gtk_tree_path_get_indices(path)[0];
3917- if (pos >= m_desktop_ids.size())
3918- {
3919- return;
3920- }
3921-
3922- Launcher* launcher;
3923- gtk_tree_model_get(model, iter, LauncherView::COLUMN_LAUNCHER, &launcher, -1);
3924- if (launcher)
3925- {
3926- g_assert(launcher->get_type() == Launcher::Type);
3927- m_desktop_ids[pos] = launcher->get_desktop_id();
3928- wm_settings->set_modified();
3929- }
3930-}
3931-
3932-//-----------------------------------------------------------------------------
3933-
3934-void ListPage::on_row_inserted(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter)
3935-{
3936- size_t pos = gtk_tree_path_get_indices(path)[0];
3937-
3938- std::string desktop_id;
3939- Launcher* launcher;
3940- gtk_tree_model_get(model, iter, LauncherView::COLUMN_LAUNCHER, &launcher, -1);
3941- if (launcher)
3942- {
3943- g_assert(launcher->get_type() == Launcher::Type);
3944- desktop_id = launcher->get_desktop_id();
3945- }
3946-
3947- if (pos >= m_desktop_ids.size())
3948- {
3949- m_desktop_ids.push_back(desktop_id);
3950- wm_settings->set_modified();
3951- }
3952- else if (m_desktop_ids.at(pos) != desktop_id)
3953- {
3954- m_desktop_ids.insert(m_desktop_ids.begin() + pos, desktop_id);
3955- wm_settings->set_modified();
3956- }
3957-}
3958-
3959-//-----------------------------------------------------------------------------
3960-
3961-void ListPage::on_row_deleted(GtkTreeModel*, GtkTreePath* path)
3962-{
3963- size_t pos = gtk_tree_path_get_indices(path)[0];
3964- if (pos < m_desktop_ids.size())
3965- {
3966- m_desktop_ids.erase(m_desktop_ids.begin() + pos);
3967- wm_settings->set_modified();
3968- }
3969-}
3970-
3971-//-----------------------------------------------------------------------------
3972
3973=== removed file 'panel-plugin/list-page.h'
3974--- panel-plugin/list-page.h 2013-12-29 21:15:12 +0000
3975+++ panel-plugin/list-page.h 1970-01-01 00:00:00 +0000
3976@@ -1,56 +0,0 @@
3977-/*
3978- * Copyright (C) 2013 Graeme Gott <graeme@gottcode.org>
3979- *
3980- * This library is free software; you can redistribute it and/or modify
3981- * it under the terms of the GNU General Public License as published by
3982- * the Free Software Foundation, either version 2 of the License, or
3983- * (at your option) any later version.
3984- *
3985- * This library is distributed in the hope that it will be useful,
3986- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3987- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3988- * GNU General Public License for more details.
3989- *
3990- * You should have received a copy of the GNU General Public License
3991- * along with this library. If not, see <http://www.gnu.org/licenses/>.
3992- */
3993-
3994-#ifndef WHISKERMENU_LIST_PAGE_H
3995-#define WHISKERMENU_LIST_PAGE_H
3996-
3997-#include "page.h"
3998-
3999-#include <string>
4000-#include <vector>
4001-
4002-namespace WhiskerMenu
4003-{
4004-
4005-class ListPage : public Page
4006-{
4007-public:
4008- ListPage(std::vector<std::string>& desktop_ids, Window* window);
4009- ~ListPage();
4010-
4011- bool contains(Launcher* launcher) const;
4012-
4013- virtual void add(Launcher* launcher)=0;
4014- void remove(Launcher* launcher);
4015- void set_menu_items();
4016- void unset_menu_items();
4017-
4018-protected:
4019- void set_desktop_ids(const std::vector<std::string>& desktop_ids);
4020-
4021-private:
4022- void on_row_changed(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter);
4023- void on_row_inserted(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter);
4024- void on_row_deleted(GtkTreeModel*, GtkTreePath* path);
4025-
4026-private:
4027- std::vector<std::string>& m_desktop_ids;
4028-};
4029-
4030-}
4031-
4032-#endif // WHISKERMENU_LIST_PAGE_H
4033
4034=== modified file 'panel-plugin/page.cpp'
4035--- panel-plugin/page.cpp 2014-03-18 21:55:14 +0000
4036+++ panel-plugin/page.cpp 2015-02-18 19:37:38 +0000
4037@@ -1,5 +1,5 @@
4038 /*
4039- * Copyright (C) 2013, 2014 Graeme Gott <graeme@gottcode.org>
4040+ * Copyright (C) 2013, 2014, 2015 Graeme Gott <graeme@gottcode.org>
4041 *
4042 * This library is free software; you can redistribute it and/or modify
4043 * it under the terms of the GNU General Public License as published by
4044@@ -26,6 +26,8 @@
4045
4046 #include <libxfce4ui/libxfce4ui.h>
4047
4048+#include <glib/gstdio.h>
4049+
4050 using namespace WhiskerMenu;
4051
4052 //-----------------------------------------------------------------------------
4053@@ -92,7 +94,7 @@
4054 gtk_tree_model_get_iter(model, &iter, m_selected_path);
4055 gtk_tree_model_get(model, &iter, LauncherView::COLUMN_LAUNCHER, &launcher, -1);
4056 }
4057- return (launcher->get_type() == Launcher::Type) ? launcher : NULL;
4058+ return (launcher && (launcher->get_type() == Launcher::Type)) ? launcher : NULL;
4059 }
4060
4061 //-----------------------------------------------------------------------------
4062@@ -303,7 +305,14 @@
4063
4064 // Copy launcher to desktop folder
4065 GError* error = NULL;
4066- if (!g_file_copy(source_file, destination_file, G_FILE_COPY_NONE, NULL, NULL, NULL, &error))
4067+ if (g_file_copy(source_file, destination_file, G_FILE_COPY_NONE, NULL, NULL, NULL, &error))
4068+ {
4069+ // Make launcher executable
4070+ gchar* path = g_file_get_path(destination_file);
4071+ g_chmod(path, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
4072+ g_free(path);
4073+ }
4074+ else
4075 {
4076 xfce_dialog_show_error(NULL, error, _("Unable to add launcher to desktop."));
4077 g_error_free(error);
4078
4079=== modified file 'panel-plugin/plugin.cpp'
4080--- panel-plugin/plugin.cpp 2015-02-15 06:11:51 +0000
4081+++ panel-plugin/plugin.cpp 2015-02-18 19:37:38 +0000
4082@@ -43,7 +43,6 @@
4083 static void whiskermenu_free(XfcePanelPlugin*, Plugin* whiskermenu)
4084 {
4085 delete whiskermenu;
4086- whiskermenu = NULL;
4087 }
4088
4089 // Wait for grab; allows modifier as shortcut
4090@@ -96,13 +95,15 @@
4091
4092 Plugin::Plugin(XfcePanelPlugin* plugin) :
4093 m_plugin(plugin),
4094- m_window(NULL)
4095+ m_window(NULL),
4096+ m_opacity(100)
4097 {
4098 // Load settings
4099 wm_settings = new Settings;
4100 wm_settings->button_title = get_button_title_default();
4101- wm_settings->load(g_strconcat(DATADIR, "/xfce4/whiskermenu/defaults.rc", NULL));
4102+ wm_settings->load(xfce_resource_lookup(XFCE_RESOURCE_CONFIG, "xfce4/whiskermenu/defaults.rc"));
4103 wm_settings->load(xfce_panel_plugin_lookup_rc_file(m_plugin));
4104+ m_opacity = wm_settings->menu_opacity;
4105
4106 // Prevent empty panel button
4107 if (!wm_settings->button_icon_visible)
4108@@ -117,12 +118,9 @@
4109 }
4110 }
4111
4112- // Create menu window
4113- m_window = new Window;
4114- g_signal_connect_slot<GtkWidget*>(m_window->get_widget(), "unmap", &Plugin::menu_hidden, this);
4115-
4116 // Create toggle button
4117 m_button = xfce_panel_create_toggle_button();
4118+ gtk_widget_set_name(m_button, "whiskermenu-button");
4119 gtk_button_set_relief(GTK_BUTTON(m_button), GTK_RELIEF_NONE);
4120 gtk_button_set_focus_on_click(GTK_BUTTON(m_button), false);
4121 g_signal_connect_slot(m_button, "toggled", &Plugin::button_toggled, this);
4122@@ -133,7 +131,7 @@
4123 gtk_container_set_border_width(GTK_CONTAINER(m_button_box), 0);
4124 gtk_widget_show(GTK_WIDGET(m_button_box));
4125
4126- m_button_icon = XFCE_PANEL_IMAGE(xfce_panel_image_new_from_source(wm_settings->button_icon_name.c_str()));
4127+ m_button_icon = GTK_IMAGE(gtk_image_new());
4128 gtk_box_pack_start(m_button_box, GTK_WIDGET(m_button_icon), true, false, 0);
4129 if (wm_settings->button_icon_visible)
4130 {
4131@@ -174,6 +172,13 @@
4132 #else
4133 orientation_changed(m_plugin, xfce_panel_plugin_get_orientation(m_plugin));
4134 #endif
4135+
4136+ g_signal_connect_slot<GtkWidget*,GtkStyle*>(m_button, "style-set", &Plugin::update_size, this);
4137+ g_signal_connect_slot<GtkWidget*,GdkScreen*>(m_button, "screen-changed", &Plugin::update_size, this);
4138+
4139+ // Create menu window
4140+ m_window = new Window;
4141+ g_signal_connect_slot<GtkWidget*>(m_window->get_widget(), "unmap", &Plugin::menu_hidden, this);
4142 }
4143
4144 //-----------------------------------------------------------------------------
4145@@ -185,10 +190,10 @@
4146 delete m_window;
4147 m_window = NULL;
4148
4149+ gtk_widget_destroy(m_button);
4150+
4151 delete wm_settings;
4152 wm_settings = NULL;
4153-
4154- gtk_widget_destroy(m_button);
4155 }
4156
4157 //-----------------------------------------------------------------------------
4158@@ -209,7 +214,7 @@
4159
4160 std::string Plugin::get_button_title_default()
4161 {
4162- return _("Applications Menu");
4163+ return _("Applications");
4164 }
4165
4166 //-----------------------------------------------------------------------------
4167@@ -272,7 +277,6 @@
4168 {
4169 wm_settings->button_icon_name = icon;
4170 wm_settings->set_modified();
4171- xfce_panel_image_set_from_source(m_button_icon, icon.c_str());
4172 size_changed(m_plugin, xfce_panel_plugin_get_size(m_plugin));
4173 }
4174
4175@@ -302,7 +306,7 @@
4176 else
4177 {
4178 xfce_panel_plugin_block_autohide(m_plugin, true);
4179- m_window->show(m_button, xfce_panel_plugin_get_orientation(m_plugin) == GTK_ORIENTATION_HORIZONTAL);
4180+ show_menu(m_button, xfce_panel_plugin_get_orientation(m_plugin) == GTK_ORIENTATION_HORIZONTAL);
4181 }
4182 }
4183
4184@@ -328,13 +332,13 @@
4185 void Plugin::mode_changed(XfcePanelPlugin*, XfcePanelPluginMode mode)
4186 {
4187 gtk_label_set_angle(m_button_label, (mode == XFCE_PANEL_PLUGIN_MODE_VERTICAL) ? 270: 0);
4188- size_changed(m_plugin, xfce_panel_plugin_get_size(m_plugin));
4189+ update_size();
4190 }
4191 #else
4192 void Plugin::orientation_changed(XfcePanelPlugin*, GtkOrientation orientation)
4193 {
4194 gtk_label_set_angle(m_button_label, (orientation == GTK_ORIENTATION_VERTICAL) ? 270: 0);
4195- size_changed(m_plugin, xfce_panel_plugin_get_size(m_plugin));
4196+ update_size();
4197 }
4198 #endif
4199
4200@@ -353,7 +357,7 @@
4201 }
4202 else if (value && G_VALUE_HOLDS_BOOLEAN(value) && g_value_get_boolean(value))
4203 {
4204- m_window->show(NULL, true);
4205+ show_menu(NULL, true);
4206 }
4207 else
4208 {
4209@@ -416,10 +420,36 @@
4210 !wm_settings->button_title_visible,
4211 0, GTK_PACK_START);
4212
4213- // Resize icon
4214+ // Load icon
4215 GtkStyle* style = gtk_widget_get_style(m_button);
4216 gint border = (2 * std::max(style->xthickness, style->ythickness)) + 2;
4217- xfce_panel_image_set_size(m_button_icon, row_size - border);
4218+
4219+ GdkScreen* screen = gtk_widget_get_screen(GTK_WIDGET(m_plugin));
4220+ GtkIconTheme* icon_theme = G_LIKELY(screen != NULL) ? gtk_icon_theme_get_for_screen(screen) : NULL;
4221+
4222+#if (LIBXFCE4PANEL_CHECK_VERSION(4,9,0))
4223+ gint icon_width_max = (mode == XFCE_PANEL_PLUGIN_MODE_HORIZONTAL) ?
4224+ 6 * row_size - border :
4225+ size - border;
4226+ gint icon_height_max = row_size - border;
4227+ GdkPixbuf* icon = xfce_panel_pixbuf_from_source_at_size(
4228+ wm_settings->button_icon_name.c_str(),
4229+ icon_theme,
4230+ icon_width_max,
4231+ icon_height_max);
4232+#else
4233+ GdkPixbuf* icon = xfce_panel_pixbuf_from_source(
4234+ wm_settings->button_icon_name.c_str(),
4235+ icon_theme,
4236+ row_size - border);
4237+#endif
4238+ gint icon_width = 0;
4239+ if (G_LIKELY(icon != NULL))
4240+ {
4241+ gtk_image_set_from_pixbuf(m_button_icon, icon);
4242+ icon_width = gdk_pixbuf_get_width(icon);
4243+ g_object_unref(G_OBJECT(icon));
4244+ }
4245
4246 #if (LIBXFCE4PANEL_CHECK_VERSION(4,9,0))
4247 if (wm_settings->button_title_visible || !wm_settings->button_single_row)
4248@@ -432,7 +462,7 @@
4249 if (mode == XFCE_PANEL_PLUGIN_MODE_DESKBAR &&
4250 wm_settings->button_title_visible &&
4251 wm_settings->button_icon_visible &&
4252- label_size.width <= (size - row_size))
4253+ label_size.width <= (size - border - icon_width))
4254 {
4255 orientation = GTK_ORIENTATION_HORIZONTAL;
4256 }
4257@@ -459,3 +489,27 @@
4258 }
4259
4260 //-----------------------------------------------------------------------------
4261+
4262+void Plugin::update_size()
4263+{
4264+ size_changed(m_plugin, xfce_panel_plugin_get_size(m_plugin));
4265+}
4266+
4267+//-----------------------------------------------------------------------------
4268+
4269+void Plugin::show_menu(GtkWidget* parent, bool horizontal)
4270+{
4271+ if (wm_settings->menu_opacity != m_opacity)
4272+ {
4273+ if ((m_opacity == 100) || (wm_settings->menu_opacity == 100))
4274+ {
4275+ delete m_window;
4276+ m_window = new Window;
4277+ g_signal_connect_slot<GtkWidget*>(m_window->get_widget(), "unmap", &Plugin::menu_hidden, this);
4278+ }
4279+ m_opacity = wm_settings->menu_opacity;
4280+ }
4281+ m_window->show(parent, horizontal);
4282+}
4283+
4284+//-----------------------------------------------------------------------------
4285
4286=== modified file 'panel-plugin/plugin.h'
4287--- panel-plugin/plugin.h 2015-01-08 07:09:23 +0000
4288+++ panel-plugin/plugin.h 2015-02-18 19:37:38 +0000
4289@@ -1,5 +1,5 @@
4290 /*
4291- * Copyright (C) 2013, 2014 Graeme Gott <graeme@gottcode.org>
4292+ * Copyright (C) 2013, 2014, 2015 Graeme Gott <graeme@gottcode.org>
4293 *
4294 * This library is free software; you can redistribute it and/or modify
4295 * it under the terms of the GNU General Public License as published by
4296@@ -70,6 +70,8 @@
4297 void save();
4298 void show_about();
4299 gboolean size_changed(XfcePanelPlugin*, gint size);
4300+ void update_size();
4301+ void show_menu(GtkWidget* parent, bool horizontal);
4302
4303 private:
4304 XfcePanelPlugin* m_plugin;
4305@@ -78,7 +80,9 @@
4306 GtkWidget* m_button;
4307 GtkBox* m_button_box;
4308 GtkLabel* m_button_label;
4309- XfcePanelImage* m_button_icon;
4310+ GtkImage* m_button_icon;
4311+
4312+ int m_opacity;
4313 };
4314
4315 }
4316
4317=== added file 'panel-plugin/profile-picture.cpp'
4318--- panel-plugin/profile-picture.cpp 1970-01-01 00:00:00 +0000
4319+++ panel-plugin/profile-picture.cpp 2015-02-18 19:37:38 +0000
4320@@ -0,0 +1,104 @@
4321+/*
4322+ * Copyright (C) 2014 Graeme Gott <graeme@gottcode.org>
4323+ *
4324+ * This library is free software; you can redistribute it and/or modify
4325+ * it under the terms of the GNU General Public License as published by
4326+ * the Free Software Foundation, either version 2 of the License, or
4327+ * (at your option) any later version.
4328+ *
4329+ * This library is distributed in the hope that it will be useful,
4330+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4331+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4332+ * GNU General Public License for more details.
4333+ *
4334+ * You should have received a copy of the GNU General Public License
4335+ * along with this library. If not, see <http://www.gnu.org/licenses/>.
4336+ */
4337+
4338+#include "profile-picture.h"
4339+
4340+#include "command.h"
4341+#include "settings.h"
4342+#include "slot.h"
4343+#include "window.h"
4344+
4345+#include <libxfce4panel/libxfce4panel.h>
4346+
4347+using namespace WhiskerMenu;
4348+
4349+//-----------------------------------------------------------------------------
4350+
4351+ProfilePicture::ProfilePicture(Window* window) :
4352+ m_window(window)
4353+{
4354+ m_image = xfce_panel_image_new();
4355+
4356+ GtkWidget* eventbox = gtk_event_box_new();
4357+ gtk_event_box_set_visible_window(GTK_EVENT_BOX(eventbox), false);
4358+ gtk_widget_add_events(eventbox, GDK_BUTTON_PRESS_MASK);
4359+ g_signal_connect_slot<GtkWidget*, GdkEvent*>(eventbox, "button-press-event", &ProfilePicture::on_button_press_event, this);
4360+ gtk_container_add(GTK_CONTAINER(eventbox), m_image);
4361+
4362+ gchar* path = g_build_filename(g_get_home_dir(), ".face", NULL);
4363+ GFile* file = g_file_new_for_path(path);
4364+ g_free(path);
4365+
4366+ m_file_monitor = g_file_monitor_file(file, G_FILE_MONITOR_NONE, NULL, NULL);
4367+ g_signal_connect_slot(m_file_monitor, "changed", &ProfilePicture::on_file_changed, this);
4368+ on_file_changed(m_file_monitor, file, NULL, G_FILE_MONITOR_EVENT_CHANGED);
4369+
4370+ g_object_unref(file);
4371+
4372+ m_alignment = gtk_alignment_new(0.5, 0.5, 0, 0);
4373+ gtk_alignment_set_padding(GTK_ALIGNMENT(m_alignment), 0, 0, 10, 10);
4374+ gtk_container_add(GTK_CONTAINER(m_alignment), eventbox);
4375+}
4376+
4377+//-----------------------------------------------------------------------------
4378+
4379+ProfilePicture::~ProfilePicture()
4380+{
4381+ g_file_monitor_cancel(m_file_monitor);
4382+ g_object_unref(m_file_monitor);
4383+}
4384+
4385+//-----------------------------------------------------------------------------
4386+
4387+void ProfilePicture::on_file_changed(GFileMonitor*, GFile* file, GFile*, GFileMonitorEvent)
4388+{
4389+ gint width = 32, height = 32;
4390+ gtk_icon_size_lookup(GTK_ICON_SIZE_DND, &width, &height);
4391+
4392+ gchar* path = g_file_get_path(file);
4393+ GdkPixbuf* face = gdk_pixbuf_new_from_file_at_size(path, width, height, NULL);
4394+ g_free(path);
4395+
4396+ XfcePanelImage* image = XFCE_PANEL_IMAGE(m_image);
4397+ if (face)
4398+ {
4399+ xfce_panel_image_set_size(image, -1);
4400+ xfce_panel_image_set_from_pixbuf(image, face);
4401+ g_object_unref(face);
4402+ }
4403+ else
4404+ {
4405+ xfce_panel_image_set_size(image, height);
4406+ xfce_panel_image_set_from_source(image, "avatar-default");
4407+ }
4408+}
4409+
4410+//-----------------------------------------------------------------------------
4411+
4412+void ProfilePicture::on_button_press_event()
4413+{
4414+ Command* command = wm_settings->command[Settings::CommandProfile];
4415+ if (!command->get_shown())
4416+ {
4417+ return;
4418+ }
4419+
4420+ m_window->hide();
4421+ command->activate();
4422+}
4423+
4424+//-----------------------------------------------------------------------------
4425
4426=== added file 'panel-plugin/profile-picture.h'
4427--- panel-plugin/profile-picture.h 1970-01-01 00:00:00 +0000
4428+++ panel-plugin/profile-picture.h 2015-02-18 19:37:38 +0000
4429@@ -0,0 +1,52 @@
4430+/*
4431+ * Copyright (C) 2014 Graeme Gott <graeme@gottcode.org>
4432+ *
4433+ * This library is free software; you can redistribute it and/or modify
4434+ * it under the terms of the GNU General Public License as published by
4435+ * the Free Software Foundation, either version 2 of the License, or
4436+ * (at your option) any later version.
4437+ *
4438+ * This library is distributed in the hope that it will be useful,
4439+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4440+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4441+ * GNU General Public License for more details.
4442+ *
4443+ * You should have received a copy of the GNU General Public License
4444+ * along with this library. If not, see <http://www.gnu.org/licenses/>.
4445+ */
4446+
4447+#ifndef WHISKERMENU_PROFILE_PICTURE_H
4448+#define WHISKERMENU_PROFILE_PICTURE_H
4449+
4450+#include <gtk/gtk.h>
4451+
4452+namespace WhiskerMenu
4453+{
4454+
4455+class Window;
4456+
4457+class ProfilePicture
4458+{
4459+public:
4460+ ProfilePicture(Window* window);
4461+ ~ProfilePicture();
4462+
4463+ GtkWidget* get_widget() const
4464+ {
4465+ return m_alignment;
4466+ }
4467+
4468+private:
4469+ void on_file_changed(GFileMonitor* monitor, GFile* file, GFile* other_file, GFileMonitorEvent event_type);
4470+ void on_button_press_event();
4471+
4472+private:
4473+ Window* m_window;
4474+ GtkWidget* m_alignment;
4475+ GtkWidget* m_image;
4476+ GFileMonitor* m_file_monitor;
4477+};
4478+
4479+}
4480+
4481+#endif // WHISKERMENU_PROFILE_PICTURE_H
4482
4483=== modified file 'panel-plugin/recent-page.cpp'
4484--- panel-plugin/recent-page.cpp 2013-12-29 21:15:12 +0000
4485+++ panel-plugin/recent-page.cpp 2015-02-18 19:37:38 +0000
4486@@ -17,10 +17,14 @@
4487
4488 #include "recent-page.h"
4489
4490+#include "applications-page.h"
4491 #include "launcher.h"
4492 #include "launcher-view.h"
4493 #include "settings.h"
4494 #include "slot.h"
4495+#include "window.h"
4496+
4497+#include <algorithm>
4498
4499 #include <glib/gi18n-lib.h>
4500
4501@@ -29,19 +33,25 @@
4502 //-----------------------------------------------------------------------------
4503
4504 RecentPage::RecentPage(Window* window) :
4505- ListPage(wm_settings->recent, window),
4506- m_max_items(10)
4507+ Page(window)
4508 {
4509 // Prevent going over max
4510- if (wm_settings->recent.size() > m_max_items)
4511+ if (wm_settings->recent.size() > wm_settings->recent_items_max)
4512 {
4513- wm_settings->recent.erase(wm_settings->recent.begin() + m_max_items, wm_settings->recent.end());
4514+ wm_settings->recent.erase(wm_settings->recent.begin() + wm_settings->recent_items_max, wm_settings->recent.end());
4515 wm_settings->set_modified();
4516 }
4517 }
4518
4519 //-----------------------------------------------------------------------------
4520
4521+RecentPage::~RecentPage()
4522+{
4523+ unset_menu_items();
4524+}
4525+
4526+//-----------------------------------------------------------------------------
4527+
4528 void RecentPage::add(Launcher* launcher)
4529 {
4530 if (!launcher)
4531@@ -49,15 +59,30 @@
4532 return;
4533 }
4534
4535- // Skip if already first launcher
4536- if (!wm_settings->recent.empty() && (wm_settings->recent.front() == launcher->get_desktop_id()))
4537+ std::string desktop_id = launcher->get_desktop_id();
4538+ if (!wm_settings->recent.empty())
4539 {
4540- return;
4541+ std::vector<std::string>::iterator i = std::find(wm_settings->recent.begin(), wm_settings->recent.end(), desktop_id);
4542+
4543+ // Skip if already first launcher
4544+ if (i == wm_settings->recent.begin())
4545+ {
4546+ return;
4547+ }
4548+ // Move to front if already in list
4549+ else if (i != wm_settings->recent.end())
4550+ {
4551+ GtkTreeModel* model = get_view()->get_model();
4552+ GtkTreeIter iter;
4553+ gtk_tree_model_iter_nth_child(model, &iter, NULL, std::distance(wm_settings->recent.begin(), i));
4554+ gtk_list_store_move_after(GTK_LIST_STORE(model), &iter, NULL);
4555+ wm_settings->recent.erase(i);
4556+ wm_settings->recent.insert(wm_settings->recent.begin(), desktop_id);
4557+ wm_settings->set_modified();
4558+ return;
4559+ }
4560 }
4561
4562- // Remove item if already in list
4563- remove(launcher);
4564-
4565 // Prepend to list of items
4566 GtkListStore* store = GTK_LIST_STORE(get_view()->get_model());
4567 gtk_list_store_insert_with_values(
4568@@ -66,16 +91,51 @@
4569 LauncherView::COLUMN_TEXT, launcher->get_text(),
4570 LauncherView::COLUMN_LAUNCHER, launcher,
4571 -1);
4572+ wm_settings->recent.insert(wm_settings->recent.begin(), desktop_id);
4573+ wm_settings->set_modified();
4574
4575 // Prevent going over max
4576- while (wm_settings->recent.size() > m_max_items)
4577+ enforce_item_count();
4578+}
4579+
4580+//-----------------------------------------------------------------------------
4581+
4582+void RecentPage::enforce_item_count()
4583+{
4584+ if (wm_settings->recent_items_max >= wm_settings->recent.size())
4585+ {
4586+ return;
4587+ }
4588+
4589+ GtkListStore* store = GTK_LIST_STORE(get_view()->get_model());
4590+ for (size_t i = wm_settings->recent.size() - 1, end = wm_settings->recent_items_max; i >= end; --i)
4591 {
4592 GtkTreeIter iter;
4593- if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, wm_settings->recent.size() - 1))
4594+ if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, i))
4595 {
4596 gtk_list_store_remove(store, &iter);
4597 }
4598 }
4599+
4600+ wm_settings->recent.erase(wm_settings->recent.begin() + wm_settings->recent_items_max, wm_settings->recent.end());
4601+ wm_settings->set_modified();
4602+}
4603+
4604+//-----------------------------------------------------------------------------
4605+
4606+void RecentPage::set_menu_items()
4607+{
4608+ GtkTreeModel* model = get_window()->get_applications()->create_launcher_model(wm_settings->recent);
4609+ get_view()->set_model(model);
4610+ g_object_unref(model);
4611+}
4612+
4613+//-----------------------------------------------------------------------------
4614+
4615+void RecentPage::unset_menu_items()
4616+{
4617+ // Clear treeview
4618+ get_view()->unset_model();
4619 }
4620
4621 //-----------------------------------------------------------------------------
4622@@ -97,6 +157,8 @@
4623 void RecentPage::clear_menu()
4624 {
4625 gtk_list_store_clear(GTK_LIST_STORE(get_view()->get_model()));
4626+ wm_settings->recent.clear();
4627+ wm_settings->set_modified();
4628 }
4629
4630 //-----------------------------------------------------------------------------
4631
4632=== modified file 'panel-plugin/recent-page.h'
4633--- panel-plugin/recent-page.h 2013-12-29 21:15:12 +0000
4634+++ panel-plugin/recent-page.h 2015-02-18 19:37:38 +0000
4635@@ -18,24 +18,25 @@
4636 #ifndef WHISKERMENU_RECENT_PAGE_H
4637 #define WHISKERMENU_RECENT_PAGE_H
4638
4639-#include "list-page.h"
4640+#include "page.h"
4641
4642 namespace WhiskerMenu
4643 {
4644
4645-class RecentPage : public ListPage
4646+class RecentPage : public Page
4647 {
4648 public:
4649 RecentPage(Window* window);
4650+ ~RecentPage();
4651
4652 void add(Launcher* launcher);
4653+ void enforce_item_count();
4654+ void set_menu_items();
4655+ void unset_menu_items();
4656
4657 private:
4658 void extend_context_menu(GtkWidget* menu);
4659 void clear_menu();
4660-
4661-private:
4662- size_t m_max_items;
4663 };
4664
4665 }
4666
4667=== modified file 'panel-plugin/resizer-widget.cpp'
4668--- panel-plugin/resizer-widget.cpp 2013-12-29 21:15:12 +0000
4669+++ panel-plugin/resizer-widget.cpp 2015-02-18 19:37:38 +0000
4670@@ -17,6 +17,7 @@
4671
4672 #include "resizer-widget.h"
4673
4674+#include "settings.h"
4675 #include "slot.h"
4676
4677 using namespace WhiskerMenu;
4678@@ -26,7 +27,8 @@
4679 ResizerWidget::ResizerWidget(GtkWindow* window) :
4680 m_window(window),
4681 m_cursor(NULL),
4682- m_shape(3)
4683+ m_shape(3),
4684+ m_supports_alpha(false)
4685 {
4686 m_alignment = GTK_ALIGNMENT(gtk_alignment_new(1,0,0,0));
4687
4688@@ -39,6 +41,9 @@
4689 g_signal_connect_slot(m_drawing, "enter-notify-event", &ResizerWidget::on_enter_notify_event, this);
4690 g_signal_connect_slot(m_drawing, "leave-notify-event", &ResizerWidget::on_leave_notify_event, this);
4691 g_signal_connect_slot(m_drawing, "expose-event", &ResizerWidget::on_expose_event, this);
4692+ g_signal_connect_slot(m_window, "screen-changed", &ResizerWidget::on_screen_changed_event, this);
4693+ on_screen_changed_event(GTK_WIDGET(m_drawing), NULL);
4694+
4695
4696 set_corner(TopRight);
4697 }
4698@@ -135,11 +140,40 @@
4699
4700 //-----------------------------------------------------------------------------
4701
4702+void ResizerWidget::on_screen_changed_event(GtkWidget* widget, GdkScreen*)
4703+{
4704+ GdkScreen* screen = gtk_widget_get_screen(widget);
4705+ GdkColormap* colormap = gdk_screen_get_rgba_colormap(screen);
4706+ if (!colormap)
4707+ {
4708+ colormap = gdk_screen_get_system_colormap(screen);
4709+ m_supports_alpha = false;
4710+ }
4711+ else
4712+ {
4713+ m_supports_alpha = true;
4714+ }
4715+ gtk_widget_set_colormap(widget, colormap);
4716+}
4717+
4718+//-----------------------------------------------------------------------------
4719+
4720 gboolean ResizerWidget::on_expose_event(GtkWidget* widget, GdkEvent*)
4721 {
4722 cairo_t* cr = gdk_cairo_create(gtk_widget_get_window(widget));
4723
4724 GtkStyle* style = gtk_widget_get_style(widget);
4725+
4726+ // Draw semi-transparent background to match window
4727+ if (m_supports_alpha)
4728+ {
4729+ const GdkColor& color = style->bg[GTK_STATE_NORMAL];
4730+ cairo_set_source_rgba(cr, color.red / 65535.0, color.green / 65535.0, color.blue / 65535.0, wm_settings->menu_opacity / 100.0);
4731+ cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
4732+ cairo_paint(cr);
4733+ }
4734+
4735+ // Draw resize triangle
4736 const GdkColor& color = style->text_aa[gtk_widget_get_state(widget)];
4737 cairo_set_source_rgb(cr, color.red / 65535.0, color.green / 65535.0, color.blue / 65535.0);
4738
4739
4740=== modified file 'panel-plugin/resizer-widget.h'
4741--- panel-plugin/resizer-widget.h 2013-12-29 21:15:12 +0000
4742+++ panel-plugin/resizer-widget.h 2015-02-18 19:37:38 +0000
4743@@ -49,6 +49,7 @@
4744 gboolean on_button_press_event(GtkWidget*, GdkEvent* event);
4745 gboolean on_enter_notify_event(GtkWidget* widget, GdkEvent*);
4746 gboolean on_leave_notify_event(GtkWidget* widget, GdkEvent*);
4747+ void on_screen_changed_event(GtkWidget* widget, GdkScreen* old_screen);
4748 gboolean on_expose_event(GtkWidget* widget, GdkEvent*);
4749
4750 private:
4751@@ -58,6 +59,7 @@
4752 GdkCursor* m_cursor;
4753 GdkWindowEdge m_edge;
4754 std::vector<GdkPoint> m_shape;
4755+ bool m_supports_alpha;
4756 };
4757
4758 }
4759
4760=== modified file 'panel-plugin/search-page.cpp'
4761--- panel-plugin/search-page.cpp 2014-10-14 06:39:57 +0000
4762+++ panel-plugin/search-page.cpp 2015-02-18 19:37:38 +0000
4763@@ -38,7 +38,8 @@
4764 get_view()->set_selection_mode(GTK_SELECTION_BROWSE);
4765
4766 g_signal_connect_slot(window->get_search_entry(), "icon-release", &SearchPage::clear_search, this);
4767- g_signal_connect_slot(window->get_search_entry(), "key-press-event", &SearchPage::search_entry_key_press, this);
4768+ g_signal_connect_slot(window->get_search_entry(), "key-press-event", &SearchPage::cancel_search, this);
4769+ g_signal_connect_slot<GtkEntry*>(window->get_search_entry(), "activate", &SearchPage::activate_search, this);
4770 }
4771
4772 //-----------------------------------------------------------------------------
4773@@ -184,6 +185,18 @@
4774
4775 //-----------------------------------------------------------------------------
4776
4777+void SearchPage::activate_search()
4778+{
4779+ GtkTreePath* path = get_view()->get_selected_path();
4780+ if (path)
4781+ {
4782+ get_view()->activate_path(path);
4783+ gtk_tree_path_free(path);
4784+ }
4785+}
4786+
4787+//-----------------------------------------------------------------------------
4788+
4789 void SearchPage::clear_search(GtkEntry* entry, GtkEntryIconPosition icon_pos, GdkEvent*)
4790 {
4791 if (icon_pos == GTK_ENTRY_ICON_SECONDARY)
4792@@ -194,7 +207,7 @@
4793
4794 //-----------------------------------------------------------------------------
4795
4796-gboolean SearchPage::search_entry_key_press(GtkWidget* widget, GdkEvent* event)
4797+gboolean SearchPage::cancel_search(GtkWidget* widget, GdkEvent* event)
4798 {
4799 GdkEventKey* key_event = reinterpret_cast<GdkEventKey*>(event);
4800 if (key_event->keyval == GDK_Escape)
4801@@ -211,16 +224,6 @@
4802 return false;
4803 }
4804 }
4805- else if (key_event->keyval == GDK_Return || key_event->keyval == GDK_KP_Enter)
4806- {
4807- GtkTreePath* path = get_view()->get_selected_path();
4808- if (path)
4809- {
4810- get_view()->activate_path(path);
4811- gtk_tree_path_free(path);
4812- }
4813- return true;
4814- }
4815
4816 return false;
4817 }
4818
4819=== modified file 'panel-plugin/search-page.h'
4820--- panel-plugin/search-page.h 2013-12-29 21:15:12 +0000
4821+++ panel-plugin/search-page.h 2015-02-18 19:37:38 +0000
4822@@ -39,8 +39,9 @@
4823 void unset_menu_items();
4824
4825 private:
4826+ void activate_search();
4827 void clear_search(GtkEntry* entry, GtkEntryIconPosition icon_pos, GdkEvent*);
4828- gboolean search_entry_key_press(GtkWidget* widget, GdkEvent* event);
4829+ gboolean cancel_search(GtkWidget* widget, GdkEvent* event);
4830
4831 private:
4832 Query m_query;
4833
4834=== modified file 'panel-plugin/settings.cpp'
4835--- panel-plugin/settings.cpp 2015-01-08 07:09:23 +0000
4836+++ panel-plugin/settings.cpp 2015-02-18 19:37:38 +0000
4837@@ -1,5 +1,5 @@
4838 /*
4839- * Copyright (C) 2013 Graeme Gott <graeme@gottcode.org>
4840+ * Copyright (C) 2013, 2104 Graeme Gott <graeme@gottcode.org>
4841 *
4842 * This library is free software; you can redistribute it and/or modify
4843 * it under the terms of the GNU General Public License as published by
4844@@ -37,7 +37,8 @@
4845 { "command-lockscreen", "show-command-lockscreen" },
4846 { "command-switchuser", "show-command-switchuser" },
4847 { "command-logout", "show-command-logout" },
4848- { "command-menueditor", "show-command-menueditor" }
4849+ { "command-menueditor", "show-command-menueditor" },
4850+ { "command-profile", "show-command-profile" }
4851 };
4852
4853 //-----------------------------------------------------------------------------
4854@@ -85,7 +86,7 @@
4855 button_icon_name("xfce4-whiskermenu"),
4856 button_title_visible(false),
4857 button_icon_visible(true),
4858- button_single_row(false),
4859+ button_single_row(false),
4860
4861 launcher_show_name(true),
4862 launcher_show_description(true),
4863@@ -95,15 +96,18 @@
4864 category_icon_size(IconSize::Smaller),
4865
4866 load_hierarchy(false),
4867+
4868+ recent_items_max(10),
4869 favorites_in_recent(true),
4870-
4871 display_recent(false),
4872+
4873 position_search_alternate(false),
4874 position_commands_alternate(false),
4875 position_categories_alternate(false),
4876
4877 menu_width(400),
4878- menu_height(500)
4879+ menu_height(500),
4880+ menu_opacity(100)
4881 {
4882 favorites.push_back("exo-terminal-emulator.desktop");
4883 favorites.push_back("exo-file-manager.desktop");
4884@@ -115,6 +119,7 @@
4885 command[CommandSwitchUser] = new Command("system-users", _("Switch _Users"), "dm-tool switch-to-greeter", _("Failed to switch users."));
4886 command[CommandLogOut] = new Command("system-log-out", _("Log _Out"), "xfce4-session-logout", _("Failed to log out."));
4887 command[CommandMenuEditor] = new Command("xfce4-menueditor", _("_Edit Applications"), "menulibre", _("Failed to launch menu editor."));
4888+ command[CommandProfile] = new Command("avatar-default", _("Edit _Profile"), "mugshot", _("Failed to edit profile."));
4889
4890 search_actions.push_back(new SearchAction(_("Man Pages"), "#", "exo-open --launch TerminalEmulator man %s", false, true));
4891 search_actions.push_back(new SearchAction(_("Wikipedia"), "!w", "exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u", false, true));
4892@@ -173,15 +178,18 @@
4893 category_icon_size = xfce_rc_read_int_entry(rc, "category-icon-size", category_icon_size);
4894
4895 load_hierarchy = xfce_rc_read_bool_entry(rc, "load-hierarchy", load_hierarchy);
4896+
4897+ recent_items_max = std::max(5, xfce_rc_read_int_entry(rc, "recent-items-max", recent_items_max));
4898 favorites_in_recent = xfce_rc_read_bool_entry(rc, "favorites-in-recent", favorites_in_recent);
4899-
4900 display_recent = xfce_rc_read_bool_entry(rc, "display-recent-default", display_recent);
4901+
4902 position_search_alternate = xfce_rc_read_bool_entry(rc, "position-search-alternate", position_search_alternate);
4903 position_commands_alternate = xfce_rc_read_bool_entry(rc, "position-commands-alternate", position_commands_alternate) && position_search_alternate;
4904 position_categories_alternate = xfce_rc_read_bool_entry(rc, "position-categories-alternate", position_categories_alternate);
4905
4906 menu_width = std::max(300, xfce_rc_read_int_entry(rc, "menu-width", menu_width));
4907 menu_height = std::max(400, xfce_rc_read_int_entry(rc, "menu-height", menu_height));
4908+ menu_opacity = std::min(100, std::max(0, xfce_rc_read_int_entry(rc, "menu-opacity", menu_height)));
4909
4910 for (int i = 0; i < CountCommands; ++i)
4911 {
4912@@ -266,15 +274,18 @@
4913 xfce_rc_write_int_entry(rc, "category-icon-size", category_icon_size);
4914
4915 xfce_rc_write_bool_entry(rc, "load-hierarchy", load_hierarchy);
4916+
4917+ xfce_rc_write_int_entry(rc, "recent-items-max", recent_items_max);
4918 xfce_rc_write_bool_entry(rc, "favorites-in-recent", favorites_in_recent);
4919-
4920 xfce_rc_write_bool_entry(rc, "display-recent-default", display_recent);
4921+
4922 xfce_rc_write_bool_entry(rc, "position-search-alternate", position_search_alternate);
4923 xfce_rc_write_bool_entry(rc, "position-commands-alternate", position_commands_alternate);
4924 xfce_rc_write_bool_entry(rc, "position-categories-alternate", position_categories_alternate);
4925
4926 xfce_rc_write_int_entry(rc, "menu-width", menu_width);
4927 xfce_rc_write_int_entry(rc, "menu-height", menu_height);
4928+ xfce_rc_write_int_entry(rc, "menu-opacity", menu_opacity);
4929
4930 for (int i = 0; i < CountCommands; ++i)
4931 {
4932
4933=== modified file 'panel-plugin/settings.h'
4934--- panel-plugin/settings.h 2014-10-14 06:39:57 +0000
4935+++ panel-plugin/settings.h 2015-02-18 19:37:38 +0000
4936@@ -1,5 +1,5 @@
4937 /*
4938- * Copyright (C) 2013 Graeme Gott <graeme@gottcode.org>
4939+ * Copyright (C) 2013, 2014 Graeme Gott <graeme@gottcode.org>
4940 *
4941 * This library is free software; you can redistribute it and/or modify
4942 * it under the terms of the GNU General Public License as published by
4943@@ -73,9 +73,11 @@
4944 IconSize category_icon_size;
4945
4946 bool load_hierarchy;
4947+
4948+ unsigned int recent_items_max;
4949 bool favorites_in_recent;
4950-
4951 bool display_recent;
4952+
4953 bool position_search_alternate;
4954 bool position_commands_alternate;
4955 bool position_categories_alternate;
4956@@ -87,6 +89,7 @@
4957 CommandSwitchUser,
4958 CommandLogOut,
4959 CommandMenuEditor,
4960+ CommandProfile,
4961 CountCommands
4962 };
4963 Command* command[CountCommands];
4964@@ -95,6 +98,7 @@
4965
4966 int menu_width;
4967 int menu_height;
4968+ int menu_opacity;
4969
4970 friend class Plugin;
4971 };
4972
4973=== modified file 'panel-plugin/slot.h'
4974--- panel-plugin/slot.h 2014-01-17 21:53:17 +0000
4975+++ panel-plugin/slot.h 2015-02-18 19:37:38 +0000
4976@@ -251,7 +251,7 @@
4977 class Slot
4978 {
4979 T* m_instance;
4980- R (T::*m_member)(A1,A2,A3);
4981+ R (T::*m_member)(A1,A2,A3,A4);
4982
4983 public:
4984 Slot(T* instance, R (T::*member)(A1,A2,A3,A4)) :
4985
4986=== modified file 'panel-plugin/window.cpp'
4987--- panel-plugin/window.cpp 2015-02-15 06:11:51 +0000
4988+++ panel-plugin/window.cpp 2015-02-18 19:37:38 +0000
4989@@ -21,6 +21,7 @@
4990 #include "command.h"
4991 #include "favorites-page.h"
4992 #include "launcher-view.h"
4993+#include "profile-picture.h"
4994 #include "recent-page.h"
4995 #include "resizer-widget.h"
4996 #include "search-page.h"
4997@@ -38,12 +39,13 @@
4998
4999 //-----------------------------------------------------------------------------
5000
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: