[Xfce4-commits] <mousepad:master> * mousepad/mousepad-document.c: Fix segfault from previous commit. * mousepad/mousepad-document.c: Fix bug in searching backwards, we have to jump one iter backwards before searching, because we start with the character right from the first iter. Also removed the equal check because it's not needed and only causing problems with backwards searching on the first character in the buffer.

Nick Schermer noreply at xfce.org
Sat May 5 21:30:16 CEST 2012


Updating branch refs/heads/master
         to fe666120450ea8df11059d60c0bcdb806d3d5426 (commit)
       from 7b33a930bf6efc2c879dbb304e6ee0fd4adb2b5a (commit)

commit fe666120450ea8df11059d60c0bcdb806d3d5426
Author: Nick Schermer <nick at xfce.org>
Date:   Fri Apr 6 19:06:59 2007 +0000

    	* mousepad/mousepad-document.c: Fix segfault from previous commit.
    	* mousepad/mousepad-document.c: Fix bug in searching backwards, we have to
    	  jump one iter backwards before searching, because we start with the
    	  character right from the first iter. Also removed the equal check because
    	  it's not needed and only causing problems with backwards searching on the
    	  first character in the buffer.
    
    (Old svn revision: 25405)

 ChangeLog                    |    9 ++++++++
 mousepad/mousepad-document.c |   47 +++++++++++++++--------------------------
 2 files changed, 26 insertions(+), 30 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 6102442..f4f4ef9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,13 @@
 2007-04-06	Nick Schermer <nick at xfce.org>
+	* mousepad/mousepad-document.c: Fix segfault from previous commit.
+	* mousepad/mousepad-document.c: Fix bug in searching backwards, we have to
+	  jump one iter backwards before searching, because we start with the
+	  character right from the first iter. Also removed the equal check because
+	  it's not needed and only causing problems with backwards searching on the
+	  first character in the buffer.
+
+
+2007-04-06	Nick Schermer <nick at xfce.org>
 	* mousepad/mousepad-window.c: Fix opening recent files that do not exist.
 	* mousepad/mousepad-window.c, mousepad/mousepad-document.c: Update the window
 	  title correctly and remove the unused notify::title signals.
diff --git a/mousepad/mousepad-document.c b/mousepad/mousepad-document.c
index f64d418..5802f1c 100644
--- a/mousepad/mousepad-document.c
+++ b/mousepad/mousepad-document.c
@@ -68,7 +68,6 @@ static gboolean  mousepad_document_iter_search             (const GtkTextIter
                                                             MousepadSearchFlags     flags,
                                                             GtkTextIter            *match_start,
                                                             GtkTextIter            *match_end,
-                                                            const GtkTextIter      *limit,
                                                             gboolean                forward_search);
 static void      mousepad_document_update_tab              (MousepadDocument       *document);
 static void      mousepad_document_tab_button_clicked      (GtkWidget              *widget,
@@ -473,7 +472,8 @@ mousepad_document_set_filename (MousepadDocument *document,
   document->display_name = g_filename_display_basename (filename);
 
   /* update the tab label and tooltip */
-  mousepad_document_update_tab (document);
+  if (document->ebox && document->label)
+    mousepad_document_update_tab (document);
 }
 
 
@@ -598,7 +598,6 @@ mousepad_document_iter_search (const GtkTextIter   *start,
                                MousepadSearchFlags  flags,
                                GtkTextIter         *match_start,
                                GtkTextIter         *match_end,
-                               const GtkTextIter   *limit,
                                gboolean             search_forward)
 {
   GtkTextIter iter, begin;
@@ -608,7 +607,6 @@ mousepad_document_iter_search (const GtkTextIter   *start,
   guint       str_offset = 0;
 
   _mousepad_return_val_if_fail (start != NULL, FALSE);
-  _mousepad_return_val_if_fail (limit != NULL, FALSE);
 
   /* set the start iter */
   iter = *start;
@@ -616,10 +614,6 @@ mousepad_document_iter_search (const GtkTextIter   *start,
   /* walk from the start to the end iter */
   do
     {
-      /* break when we hit the search limit */
-      if (G_UNLIKELY (gtk_text_iter_equal (&iter, limit)))
-        break;
-
       /* get the characters we're going to compare */
       iter_char = gtk_text_iter_get_char (&iter);
       str_char  = g_utf8_get_char (str);
@@ -694,7 +688,7 @@ mousepad_document_find (MousepadDocument    *document,
   GtkTextIter  doc_start, doc_end;
   GtkTextIter  sel_start, sel_end;
   GtkTextIter  match_start, match_end;
-  GtkTextIter  start, end;
+  GtkTextIter  start;
 
   _mousepad_return_val_if_fail (MOUSEPAD_IS_DOCUMENT (document), FALSE);
   _mousepad_return_val_if_fail (GTK_IS_TEXT_BUFFER (document->buffer), FALSE);
@@ -708,28 +702,27 @@ mousepad_document_find (MousepadDocument    *document,
   if (flags & MOUSEPAD_SEARCH_FORWARDS)
     {
       start = sel_end;
-      end   = doc_end;
     }
-  else if (flags & MOUSEPAD_SEARCH_BACKWARDS)
+  else
     {
       start = sel_start;
-      end   = doc_start;
 
-      /* reverse the search string */
-      reversed = g_utf8_strreverse (string, -1);
-    }
-  else /* type-ahead */
-    {
-      start = sel_start;
-      end   = doc_end;
+      if (flags & MOUSEPAD_SEARCH_BACKWARDS)
+        {
+          /* the character is right of the iter, go one iter backwards */
+          gtk_text_iter_backward_char (&start);
+
+          /* reverse the search string */
+          reversed = g_utf8_strreverse (string, -1);
+        }
     }
 
 search:
   /* try to find the next occurence of the string */
   if (flags & MOUSEPAD_SEARCH_BACKWARDS)
-    found = mousepad_document_iter_search (&start, reversed, flags, &match_start, &match_end, &end, FALSE);
+    found = mousepad_document_iter_search (&start, reversed, flags, &match_start, &match_end, FALSE);
   else
-    found = mousepad_document_iter_search (&start, string, flags, &match_start, &match_end, &end, TRUE);
+    found = mousepad_document_iter_search (&start, string, flags, &match_start, &match_end, TRUE);
 
   /* select the occurence */
   if (found)
@@ -748,15 +741,9 @@ search:
     {
       /* set the new start and end iter */
       if (flags & MOUSEPAD_SEARCH_BACKWARDS)
-        {
-          end   = start;
-          start = doc_end;
-        }
+        start = doc_end;
       else
-        {
-          end   = start;
-          start = doc_start;
-        }
+        start = doc_start;
 
       /* set we did the wrap, so we don't end up in a loop */
       already_wrapped = TRUE;
@@ -818,7 +805,7 @@ mousepad_document_highlight_all (MousepadDocument    *document,
       do
         {
           /* search for the next occurence of the string */
-          found = mousepad_document_iter_search (&iter, string, flags, &match_start, &match_end, &doc_end, TRUE);
+          found = mousepad_document_iter_search (&iter, string, flags, &match_start, &match_end, TRUE);
 
           if (G_LIKELY (found))
             {


More information about the Xfce4-commits mailing list