[Xfce4-commits] [panel-plugins/xfce4-whiskermenu-plugin] 05/09: Use GtkStack for search results.

noreply at xfce.org noreply at xfce.org
Sun Apr 15 01:13:24 CEST 2018


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 de987e553e5fe6ba0ae680fdd92e96c2d0157ef7
Author: Graeme Gott <graeme at gottcode.org>
Date:   Tue Oct 24 11:00:56 2017 -0400

    Use GtkStack for search results.
---
 panel-plugin/window.cpp | 40 +++++++++++++++++++++++++---------------
 panel-plugin/window.h   |  4 ++++
 2 files changed, 29 insertions(+), 15 deletions(-)

diff --git a/panel-plugin/window.cpp b/panel-plugin/window.cpp
index 2a6da0f..7e84460 100644
--- a/panel-plugin/window.cpp
+++ b/panel-plugin/window.cpp
@@ -84,6 +84,8 @@ static void ungrab_pointer()
 
 WhiskerMenu::Window::Window() :
 	m_window(NULL),
+	m_search_cover(GTK_STACK_TRANSITION_TYPE_OVER_DOWN),
+	m_search_uncover(GTK_STACK_TRANSITION_TYPE_UNDER_UP),
 	m_sidebar_size_group(NULL),
 	m_layout_left(true),
 	m_layout_bottom(true),
@@ -215,9 +217,11 @@ WhiskerMenu::Window::Window() :
 	gtk_box_pack_start(m_search_box, GTK_WIDGET(m_search_entry), true, true, 0);
 
 	// Create box for packing launcher pages and sidebar
+	m_contents_stack = GTK_STACK(gtk_stack_new());
 	m_contents_box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6));
-	gtk_box_pack_start(m_vbox, GTK_WIDGET(m_contents_box), true, true, 0);
-	gtk_box_pack_start(m_contents_box, m_search_results->get_widget(), true, true, 0);
+	gtk_stack_add_named(m_contents_stack, GTK_WIDGET(m_contents_box), "contents");
+	gtk_stack_add_named(m_contents_stack, m_search_results->get_widget(), "search");
+	gtk_box_pack_start(m_vbox, GTK_WIDGET(m_contents_stack), true, true, 0);
 
 	// Create box for packing launcher pages
 	m_panels_stack = GTK_STACK(gtk_stack_new());
@@ -245,9 +249,7 @@ WhiskerMenu::Window::Window() :
 
 	// Show widgets
 	gtk_widget_show_all(frame);
-	gtk_widget_hide(m_search_results->get_widget());
 	m_default_button->set_active(true);
-	gtk_widget_show(frame);
 
 	// Resize to last known size
 	gtk_window_set_default_size(m_window, m_geometry.width, m_geometry.height);
@@ -593,26 +595,38 @@ void WhiskerMenu::Window::show(GtkWidget* parent, bool horizontal)
 		if (m_layout_bottom && m_layout_search_alternate)
 		{
 			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_title_box), 0);
-			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_box), 1);
+			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_stack), 1);
 			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_search_box), 2);
+
+			m_search_cover = GTK_STACK_TRANSITION_TYPE_OVER_UP;
+			m_search_uncover = GTK_STACK_TRANSITION_TYPE_UNDER_DOWN;
 		}
 		else if (m_layout_search_alternate)
 		{
 			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_title_box), 2);
-			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_box), 1);
+			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_stack), 1);
 			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_search_box), 0);
+
+			m_search_cover = GTK_STACK_TRANSITION_TYPE_OVER_DOWN;
+			m_search_uncover = GTK_STACK_TRANSITION_TYPE_UNDER_UP;
 		}
 		else if (m_layout_bottom)
 		{
 			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_title_box), 0);
 			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_search_box), 1);
-			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_box), 2);
+			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_stack), 2);
+
+			m_search_cover = GTK_STACK_TRANSITION_TYPE_OVER_DOWN;
+			m_search_uncover = GTK_STACK_TRANSITION_TYPE_UNDER_UP;
 		}
 		else
 		{
 			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_title_box), 2);
 			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_search_box), 1);
-			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_box), 0);
+			gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_stack), 0);
+
+			m_search_cover = GTK_STACK_TRANSITION_TYPE_OVER_UP;
+			m_search_uncover = GTK_STACK_TRANSITION_TYPE_UNDER_DOWN;
 		}
 	}
 
@@ -746,7 +760,7 @@ gboolean WhiskerMenu::Window::on_key_press_event(GtkWidget* widget, GdkEvent* ev
 	}
 
 	Page* page = NULL;
-	if (gtk_widget_get_visible(m_search_results->get_widget()))
+	if (gtk_stack_get_visible_child(m_contents_stack) == m_search_results->get_widget())
 	{
 		page = m_search_results;
 	}
@@ -975,16 +989,12 @@ void WhiskerMenu::Window::search()
 	if (visible)
 	{
 		// Show search results
-		gtk_widget_hide(GTK_WIDGET(m_sidebar));
-		gtk_widget_hide(GTK_WIDGET(m_panels_stack));
-		gtk_widget_show(m_search_results->get_widget());
+		gtk_stack_set_visible_child_full(m_contents_stack, "search", m_search_cover);
 	}
 	else
 	{
 		// Show active panel
-		gtk_widget_hide(m_search_results->get_widget());
-		gtk_widget_show(GTK_WIDGET(m_panels_stack));
-		gtk_widget_show(GTK_WIDGET(m_sidebar));
+		gtk_stack_set_visible_child_full(m_contents_stack, "contents", m_search_uncover);
 	}
 
 	// Apply filter
diff --git a/panel-plugin/window.h b/panel-plugin/window.h
index 66d1654..8789ec0 100644
--- a/panel-plugin/window.h
+++ b/panel-plugin/window.h
@@ -98,9 +98,13 @@ private:
 	GtkBox* m_title_box;
 	GtkBox* m_commands_box;
 	GtkBox* m_search_box;
+	GtkStack* m_contents_stack;
 	GtkBox* m_contents_box;
 	GtkStack* m_panels_stack;
 
+	GtkStackTransitionType m_search_cover;
+	GtkStackTransitionType m_search_uncover;
+
 	ProfilePicture* m_profilepic;
 	GtkLabel* m_username;
 	ResizerWidget* m_resizer;

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


More information about the Xfce4-commits mailing list