Fixed searching with VISIBLE_ONLY

master
Yevgen Muntyan 2007-04-08 14:26:24 -05:00
parent 6f27adb6fa
commit bc1c177cf9
2 changed files with 39 additions and 19 deletions

View File

@ -26,7 +26,7 @@
</ignoreparts>
<projectdirectory>.</projectdirectory>
<absoluteprojectpath>false</absoluteprojectpath>
<description></description>
<description/>
<secondaryLanguages>
<language>C</language>
</secondaryLanguages>
@ -35,7 +35,7 @@
<kdevautoproject>
<general>
<activetarget>moo/libmoo.la</activetarget>
<useconfiguration>debug</useconfiguration>
<useconfiguration>gtk-cvs</useconfiguration>
</general>
<run>
<mainprogram>medit/medit</mainprogram>
@ -246,10 +246,10 @@
<breakonloadinglibs>true</breakonloadinglibs>
<separatetty>false</separatetty>
<floatingtoolbar>true</floatingtoolbar>
<gdbpath></gdbpath>
<configGdbScript></configGdbScript>
<runShellScript></runShellScript>
<runGdbScript></runGdbScript>
<gdbpath/>
<configGdbScript/>
<runShellScript/>
<runGdbScript/>
</general>
<display>
<staticmembers>true</staticmembers>
@ -311,16 +311,16 @@
</kdevdoctreeview>
<kdevfilecreate>
<filetypes>
<type icon="source" ext="g" create="template" name="GAP source" >
<type icon="source" ext="g" name="GAP source" create="template" >
<descr>A new empty GAP source file</descr>
</type>
<type icon="source_cpp" ext="cpp" create="template" name="C++ Source" >
<type icon="source_cpp" ext="cpp" name="C++ Source" create="template" >
<descr>A new empty C++ file.</descr>
</type>
<type icon="source_h" ext="h" create="template" name="C/C++ Header" >
<type icon="source_h" ext="h" name="C/C++ Header" create="template" >
<descr>A new empty header file for C/C++.</descr>
</type>
<type icon="source_c" ext="c" create="template" name="C Source" >
<type icon="source_c" ext="c" name="C Source" create="template" >
<descr>A new empty C file.</descr>
</type>
</filetypes>
@ -347,7 +347,7 @@
</codecompletion>
<references/>
<creategettersetter>
<prefixGet></prefixGet>
<prefixGet/>
<prefixSet>set</prefixSet>
<prefixVariable>m_,_</prefixVariable>
<parameterName>theValue</parameterName>
@ -357,7 +357,7 @@
<qt>
<used>false</used>
<version>3</version>
<root></root>
<root/>
</qt>
</kdevcppsupport>
<kdevdocumentation>

View File

@ -227,6 +227,25 @@ finally_2:
return ret;
}
/* FIXME: total horror */
static gboolean
char_is_invisible (const GtkTextIter *iter)
{
GSList *tags;
gboolean invisible = FALSE;
tags = gtk_text_iter_get_tags (iter);
while (tags)
{
gboolean this_invisible, invisible_set;
g_object_get (tags->data, "invisible", &this_invisible,
"invisible-set", &invisible_set, NULL);
if (invisible_set)
invisible = this_invisible;
tags = g_slist_delete_link (tags, tags);
}
return invisible;
}
static void
forward_chars_with_skipping (GtkTextIter *iter,
gint count,
@ -253,8 +272,9 @@ forward_chars_with_skipping (GtkTextIter *iter,
if (skip_nontext && gtk_text_iter_get_char (iter) == GTK_TEXT_UNKNOWN_CHAR)
ignored = TRUE;
if (!ignored && skip_invisible &&
/* _gtk_text_btree_char_is_invisible (iter)*/ FALSE)
/* FIXME: char_is_invisible() gets list of tags for each char there,
and checks every tag. It doesn't sound like a good idea. */
if (!ignored && skip_invisible && char_is_invisible (iter))
ignored = TRUE;
if (!ignored && skip_decomp)
@ -476,9 +496,9 @@ backward_lines_match (const GtkTextIter *start,
/* strsplit () that retains the delimiter as part of the string. */
static gchar **
strbreakup (const char *string,
const char *delimiter,
gint max_tokens)
breakup_string (const char *string,
const char *delimiter,
gint max_tokens)
{
GSList *string_list = NULL, *slist;
gchar **str_array, *s, *casefold, *new_string;
@ -619,7 +639,7 @@ gtk_source_iter_forward_search (const GtkTextIter *iter,
slice = (flags & GTK_SOURCE_SEARCH_TEXT_ONLY) == 0;
/* locate all lines */
lines = strbreakup (str, "\n", -1);
lines = breakup_string (str, "\n", -1);
search = *iter;
@ -722,7 +742,7 @@ gtk_source_iter_backward_search (const GtkTextIter *iter,
slice = (flags & GTK_SOURCE_SEARCH_TEXT_ONLY) == 0;
/* locate all lines */
lines = strbreakup (str, "\n", -1);
lines = breakup_string (str, "\n", -1);
search = *iter;