balsa r7843 - in trunk: . src



Author: PeterB
Date: Fri Feb  8 19:31:30 2008
New Revision: 7843
URL: http://svn.gnome.org/viewvc/balsa?rev=7843&view=rev

Log:
restore hidden separator, and clean up

Modified:
   trunk/ChangeLog
   trunk/src/balsa-message.c

Modified: trunk/src/balsa-message.c
==============================================================================
--- trunk/src/balsa-message.c	(original)
+++ trunk/src/balsa-message.c	Fri Feb  8 19:31:30 2008
@@ -372,9 +372,46 @@
  * Callbacks and helpers for the find bar.
  */
 
+typedef enum {
+    BM_FIND_STATUS_INIT,
+    BM_FIND_STATUS_FOUND,
+    BM_FIND_STATUS_WRAPPED,
+    BM_FIND_STATUS_NOT_FOUND
+} BalsaMessageFindStatus;
+
+static void
+bm_find_set_status(BalsaMessage * bm, BalsaMessageFindStatus status)
+{
+    const gchar *text = "";
+    gboolean sensitive = FALSE;
+
+    switch (status) {
+        default:
+        case BM_FIND_STATUS_INIT:
+            break;
+        case BM_FIND_STATUS_FOUND:
+            sensitive = TRUE;
+            break;
+        case BM_FIND_STATUS_WRAPPED:
+            text = _("Wrapped");
+            sensitive = TRUE;
+            break;
+        case BM_FIND_STATUS_NOT_FOUND:
+            text = _("Not found");
+            break;
+    }
+
+    gtk_label_set_text(GTK_LABEL(bm->find_label), text);
+    gtk_separator_tool_item_set_draw(GTK_SEPARATOR_TOOL_ITEM
+                                     (bm->find_sep), text[0] != '\0');
+    gtk_widget_set_sensitive(bm->find_prev, sensitive);
+    gtk_widget_set_sensitive(bm->find_next, sensitive);
+}
+
 static void
-bm_scroll_to_iter(BalsaMessage * bm, GtkTextView * text_view,
-                  GtkTextIter * iter)
+bm_find_scroll_to_iter(BalsaMessage * bm,
+                       GtkTextView  * text_view,
+                       GtkTextIter  * iter)
 {
     GtkAdjustment *adj = GTK_VIEWPORT(bm->cont_viewport)->vadjustment;
     GdkRectangle location;
@@ -398,11 +435,11 @@
 static void
 bm_find_entry_changed_cb(GtkEditable * editable, gpointer data)
 {
-    GtkEntry *entry = GTK_ENTRY(editable);
-    const gchar *text = gtk_entry_get_text(entry);
+    const gchar *text = gtk_entry_get_text(GTK_ENTRY(editable));
     BalsaMessage *bm = data;
-    GtkWidget *w = bm->current_part->mime_widget->widget;
-    GtkTextBuffer *buffer = gtk_text_view_get_buffer((GtkTextView *) w);
+    GtkTextView *text_view =
+        GTK_TEXT_VIEW(bm->current_part->mime_widget->widget);
+    GtkTextBuffer *buffer = gtk_text_view_get_buffer(text_view);
     GtkTextIter match_begin, match_end;
     gboolean found;
 
@@ -431,31 +468,22 @@
     }
 
     if (found) {
-#if CAN_HIDE_SEPARATOR_WITHOUT_TRIGGERING_CRITICAL_WARNINGS
-        gtk_widget_hide(bm->find_sep);
-#endif
-        gtk_widget_hide(bm->find_label);
-        gtk_widget_set_sensitive(bm->find_prev, TRUE);
-        gtk_widget_set_sensitive(bm->find_next, TRUE);
         gtk_text_buffer_select_range(buffer, &match_begin, &match_end);
-        bm_scroll_to_iter(bm, (GtkTextView *) w, &match_begin);
+        bm_find_scroll_to_iter(bm, text_view, &match_begin);
         bm->find_iter = match_begin;
-    } else {
-        gtk_label_set_text(GTK_LABEL(bm->find_label), _("Not found"));
-        gtk_widget_show(bm->find_sep);
-        gtk_widget_show(bm->find_label);
-        gtk_widget_set_sensitive(bm->find_prev, FALSE);
-        gtk_widget_set_sensitive(bm->find_next, FALSE);
     }
+    bm_find_set_status(bm, found ?
+                       BM_FIND_STATUS_FOUND : BM_FIND_STATUS_NOT_FOUND);
 }
 
 static void
 bm_find_again(BalsaMessage * bm, gboolean find_forward)
 {
     const gchar *text = gtk_entry_get_text(GTK_ENTRY(bm->find_entry));
+    GtkTextView *text_view =
+        GTK_TEXT_VIEW(bm->current_part->mime_widget->widget);
+    GtkTextBuffer *buffer = gtk_text_view_get_buffer(text_view);
     GtkTextIter match_begin, match_end;
-    GtkWidget *w = bm->current_part->mime_widget->widget;
-    GtkTextBuffer *buffer = gtk_text_view_get_buffer((GtkTextView *) w);
     gboolean found;
 
     if (find_forward) {
@@ -470,12 +498,7 @@
                                               NULL);
     }
 
-    if (found) {
-#if CAN_HIDE_SEPARATOR_WITHOUT_TRIGGERING_CRITICAL_WARNINGS
-        gtk_widget_hide(bm->find_sep);
-#endif
-        gtk_widget_hide(bm->find_label);
-    } else {
+    if (!found) {
         if (find_forward) {
             gtk_text_buffer_get_start_iter(buffer, &bm->find_iter);
             gtk_text_iter_forward_search(&bm->find_iter, text, 0,
@@ -485,14 +508,12 @@
             gtk_text_iter_backward_search(&bm->find_iter, text, 0,
                                           &match_begin, &match_end, NULL);
         }
-        gtk_label_set_text(GTK_LABEL(bm->find_label),
-                           _("Wrapped"));
-        gtk_widget_show(bm->find_sep);
-        gtk_widget_show(bm->find_label);
     }
+    bm_find_set_status(bm, found ?
+                       BM_FIND_STATUS_FOUND : BM_FIND_STATUS_WRAPPED);
 
     gtk_text_buffer_select_range(buffer, &match_begin, &match_end);
-    bm_scroll_to_iter(bm, (GtkTextView *) w, &match_begin);
+    bm_find_scroll_to_iter(bm, text_view, &match_begin);
     bm->find_iter = match_begin;
     bm->find_forward = find_forward;
 }
@@ -560,10 +581,10 @@
     return toolbar;
 }
 
-static gboolean bm_disable_find_entry(BalsaMessage * bm);
+static void bm_disable_find_entry(BalsaMessage * bm);
 
 static gboolean
-bm_pass_to_find_entry(BalsaMessage * bm, GdkEventKey * event)
+bm_find_pass_to_entry(BalsaMessage * bm, GdkEventKey * event)
 {
     gboolean res = TRUE;
 
@@ -591,15 +612,13 @@
     return res;
 }
 
-static gboolean
+static void
 bm_disable_find_entry(BalsaMessage * bm)
 {
     g_signal_handlers_disconnect_by_func
         (gtk_widget_get_toplevel(GTK_WIDGET(bm)),
-         G_CALLBACK(bm_pass_to_find_entry), bm);
+         G_CALLBACK(bm_find_pass_to_entry), bm);
     gtk_widget_hide(bm->find_bar);
-
-    return FALSE;
 }
 
 /*
@@ -3121,22 +3140,17 @@
     if (bm->current_part
         && (w = bm->current_part->mime_widget->widget)
         && GTK_IS_TEXT_VIEW(w)) {
-        GtkTextBuffer *buffer = gtk_text_view_get_buffer((GtkTextView *) w);
+        GtkTextView *text_view = (GtkTextView *) w;
+        GtkTextBuffer *buffer = gtk_text_view_get_buffer(text_view);
 
         bm->find_forward = TRUE;
         gtk_text_buffer_get_start_iter(buffer, &bm->find_iter);
         gtk_entry_set_text(GTK_ENTRY(bm->find_entry), "");
         g_signal_connect_swapped(gtk_widget_get_toplevel(GTK_WIDGET(bm)),
                                  "key-press-event",
-                                 G_CALLBACK(bm_pass_to_find_entry), bm);
-
-#if CAN_HIDE_SEPARATOR_WITHOUT_TRIGGERING_CRITICAL_WARNINGS
-        gtk_widget_hide(bm->find_sep);
-#endif
-        gtk_widget_hide(bm->find_label);
+                                 G_CALLBACK(bm_find_pass_to_entry), bm);
 
-        gtk_widget_set_sensitive(bm->find_prev, FALSE);
-        gtk_widget_set_sensitive(bm->find_next, FALSE);
+        bm_find_set_status(bm, BM_FIND_STATUS_INIT);
 
         gtk_widget_show(bm->find_bar);
         gtk_widget_grab_focus(bm->find_entry);



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