Revision: 2720 http://geany.svn.sourceforge.net/geany/?rev=2720&view=rev Author: ntrel Date: 2008-06-20 10:10:51 -0700 (Fri, 20 Jun 2008)
Log Message: ----------- Move on_editor_expose_event(), create_new_sci() to editor.c. Make on_editor_button_press_event() and on_editor_scroll_event() static.
Modified Paths: -------------- trunk/ChangeLog trunk/src/document.c trunk/src/editor.c trunk/src/editor.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2008-06-20 14:19:57 UTC (rev 2719) +++ trunk/ChangeLog 2008-06-20 17:10:51 UTC (rev 2720) @@ -12,6 +12,10 @@ * src/callbacks.c, src/keyfile.c, src/document.c, src/document.h, src/main.c, src/socket.c: Remove document_delay_colourise(), document_colourise_all(). + * src/document.c, src/editor.c, src/editor.h: + Move on_editor_expose_event(), create_new_sci() to editor.c. + Make on_editor_button_press_event() and on_editor_scroll_event() + static.
2008-06-19 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/src/document.c =================================================================== --- trunk/src/document.c 2008-06-20 14:19:57 UTC (rev 2719) +++ trunk/src/document.c 2008-06-20 17:10:51 UTC (rev 2720) @@ -65,7 +65,6 @@ #include "vte.h" #include "build.h" #include "symbols.h" -#include "callbacks.h" #include "geanyobject.h" #include "highlighting.h" #include "navqueue.h" @@ -372,36 +371,6 @@ }
-static void setup_sci_keys(ScintillaObject *sci) -{ - /* disable some Scintilla keybindings to be able to redefine them cleanly */ - sci_clear_cmdkey(sci, 'A' | (SCMOD_CTRL << 16)); /* select all */ - sci_clear_cmdkey(sci, 'D' | (SCMOD_CTRL << 16)); /* duplicate */ - sci_clear_cmdkey(sci, 'T' | (SCMOD_CTRL << 16)); /* line transpose */ - sci_clear_cmdkey(sci, 'T' | (SCMOD_CTRL << 16) | (SCMOD_SHIFT << 16)); /* line copy */ - sci_clear_cmdkey(sci, 'L' | (SCMOD_CTRL << 16)); /* line cut */ - sci_clear_cmdkey(sci, 'L' | (SCMOD_CTRL << 16) | (SCMOD_SHIFT << 16)); /* line delete */ - sci_clear_cmdkey(sci, SCK_UP | (SCMOD_CTRL << 16)); /* scroll line up */ - sci_clear_cmdkey(sci, SCK_DOWN | (SCMOD_CTRL << 16)); /* scroll line down */ - - if (editor_prefs.use_gtk_word_boundaries) - { - /* use GtkEntry-like word boundaries */ - sci_assign_cmdkey(sci, SCK_RIGHT | (SCMOD_CTRL << 16), SCI_WORDRIGHTEND); - sci_assign_cmdkey(sci, SCK_RIGHT | (SCMOD_CTRL << 16) | (SCMOD_SHIFT << 16), SCI_WORDRIGHTENDEXTEND); - sci_assign_cmdkey(sci, SCK_DELETE | (SCMOD_CTRL << 16), SCI_DELWORDRIGHTEND); - } - sci_assign_cmdkey(sci, SCK_UP | (SCMOD_ALT << 16), SCI_LINESCROLLUP); - sci_assign_cmdkey(sci, SCK_DOWN | (SCMOD_ALT << 16), SCI_LINESCROLLDOWN); - sci_assign_cmdkey(sci, SCK_UP | (SCMOD_CTRL << 16), SCI_PARAUP); - sci_assign_cmdkey(sci, SCK_UP | (SCMOD_CTRL << 16) | (SCMOD_SHIFT << 16), SCI_PARAUPEXTEND); - sci_assign_cmdkey(sci, SCK_DOWN | (SCMOD_CTRL << 16), SCI_PARADOWN); - sci_assign_cmdkey(sci, SCK_DOWN | (SCMOD_CTRL << 16) | (SCMOD_SHIFT << 16), SCI_PARADOWNEXTEND); - - sci_clear_cmdkey(sci, SCK_BACK | (SCMOD_ALT << 16)); /* clear Alt-Backspace (Undo) */ -} - - static void queue_colourise(GeanyDocument *doc) { /* Colourise the editor before it is next drawn */ @@ -415,75 +384,6 @@ }
-static void editor_colourise(ScintillaObject *sci) -{ - sci_colourise(sci, 0, -1); - - /* now that the current document is colourised, fold points are now accurate, - * so force an update of the current function/tag. */ - utils_get_current_function(NULL, NULL); - ui_update_statusbar(NULL, -1); -} - - -static gboolean on_editor_expose_event(GtkWidget *widget, GdkEventExpose *event, - gpointer user_data) -{ - GeanyDocument *doc = user_data; - - if (DOCUMENT(doc)->colourise_needed) - { - editor_colourise(doc->sci); - DOCUMENT(doc)->colourise_needed = FALSE; - } - return FALSE; /* propagate event */ -} - - -/* Create new editor (the scintilla widget) */ -static ScintillaObject *create_new_sci(GeanyDocument *doc) -{ - ScintillaObject *sci; - - sci = SCINTILLA(scintilla_new()); - scintilla_set_id(sci, doc->index); - - gtk_widget_show(GTK_WIDGET(sci)); - - sci_set_codepage(sci, SC_CP_UTF8); - /*SSM(sci, SCI_SETWRAPSTARTINDENT, 4, 0);*/ - /* disable scintilla provided popup menu */ - sci_use_popup(sci, FALSE); - - setup_sci_keys(sci); - - sci_set_tab_indents(sci, editor_prefs.use_tab_to_indent); - sci_set_symbol_margin(sci, editor_prefs.show_markers_margin); - sci_set_lines_wrapped(sci, editor_prefs.line_wrapping); - sci_set_scrollbar_mode(sci, editor_prefs.show_scrollbars); - sci_set_caret_policy_x(sci, CARET_JUMPS | CARET_EVEN, 0); - /*sci_set_caret_policy_y(sci, CARET_JUMPS | CARET_EVEN, 0);*/ - SSM(sci, SCI_AUTOCSETSEPARATOR, '\n', 0); - /* (dis)allow scrolling past end of document */ - SSM(sci, SCI_SETENDATLASTLINE, editor_prefs.scroll_stop_at_last_line, 0); - SSM(sci, SCI_SETSCROLLWIDTHTRACKING, 1, 0); - - /* signal for insert-key(works without too, but to update the right status bar) */ - /*g_signal_connect((GtkWidget*) sci, "key-press-event", - G_CALLBACK(keybindings_got_event), GINT_TO_POINTER(new_idx));*/ - /* signal for the popup menu */ - g_signal_connect(G_OBJECT(sci), "button-press-event", - G_CALLBACK(on_editor_button_press_event), doc); - g_signal_connect(G_OBJECT(sci), "scroll-event", - G_CALLBACK(on_editor_scroll_event), doc); - g_signal_connect(G_OBJECT(sci), "motion-notify-event", G_CALLBACK(on_motion_event), NULL); - g_signal_connect(G_OBJECT(sci), "expose-event", - G_CALLBACK(on_editor_expose_event), doc); - - return sci; -} - - /* Creates a new document and editor, adding a tab in the notebook. * @return The index of the created document */ static GeanyDocument *document_create(const gchar *utf8_filename) @@ -516,7 +416,7 @@
this->file_name = g_strdup(utf8_filename);
- this->sci = create_new_sci(this); + this->sci = editor_create_new_sci(this);
document_apply_update_prefs(this);
Modified: trunk/src/editor.c =================================================================== --- trunk/src/editor.c 2008-06-20 14:19:57 UTC (rev 2719) +++ trunk/src/editor.c 2008-06-20 17:10:51 UTC (rev 2720) @@ -46,6 +46,7 @@ #include "utils.h" #include "dialogs.h" #include "symbols.h" +#include "callbacks.h"
/* holds word under the mouse or keyboard cursor */ @@ -79,7 +80,7 @@
/* calls the edit popup menu in the editor */ -gboolean +static gboolean on_editor_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) @@ -3325,7 +3326,8 @@ }
-gboolean on_editor_scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer user_data) +static gboolean +on_editor_scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer user_data) { /* Handle scroll events if Shift or Alt is pressed and scroll whole pages instead of a * few lines only, maybe this could/should be done in Scintilla directly */ @@ -3340,3 +3342,103 @@ }
+static void editor_colourise(ScintillaObject *sci) +{ + sci_colourise(sci, 0, -1); + + /* now that the current document is colourised, fold points are now accurate, + * so force an update of the current function/tag. */ + utils_get_current_function(NULL, NULL); + ui_update_statusbar(NULL, -1); +} + + +static gboolean on_editor_expose_event(GtkWidget *widget, GdkEventExpose *event, + gpointer user_data) +{ + GeanyDocument *doc = user_data; + + if (DOCUMENT(doc)->colourise_needed) + { + editor_colourise(doc->sci); + DOCUMENT(doc)->colourise_needed = FALSE; + } + return FALSE; /* propagate event */ +} + + +static void setup_sci_keys(ScintillaObject *sci) +{ + /* disable some Scintilla keybindings to be able to redefine them cleanly */ + sci_clear_cmdkey(sci, 'A' | (SCMOD_CTRL << 16)); /* select all */ + sci_clear_cmdkey(sci, 'D' | (SCMOD_CTRL << 16)); /* duplicate */ + sci_clear_cmdkey(sci, 'T' | (SCMOD_CTRL << 16)); /* line transpose */ + sci_clear_cmdkey(sci, 'T' | (SCMOD_CTRL << 16) | (SCMOD_SHIFT << 16)); /* line copy */ + sci_clear_cmdkey(sci, 'L' | (SCMOD_CTRL << 16)); /* line cut */ + sci_clear_cmdkey(sci, 'L' | (SCMOD_CTRL << 16) | (SCMOD_SHIFT << 16)); /* line delete */ + sci_clear_cmdkey(sci, SCK_UP | (SCMOD_CTRL << 16)); /* scroll line up */ + sci_clear_cmdkey(sci, SCK_DOWN | (SCMOD_CTRL << 16)); /* scroll line down */ + + if (editor_prefs.use_gtk_word_boundaries) + { + /* use GtkEntry-like word boundaries */ + sci_assign_cmdkey(sci, SCK_RIGHT | (SCMOD_CTRL << 16), SCI_WORDRIGHTEND); + sci_assign_cmdkey(sci, SCK_RIGHT | (SCMOD_CTRL << 16) | (SCMOD_SHIFT << 16), SCI_WORDRIGHTENDEXTEND); + sci_assign_cmdkey(sci, SCK_DELETE | (SCMOD_CTRL << 16), SCI_DELWORDRIGHTEND); + } + sci_assign_cmdkey(sci, SCK_UP | (SCMOD_ALT << 16), SCI_LINESCROLLUP); + sci_assign_cmdkey(sci, SCK_DOWN | (SCMOD_ALT << 16), SCI_LINESCROLLDOWN); + sci_assign_cmdkey(sci, SCK_UP | (SCMOD_CTRL << 16), SCI_PARAUP); + sci_assign_cmdkey(sci, SCK_UP | (SCMOD_CTRL << 16) | (SCMOD_SHIFT << 16), SCI_PARAUPEXTEND); + sci_assign_cmdkey(sci, SCK_DOWN | (SCMOD_CTRL << 16), SCI_PARADOWN); + sci_assign_cmdkey(sci, SCK_DOWN | (SCMOD_CTRL << 16) | (SCMOD_SHIFT << 16), SCI_PARADOWNEXTEND); + + sci_clear_cmdkey(sci, SCK_BACK | (SCMOD_ALT << 16)); /* clear Alt-Backspace (Undo) */ +} + + +/* Create new editor widget (scintilla). + * @note The @c "sci-notify" signal is connected separately. */ +ScintillaObject *editor_create_new_sci(GeanyDocument *doc) +{ + ScintillaObject *sci; + + sci = SCINTILLA(scintilla_new()); + scintilla_set_id(sci, doc->index); + + gtk_widget_show(GTK_WIDGET(sci)); + + sci_set_codepage(sci, SC_CP_UTF8); + /*SSM(sci, SCI_SETWRAPSTARTINDENT, 4, 0);*/ + /* disable scintilla provided popup menu */ + sci_use_popup(sci, FALSE); + + setup_sci_keys(sci); + + sci_set_tab_indents(sci, editor_prefs.use_tab_to_indent); + sci_set_symbol_margin(sci, editor_prefs.show_markers_margin); + sci_set_lines_wrapped(sci, editor_prefs.line_wrapping); + sci_set_scrollbar_mode(sci, editor_prefs.show_scrollbars); + sci_set_caret_policy_x(sci, CARET_JUMPS | CARET_EVEN, 0); + /*sci_set_caret_policy_y(sci, CARET_JUMPS | CARET_EVEN, 0);*/ + SSM(sci, SCI_AUTOCSETSEPARATOR, '\n', 0); + /* (dis)allow scrolling past end of document */ + SSM(sci, SCI_SETENDATLASTLINE, editor_prefs.scroll_stop_at_last_line, 0); + SSM(sci, SCI_SETSCROLLWIDTHTRACKING, 1, 0); + + /* signal for insert-key(works without too, but to update the right status bar) */ + /*g_signal_connect((GtkWidget*) sci, "key-press-event", + G_CALLBACK(keybindings_got_event), GINT_TO_POINTER(new_idx));*/ + /* signal for the popup menu */ + g_signal_connect(G_OBJECT(sci), "button-press-event", + G_CALLBACK(on_editor_button_press_event), doc); + g_signal_connect(G_OBJECT(sci), "scroll-event", + G_CALLBACK(on_editor_scroll_event), doc); + g_signal_connect(G_OBJECT(sci), "motion-notify-event", G_CALLBACK(on_motion_event), NULL); + g_signal_connect(G_OBJECT(sci), "expose-event", + G_CALLBACK(on_editor_expose_event), doc); + + return sci; +} + +
Modified: trunk/src/editor.h =================================================================== --- trunk/src/editor.h 2008-06-20 14:19:57 UTC (rev 2719) +++ trunk/src/editor.h 2008-06-20 17:10:51 UTC (rev 2720) @@ -110,8 +110,7 @@
-gboolean on_editor_button_press_event(GtkWidget *widget, GdkEventButton *event, - gpointer user_data); +ScintillaObject *editor_create_new_sci(GeanyDocument *doc);
void on_editor_notification(GtkWidget* editor, gint scn, gpointer lscn, gpointer user_data);
@@ -205,6 +204,4 @@
gboolean editor_goto_pos(GeanyDocument *doc, gint pos, gboolean mark);
-gboolean on_editor_scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer user_data); - #endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.