SF.net SVN: geany: [964] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Fri Nov 3 15:09:26 UTC 2006
Revision: 964
http://svn.sourceforge.net/geany/?rev=964&view=rev
Author: ntrel
Date: 2006-11-03 07:09:13 -0800 (Fri, 03 Nov 2006)
Log Message:
-----------
Scroll matching selection to 1/3 of the view when searching.
Add sci_scroll_to_line(); remove sci_goto_line_scroll().
Show 'not found' message on status bar also when enter is pressed in
the search bar.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/callbacks.c
trunk/src/document.c
trunk/src/document.h
trunk/src/keybindings.c
trunk/src/sci_cb.c
trunk/src/sciwrappers.c
trunk/src/sciwrappers.h
trunk/src/search.c
trunk/src/utils.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2006-11-03 15:03:57 UTC (rev 963)
+++ trunk/ChangeLog 2006-11-03 15:09:13 UTC (rev 964)
@@ -3,6 +3,14 @@
* src/msgwindow.c:
Don't set error indicators when clicking on an error message if the
document has been modified.
+ * src/notebook.c: Focus the current document after clicking on a tab.
+ * src/utils.c, src/keybindings.c, src/callbacks.c, src/sci_cb.c,
+ src/sciwrappers.c, src/search.c, src/sciwrappers.h, src/document.c,
+ src/document.h:
+ Scroll matching selection to 1/3 of the view when searching.
+ Add sci_scroll_to_line(); remove sci_goto_line_scroll().
+ Show 'not found' message on status bar also when enter is pressed in
+ the search bar.
2006-11-02 Enrico Tröger <enrico.troeger at uvena.de>
Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c 2006-11-03 15:03:57 UTC (rev 963)
+++ trunk/src/callbacks.c 2006-11-03 15:09:13 UTC (rev 964)
@@ -547,7 +547,7 @@
gint idx = document_get_cur_idx();
setup_find_next(GTK_EDITABLE(entry));
- document_search_bar_find(idx, search_data.text, 0, FALSE, FALSE);
+ document_search_bar_find(idx, search_data.text, 0, FALSE);
}
@@ -559,7 +559,7 @@
gint idx = document_get_cur_idx();
setup_find_next(editable);
- document_search_bar_find(idx, search_data.text, 0, FALSE, TRUE);
+ document_search_bar_find(idx, search_data.text, 0, TRUE);
}
@@ -573,7 +573,7 @@
GtkWidget *entry = lookup_widget(GTK_WIDGET(app->window), "entry1");
setup_find_next(GTK_EDITABLE(entry));
- document_search_bar_find(idx, search_data.text, 0, TRUE, FALSE);
+ document_search_bar_find(idx, search_data.text, 0, FALSE);
}
@@ -1303,7 +1303,8 @@
if (search_data.text)
{
- document_find_text(idx, search_data.text, search_data.flags, search_data.backwards);
+ document_find_text(idx, search_data.text, search_data.flags,
+ search_data.backwards, TRUE);
}
}
@@ -1320,7 +1321,8 @@
utils_beep(); //Can't reverse search order for a regex (find next ignores search backwards)
else
{
- document_find_text(idx, search_data.text, search_data.flags, !search_data.backwards);
+ document_find_text(idx, search_data.text, search_data.flags,
+ !search_data.backwards, TRUE);
}
}
Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c 2006-11-03 15:03:57 UTC (rev 963)
+++ trunk/src/document.c 2006-11-03 15:09:13 UTC (rev 964)
@@ -710,7 +710,8 @@
if (cl_options.goto_line >= 0)
{ // goto line which was specified on command line and then undefine the line
- sci_goto_line_scroll(doc_list[idx].sci, cl_options.goto_line - 1, 0.25);
+ sci_goto_line(doc_list[idx].sci, cl_options.goto_line - 1, TRUE);
+ sci_scroll_to_line(doc_list[idx].sci, -1, 0.5);
cl_options.goto_line = -1;
}
else if (pos >= 0)
@@ -912,8 +913,7 @@
/* special search function, used from the find entry in the toolbar */
-void document_search_bar_find(gint idx, const gchar *text, gint flags, gboolean find_button,
- gboolean inc)
+void document_search_bar_find(gint idx, const gchar *text, gint flags, gboolean inc)
{
gint start_pos, search_pos;
struct TextToFind ttf;
@@ -942,11 +942,11 @@
{
sci_set_selection_start(doc_list[idx].sci, ttf.chrgText.cpMin);
sci_set_selection_end(doc_list[idx].sci, ttf.chrgText.cpMax);
- sci_scroll_caret(doc_list[idx].sci);
+ sci_scroll_to_line(doc_list[idx].sci, -1, 0.3);
}
else
{
- if (find_button)
+ if (! inc)
{
gchar *msg = g_strdup_printf(_("\"%s\" was not found."), text);
ui_set_statusbar(msg, FALSE);
@@ -961,7 +961,8 @@
/* General search function, used from the find dialog.
* Returns -1 on failure or the start position of the matching text.
* Will skip past any selection, ignoring it. */
-gint document_find_text(gint idx, const gchar *text, gint flags, gboolean search_backwards)
+gint document_find_text(gint idx, const gchar *text, gint flags, gboolean search_backwards,
+ gboolean scroll)
{
gint selection_end, selection_start, search_pos;
@@ -988,7 +989,8 @@
if (search_pos != -1)
{
- sci_scroll_caret(doc_list[idx].sci);
+ if (scroll)
+ sci_scroll_to_line(doc_list[idx].sci, -1, 0.3);
}
else
{
@@ -1012,7 +1014,7 @@
{
gint ret;
sci_goto_pos(doc_list[idx].sci, (search_backwards) ? sci_len : 0, TRUE);
- ret = document_find_text(idx, text, flags, search_backwards);
+ ret = document_find_text(idx, text, flags, search_backwards, scroll);
if (ret == -1) // return to original cursor position if not found
sci_goto_pos(doc_list[idx].sci, selection_end, FALSE);
return ret;
@@ -1040,7 +1042,7 @@
if (selection_end == selection_start)
{
// no selection so just find the next match
- document_find_text(idx, find_text, flags, search_backwards);
+ document_find_text(idx, find_text, flags, search_backwards, TRUE);
return -1;
}
// there's a selection so go to the start before finding to search through it
@@ -1050,7 +1052,7 @@
else
sci_goto_pos(doc_list[idx].sci, selection_start, TRUE);
- search_pos = document_find_text(idx, find_text, flags, search_backwards);
+ search_pos = document_find_text(idx, find_text, flags, search_backwards, TRUE);
// return if the original selected text did not match (at the start of the selection)
if (search_pos != selection_start) return -1;
Modified: trunk/src/document.h
===================================================================
--- trunk/src/document.h 2006-11-03 15:03:57 UTC (rev 963)
+++ trunk/src/document.h 2006-11-03 15:09:13 UTC (rev 964)
@@ -139,12 +139,12 @@
gboolean document_save_file(gint idx, gboolean force);
/* special search function, used from the find entry in the toolbar */
-void document_search_bar_find(gint idx, const gchar *text, gint flags, gboolean find_button,
- gboolean inc);
+void document_search_bar_find(gint idx, const gchar *text, gint flags, gboolean inc);
/* General search function, used from the find dialog.
* Returns -1 on failure or the start position of the matching text. */
-gint document_find_text(gint idx, const gchar *text, gint flags, gboolean search_backwards);
+gint document_find_text(gint idx, const gchar *text, gint flags, gboolean search_backwards,
+ gboolean scroll);
gint document_replace_text(gint idx, const gchar *find_text, const gchar *replace_text,
gint flags, gboolean search_backwards);
Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c 2006-11-03 15:03:57 UTC (rev 963)
+++ trunk/src/keybindings.c 2006-11-03 15:09:13 UTC (rev 964)
@@ -721,9 +721,8 @@
new_pos = sci_find_bracematch(doc_list[idx].sci, pos);
if (new_pos != -1)
{
- gint line = sci_get_line_from_position(doc_list[idx].sci, new_pos);
- sci_goto_line_scroll(doc_list[idx].sci, line, 0.5);
- sci_goto_pos(doc_list[idx].sci, new_pos, FALSE); // set also the cursor the brace
+ sci_goto_pos(doc_list[idx].sci, new_pos, TRUE); // set the cursor at the brace
+ sci_scroll_to_line(doc_list[idx].sci, -1, 0.5);
}
}
Modified: trunk/src/sci_cb.c
===================================================================
--- trunk/src/sci_cb.c 2006-11-03 15:03:57 UTC (rev 963)
+++ trunk/src/sci_cb.c 2006-11-03 15:09:13 UTC (rev 964)
@@ -1195,7 +1195,7 @@
if (idx == -1 || ! doc_list[idx].is_valid || doc_list[idx].file_type == NULL) return;
// remove comment open chars
- pos = document_find_text(idx, doc_list[idx].file_type->comment_open, 0, TRUE);
+ pos = document_find_text(idx, doc_list[idx].file_type->comment_open, 0, TRUE, FALSE);
SSM(doc_list[idx].sci, SCI_DELETEBACK, 0, 0);
// check whether the line is empty and can be deleted
@@ -1208,7 +1208,7 @@
g_free(linebuf);
// remove comment close chars
- pos = document_find_text(idx, doc_list[idx].file_type->comment_close, 0, FALSE);
+ pos = document_find_text(idx, doc_list[idx].file_type->comment_close, 0, FALSE, FALSE);
SSM(doc_list[idx].sci, SCI_DELETEBACK, 0, 0);
// check whether the line is empty and can be deleted
Modified: trunk/src/sciwrappers.c
===================================================================
--- trunk/src/sciwrappers.c 2006-11-03 15:03:57 UTC (rev 963)
+++ trunk/src/sciwrappers.c 2006-11-03 15:09:13 UTC (rev 964)
@@ -666,6 +666,31 @@
}
+void sci_scroll_lines(ScintillaObject *sci, gint lines)
+{
+ SSM(sci, SCI_LINESCROLL, 0, lines);
+}
+
+
+/* Scroll the view to make line appear at percent_of_view.
+ * line can be -1 to use the current position. */
+void sci_scroll_to_line(ScintillaObject *sci, gint line, gfloat percent_of_view)
+{
+ gint vis1, los, delta;
+
+ if (line == -1)
+ line = sci_get_current_line(sci, -1);
+
+ // sci 'visible line' != file line number
+ vis1 = SSM(sci, SCI_GETFIRSTVISIBLELINE, 0, 0);
+ vis1 = SSM(sci, SCI_DOCLINEFROMVISIBLE, vis1, 0);
+ los = SSM(sci, SCI_LINESONSCREEN, 0, 0);
+ delta = (line - vis1) - los * percent_of_view;
+ sci_scroll_lines(sci, delta);
+ sci_scroll_caret(sci); //ensure visible, in case of excessive folding/wrapping
+}
+
+
gint sci_search_next(ScintillaObject *sci, gint flags, const gchar *text)
{
return SSM(sci, SCI_SEARCHNEXT, flags, (sptr_t) text );
@@ -698,21 +723,6 @@
}
-void sci_goto_line_scroll(ScintillaObject *sci, gint line, gdouble percent_of_view)
-{
- gint vis1, los, delta;
-
- sci_goto_line(sci, line, TRUE);
- // sci 'visible line' != file line number
- vis1 = SSM(sci, SCI_GETFIRSTVISIBLELINE, 0, 0);
- vis1 = SSM(sci, SCI_DOCLINEFROMVISIBLE, vis1, 0);
- los = SSM(sci, SCI_LINESONSCREEN, 0, 0);
- delta = (line - vis1) - los * percent_of_view;
- sci_scroll_lines(sci, delta);
- sci_scroll_caret(sci); //ensure visible, in case of excessive folding/wrapping
-}
-
-
void sci_marker_delete_all(ScintillaObject *sci, gint marker)
{
SSM(sci, SCI_MARKERDELETEALL, marker, 0);
@@ -812,11 +822,6 @@
SSM(sci, SCI_SETKEYWORDS, k, (sptr_t) text);
}
-void sci_scroll_lines(ScintillaObject *sci, gint lines)
-{
- SSM(sci, SCI_LINESCROLL, 0, lines);
-}
-
void sci_set_readonly(ScintillaObject *sci, gboolean readonly)
{
SSM(sci, SCI_SETREADONLY, readonly, 0);
Modified: trunk/src/sciwrappers.h
===================================================================
--- trunk/src/sciwrappers.h 2006-11-03 15:03:57 UTC (rev 963)
+++ trunk/src/sciwrappers.h 2006-11-03 15:09:13 UTC (rev 964)
@@ -123,12 +123,13 @@
void sci_set_search_anchor (ScintillaObject * sci);
void sci_set_anchor (ScintillaObject * sci, gint pos);
void sci_scroll_caret (ScintillaObject * sci);
+void sci_scroll_lines (ScintillaObject * sci, gint lines);
+void sci_scroll_to_line (ScintillaObject * sci, gint line, gfloat percent_of_view);
gint sci_search_next (ScintillaObject * sci, gint flags, const gchar *text);
gint sci_search_prev (ScintillaObject * sci, gint flags, const gchar *text);
gint sci_find_text (ScintillaObject * sci, gint flags, struct TextToFind *ttf);
void sci_set_font (ScintillaObject * sci, gint style, const gchar* font, gint size);
void sci_goto_line (ScintillaObject * sci, gint line, gboolean ensure_visibility);
-void sci_goto_line_scroll (ScintillaObject * sci, gint line, gdouble percent_of_view);
void sci_marker_delete_all (ScintillaObject * sci, gint marker);
gint sci_get_style_at (ScintillaObject * sci, gint position);
void sci_set_symbol_margin (ScintillaObject * sci, gboolean set);
@@ -147,7 +148,6 @@
void sci_target_end (ScintillaObject * sci, gint end);
gint sci_target_replace (ScintillaObject * sci, const gchar *text, gboolean regex);
void sci_set_keywords (ScintillaObject * sci, gint k, gchar *text);
-void sci_scroll_lines (ScintillaObject * sci, gint lines);
gint sci_get_lexer (ScintillaObject * sci);
void sci_set_readonly (ScintillaObject * sci, gboolean readonly);
gboolean sci_get_readonly (ScintillaObject * sci);
Modified: trunk/src/search.c
===================================================================
--- trunk/src/search.c 2006-11-03 15:03:57 UTC (rev 963)
+++ trunk/src/search.c 2006-11-03 15:09:13 UTC (rev 964)
@@ -753,7 +753,7 @@
case GEANY_RESPONSE_FIND:
case GEANY_RESPONSE_FIND_PREVIOUS:
document_find_text(idx, search_data.text, search_data.flags,
- (response == GEANY_RESPONSE_FIND_PREVIOUS));
+ (response == GEANY_RESPONSE_FIND_PREVIOUS), TRUE);
check_close = FALSE;
break;
@@ -848,7 +848,8 @@
gint rep = document_replace_text(idx, find, replace, search_flags_re,
search_backwards_re);
if (rep != -1)
- document_find_text(idx, find, search_flags_re, search_backwards_re);
+ document_find_text(idx, find, search_flags_re, search_backwards_re,
+ TRUE);
break;
}
case GEANY_RESPONSE_REPLACE:
@@ -859,7 +860,7 @@
}
case GEANY_RESPONSE_FIND:
{
- document_find_text(idx, find, search_flags_re, search_backwards_re);
+ document_find_text(idx, find, search_flags_re, search_backwards_re, TRUE);
break;
}
case GEANY_RESPONSE_REPLACE_IN_FILE:
Modified: trunk/src/utils.c
===================================================================
--- trunk/src/utils.c 2006-11-03 15:03:57 UTC (rev 963)
+++ trunk/src/utils.c 2006-11-03 15:09:13 UTC (rev 964)
@@ -303,7 +303,8 @@
sci_marker_delete_all(doc_list[idx].sci, 0);
sci_set_marker_at_line(doc_list[idx].sci, line, TRUE, 0);
- sci_goto_line_scroll(doc_list[idx].sci, line, 0.25);
+ sci_goto_line(doc_list[idx].sci, line, TRUE);
+ sci_scroll_to_line(doc_list[idx].sci, -1, 0.25);
// finally switch to the page
page_num = gtk_notebook_page_num(GTK_NOTEBOOK(app->notebook), GTK_WIDGET(doc_list[idx].sci));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list