[glabels] Follow focus when setting sensitivity of selection verbs



commit 520ea9f42482012404000e7eebe436c94bca4440
Author: Jim Evins <evins snaught com>
Date:   Thu Dec 3 21:31:24 2009 -0500

    Follow focus when setting sensitivity of selection verbs
    
    The previous commit did not completely work right.  Selection verb
    sensitivity now follows the focus of the glView widget.

 src/ui.c     |    6 +++---
 src/ui.h     |    3 ++-
 src/window.c |   20 ++++++++++++--------
 3 files changed, 17 insertions(+), 12 deletions(-)
---
diff --git a/src/ui.c b/src/ui.c
index ae190dc..f62231c 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -862,13 +862,13 @@ gl_ui_update_modified_verbs (GtkUIManager *ui,
 /*****************************************************************************/
 void
 gl_ui_update_selection_verbs (GtkUIManager *ui,
-			      glView       *view)
+			      glView       *view,
+                              gboolean      has_focus)
 {
 	gl_debug (DEBUG_UI, "START");
 
-        if ( gtk_widget_has_focus (GTK_WIDGET (view->canvas)) )
+        if ( has_focus )
         {
-
                 gl_ui_util_set_verb_list_sensitive (ui, selection_verbs,
                                                     !gl_label_is_selection_empty (view->label));
 
diff --git a/src/ui.h b/src/ui.h
index 81f3667..f6db062 100644
--- a/src/ui.h
+++ b/src/ui.h
@@ -43,7 +43,8 @@ void          gl_ui_update_modified_verbs  (GtkUIManager      *ui,
 					    glLabel           *label);
 
 void          gl_ui_update_selection_verbs (GtkUIManager      *ui,
-					    glView            *view);
+					    glView            *view,
+                                            gboolean           has_focus);
 
 void          gl_ui_update_zoom_verbs      (GtkUIManager      *ui,
 					    glView            *view);
diff --git a/src/window.c b/src/window.c
index 7a7f7a6..c989660 100644
--- a/src/window.c
+++ b/src/window.c
@@ -102,8 +102,8 @@ static void     focus_widget_changed_cb(GtkWindow     *gtk_window,
                                         GtkWidget     *widget,
 					glWindow      *window);
 
-static void     set_paste_sensitivity  (glWindow      *window,
-                                        GtkWidget     *focus_widget);
+static void     set_copy_paste_sensitivity  (glWindow      *window,
+                                             GtkWidget     *focus_widget);
 
 
 /****************************************************************************/
@@ -441,7 +441,7 @@ gl_window_set_label (glWindow    *window,
 
         /* Initialize "Paste" sensitivity. */
         focus_widget = gtk_window_get_focus (GTK_WINDOW (window));
-        set_paste_sensitivity (window, focus_widget);
+        set_copy_paste_sensitivity (window, focus_widget);
 
 	gl_debug (DEBUG_WINDOW, "END");
 }
@@ -523,7 +523,7 @@ selection_changed_cb (glLabel  *label,
 	g_return_if_fail (label && GL_IS_LABEL (label));
 	g_return_if_fail (window && GL_IS_WINDOW (window));
 
-        gl_ui_update_selection_verbs (window->ui, GL_VIEW (window->view));
+        gl_ui_update_selection_verbs (window->ui, GL_VIEW (window->view), TRUE);
 
 	gl_debug (DEBUG_WINDOW, "END");
 }
@@ -688,7 +688,7 @@ clipboard_changed_cb (GtkClipboard *clipboard,
 	g_return_if_fail (window && GL_IS_WINDOW (window));
 
         focus_widget = gtk_window_get_focus (GTK_WINDOW (window));
-        set_paste_sensitivity (window, focus_widget);
+        set_copy_paste_sensitivity (window, focus_widget);
 
 	gl_debug (DEBUG_WINDOW, "END");
 }
@@ -712,7 +712,7 @@ focus_widget_changed_cb (GtkWindow *gtk_window,
                           widget,
                           G_OBJECT_TYPE_NAME (widget));
 
-                set_paste_sensitivity (window, widget);
+                set_copy_paste_sensitivity (window, widget);
         }
 
 	gl_debug (DEBUG_WINDOW, "END");
@@ -723,8 +723,8 @@ focus_widget_changed_cb (GtkWindow *gtk_window,
 /** PRIVATE.  Set paste sensitivity.                                         */
 /*---------------------------------------------------------------------------*/
 static void
-set_paste_sensitivity (glWindow  *window,
-                       GtkWidget *focus_widget)
+set_copy_paste_sensitivity (glWindow  *window,
+                            GtkWidget *focus_widget)
 {
         GtkClipboard *glabels_clipboard;
 
@@ -737,11 +737,15 @@ set_paste_sensitivity (glWindow  *window,
 
         if ( focus_widget == GL_VIEW(window->view)->canvas )
         {
+                gl_ui_update_selection_verbs (window->ui, GL_VIEW (window->view), TRUE);
+
                 gl_ui_update_paste_verbs (window->ui,
                                           gtk_clipboard_wait_is_text_available (glabels_clipboard));
+
         }
         else
         {
+                gl_ui_update_selection_verbs (window->ui, GL_VIEW (window->view), FALSE);
                 gl_ui_update_paste_verbs (window->ui, FALSE);
         }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]