[Xfce4-commits] [panel-plugins/xfce4-whiskermenu-plugin] 01/01: Add searching keywords of menu items. (bug #15047)

noreply at xfce.org noreply at xfce.org
Tue Jul 23 14:08:53 CEST 2019


This is an automated email from the git hooks/post-receive script.

g   o   t   t   c   o   d   e       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository panel-plugins/xfce4-whiskermenu-plugin.

commit 31520361e35846b6a25f1fb99155b44a2fac80d7
Author: Graeme Gott <graeme at gottcode.org>
Date:   Fri Jan 18 05:53:15 2019 -0500

    Add searching keywords of menu items. (bug #15047)
---
 panel-plugin/launcher.cpp | 27 +++++++++++++++++++++++++--
 panel-plugin/launcher.h   |  3 ++-
 2 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/panel-plugin/launcher.cpp b/panel-plugin/launcher.cpp
index 7d164a5..07fe961 100644
--- a/panel-plugin/launcher.cpp
+++ b/panel-plugin/launcher.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013, 2014, 2015, 2016 Graeme Gott <graeme at gottcode.org>
+ * Copyright (C) 2013, 2014, 2015, 2016, 2019 Graeme Gott <graeme at gottcode.org>
  *
  * This library is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -179,6 +179,19 @@ Launcher::Launcher(GarconMenuItem* item) :
 	m_search_generic_name = normalize(generic_name);
 	m_search_comment = normalize(details);
 
+	// Create search text for keywords
+#if GARCON_CHECK_VERSION(0,6,2)
+	GList* keywords = garcon_menu_item_get_keywords(m_item);
+	for (GList* i = keywords; i != NULL; i = i->next)
+	{
+		const gchar* keyword = reinterpret_cast<gchar*>(i->data);
+		if (!exo_str_is_empty(keyword) && g_utf8_validate(keyword, -1, NULL))
+		{
+			m_search_keywords.push_back(normalize(keyword));
+		}
+	}
+#endif
+
 	// Create search text for command
 	const gchar* command = garcon_menu_item_get_command(m_item);
 	if (!exo_str_is_empty(command) && g_utf8_validate(command, -1, NULL))
@@ -391,11 +404,21 @@ guint Launcher::search(const Query& query)
 		return match | flags | 0x1000;
 	}
 
+	// Sort matches in keywords next
+	for (std::vector<std::string>::size_type i = 0, end = m_search_keywords.size(); i < end; ++i)
+	{
+		match = query.match(m_search_keywords[i]);
+		if (match != G_MAXUINT)
+		{
+			return match | flags | 0x2000;
+		}
+	}
+
 	// Sort matches in executables last
 	match = query.match(m_search_command);
 	if (match != G_MAXUINT)
 	{
-		return match | flags | 0x2000;
+		return match | flags | 0x4000;
 	}
 
 	return G_MAXUINT;
diff --git a/panel-plugin/launcher.h b/panel-plugin/launcher.h
index d94218e..09e171f 100644
--- a/panel-plugin/launcher.h
+++ b/panel-plugin/launcher.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013, 2015, 2016 Graeme Gott <graeme at gottcode.org>
+ * Copyright (C) 2013, 2015, 2016, 2019 Graeme Gott <graeme at gottcode.org>
  *
  * This library is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -137,6 +137,7 @@ private:
 	std::string m_search_generic_name;
 	std::string m_search_comment;
 	std::string m_search_command;
+	std::vector<std::string> m_search_keywords;
 	guint m_search_flags;
 	std::vector<DesktopAction*> m_actions;
 };

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list