[Xfce4-commits] <design:master> Disable completion in expanded view.

Nick Schermer noreply at xfce.org
Sat Jun 4 18:56:01 CEST 2011


Updating branch refs/heads/master
         to 35a2ac670e98fc991545b857355f68cf5e5c5f20 (commit)
       from efac5ae419cb9e11435c949c0bc2ee33a0fd2a15 (commit)

commit 35a2ac670e98fc991545b857355f68cf5e5c5f20
Author: Nick Schermer <nick at xfce.org>
Date:   Sat Jun 4 18:55:01 2011 +0200

    Disable completion in expanded view.

 .../demo-code/c/appfinder-window.c                 |   22 ++++++++++++++-----
 1 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/xfce4-appfinder/merge-with-xfrun/demo-code/c/appfinder-window.c b/xfce4-appfinder/merge-with-xfrun/demo-code/c/appfinder-window.c
index 0a51a4b..558c748 100644
--- a/xfce4-appfinder/merge-with-xfrun/demo-code/c/appfinder-window.c
+++ b/xfce4-appfinder/merge-with-xfrun/demo-code/c/appfinder-window.c
@@ -60,6 +60,8 @@ struct _XfceAppfinderWindow
 
   XfceAppfinderCategoryModel *category_model;
 
+  GtkEntryCompletion *completion;
+
   GtkWidget *paned;
   GtkWidget *entry;
   GtkWidget *image;
@@ -168,14 +170,12 @@ xfce_appfinder_window_init (XfceAppfinderWindow *window)
   gtk_entry_set_icon_tooltip_text (GTK_ENTRY (window->entry), GTK_ENTRY_ICON_SECONDARY, _("Toggle view mode"));
   gtk_widget_show (entry);
 
-  completion = gtk_entry_completion_new ();
+  window->completion = completion = gtk_entry_completion_new ();
   gtk_entry_completion_set_model (completion, GTK_TREE_MODEL (window->model));
   gtk_entry_completion_set_text_column (completion, XFCE_APPFINDER_MODEL_COLUMN_COMMAND);
   gtk_entry_completion_set_popup_completion (completion, TRUE);
   gtk_entry_completion_set_popup_single_match (completion, FALSE);
   gtk_entry_completion_set_inline_completion (completion, TRUE);
-  gtk_entry_set_completion (GTK_ENTRY (entry), completion);
-  g_object_unref (G_OBJECT (completion));
 
   window->bin_collapsed = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
   gtk_box_pack_start (GTK_BOX (vbox2), window->bin_collapsed, FALSE, TRUE, 0);
@@ -294,6 +294,7 @@ xfce_appfinder_window_finalize (GObject *object)
 
   g_object_unref (G_OBJECT (window->model));
   g_object_unref (G_OBJECT (window->category_model));
+  g_object_unref (G_OBJECT (window->completion));
 
   (*G_OBJECT_CLASS (xfce_appfinder_window_parent_class)->finalize) (object);
 }
@@ -624,9 +625,10 @@ void
 xfce_appfinder_window_set_expanded (XfceAppfinderWindow *window,
                                     gboolean             expanded)
 {
-  GdkGeometry  hints;
-  gint         width;
-  GtkWidget   *parent;
+  GdkGeometry         hints;
+  gint                width;
+  GtkWidget          *parent;
+  GtkEntryCompletion *completion;
 
   g_message ("set expand = %s", expanded ? "true" : "false");
 
@@ -668,6 +670,14 @@ xfce_appfinder_window_set_expanded (XfceAppfinderWindow *window,
                                      expanded ? GTK_STOCK_GO_UP : GTK_STOCK_GO_DOWN);
   gtk_entry_set_icon_from_icon_name (GTK_ENTRY (window->entry), GTK_ENTRY_ICON_PRIMARY, NULL);
 
+  /* update completion (remove completed text of restart completion) */
+  completion = gtk_entry_get_completion (GTK_ENTRY (window->entry));
+  if (completion != NULL)
+    gtk_editable_delete_selection (GTK_EDITABLE (window->entry));
+  gtk_entry_set_completion (GTK_ENTRY (window->entry), expanded ? NULL : window->completion);
+  if (!expanded)
+    gtk_entry_completion_insert_prefix (window->completion);
+
   /* update state */
   xfce_appfinder_window_entry_changed (window);
   xfce_appfinder_window_item_changed (window);



More information about the Xfce4-commits mailing list