diff -rupN mousepad-0.3.0/mousepad/mousepad-document.c mousepad-0.3.0-modified/mousepad/mousepad-document.c --- mousepad-0.3.0/mousepad/mousepad-document.c 2013-11-14 16:07:46.703862580 +1300 +++ mousepad-0.3.0-modified/mousepad/mousepad-document.c 2013-11-14 15:05:04.076907000 +1300 @@ -176,7 +176,7 @@ static void mousepad_document_init (MousepadDocument *document) { GtkTargetList *target_list; - gboolean word_wrap, auto_indent, line_numbers, insert_spaces; + gboolean word_wrap, auto_indent, highlight_current, line_numbers, insert_spaces; gchar *font_name, *color_scheme; gint tab_size; GtkSourceStyleScheme *scheme = NULL; @@ -223,6 +223,7 @@ mousepad_document_init (MousepadDocument /* read all the default settings */ g_object_get (G_OBJECT (preferences), "view-word-wrap", &word_wrap, + "view-highlight-current", &highlight_current, "view-line-numbers", &line_numbers, "view-auto-indent", &auto_indent, "view-font-name", &font_name, @@ -237,6 +238,7 @@ mousepad_document_init (MousepadDocument /* set all the settings */ mousepad_document_set_word_wrap (document, word_wrap); mousepad_document_set_font (document, font_name); + mousepad_view_set_highlight_current (document->textview, highlight_current); mousepad_view_set_line_numbers (document->textview, line_numbers); mousepad_view_set_auto_indent (document->textview, auto_indent); mousepad_view_set_tab_size (document->textview, tab_size); diff -rupN mousepad-0.3.0/mousepad/mousepad-encoding-dialog.c mousepad-0.3.0-modified/mousepad/mousepad-encoding-dialog.c --- mousepad-0.3.0/mousepad/mousepad-encoding-dialog.c 2013-11-14 16:07:46.697195819 +1300 +++ mousepad-0.3.0-modified/mousepad/mousepad-encoding-dialog.c 2013-11-14 15:05:04.076907000 +1300 @@ -210,6 +210,7 @@ mousepad_encoding_dialog_init (MousepadE gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (dialog->document), TRUE, TRUE, 0); gtk_text_view_set_editable (GTK_TEXT_VIEW (dialog->document->textview), FALSE); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (dialog->document->textview), FALSE); + mousepad_view_set_highlight_current (dialog->document->textview, FALSE); mousepad_view_set_line_numbers (dialog->document->textview, FALSE); mousepad_document_set_word_wrap (dialog->document, FALSE); gtk_widget_show (GTK_WIDGET (dialog->document)); diff -rupN mousepad-0.3.0/mousepad/mousepad-preferences.c mousepad-0.3.0-modified/mousepad/mousepad-preferences.c --- mousepad-0.3.0/mousepad/mousepad-preferences.c 2013-11-14 16:07:46.683862289 +1300 +++ mousepad-0.3.0-modified/mousepad/mousepad-preferences.c 2013-11-14 15:08:19.636597000 +1300 @@ -57,6 +57,7 @@ enum /* textview preferences */ PROP_VIEW_AUTO_INDENT, PROP_VIEW_FONT_NAME, + PROP_VIEW_HIGHLIGHT_CURRENT, PROP_VIEW_LINE_NUMBERS, PROP_VIEW_TAB_WIDTH, PROP_VIEW_TABS_AS_SPACES, @@ -184,6 +185,14 @@ mousepad_preferences_class_init (Mousepa MOUSEPAD_PARAM_READWRITE)); g_object_class_install_property (gobject_class, + PROP_VIEW_HIGHLIGHT_CURRENT, + g_param_spec_boolean ("view-highlight-current", + "ViewHighlightCurrent", + NULL, + FALSE, + MOUSEPAD_PARAM_READWRITE)); + + g_object_class_install_property (gobject_class, PROP_VIEW_LINE_NUMBERS, g_param_spec_boolean ("view-line-numbers", "ViewLineNumbers", diff -rupN mousepad-0.3.0/mousepad/mousepad-view.c mousepad-0.3.0-modified/mousepad/mousepad-view.c --- mousepad-0.3.0/mousepad/mousepad-view.c 2013-11-14 16:07:46.660528583 +1300 +++ mousepad-0.3.0-modified/mousepad/mousepad-view.c 2013-11-14 15:05:04.080240000 +1300 @@ -2277,6 +2277,17 @@ mousepad_view_indent (MousepadView *view void +mousepad_view_set_highlight_current (MousepadView *view, + gboolean highlight_current) +{ + mousepad_return_if_fail (MOUSEPAD_IS_VIEW (view)); + + gtk_source_view_set_highlight_current_line (GTK_SOURCE_VIEW (view), highlight_current); +} + + + +void mousepad_view_set_line_numbers (MousepadView *view, gboolean line_numbers) { @@ -2359,6 +2370,16 @@ mousepad_view_get_selection_length (Mous } + +gboolean +mousepad_view_get_highlight_current (MousepadView *view) +{ + mousepad_return_val_if_fail (MOUSEPAD_IS_VIEW (view), FALSE); + + return gtk_source_view_get_highlight_current_line (GTK_SOURCE_VIEW (view)); +} + + gboolean mousepad_view_get_line_numbers (MousepadView *view) diff -rupN mousepad-0.3.0/mousepad/mousepad-view.h mousepad-0.3.0-modified/mousepad/mousepad-view.h --- mousepad-0.3.0/mousepad/mousepad-view.h 2013-11-14 16:07:46.647195041 +1300 +++ mousepad-0.3.0-modified/mousepad/mousepad-view.h 2013-11-14 15:05:04.080240000 +1300 @@ -92,6 +92,9 @@ void mousepad_view_duplicate void mousepad_view_indent (MousepadView *view, gint type); +void mousepad_view_set_highlight_current (MousepadView *view, + gboolean highlight_current); + void mousepad_view_set_line_numbers (MousepadView *view, gboolean line_numbers); @@ -107,6 +110,8 @@ void mousepad_view_set_insert gint mousepad_view_get_selection_length (MousepadView *view, gboolean *is_column_selection); +gboolean mousepad_view_get_highlight_current (MousepadView *view); + gboolean mousepad_view_get_line_numbers (MousepadView *view); gboolean mousepad_view_get_auto_indent (MousepadView *view); diff -rupN mousepad-0.3.0/mousepad/mousepad-window.c mousepad-0.3.0-modified/mousepad/mousepad-window.c --- mousepad-0.3.0/mousepad/mousepad-window.c 2013-11-14 16:07:46.637194890 +1300 +++ mousepad-0.3.0-modified/mousepad/mousepad-window.c 2013-11-14 19:39:59.607440000 +1300 @@ -288,6 +288,8 @@ static void mousepad_window MousepadWindow *window); static void mousepad_window_action_color_scheme (GtkToggleAction *action, MousepadWindow *window); +static void mousepad_window_action_highlight_current (GtkToggleAction *action, + MousepadWindow *window); static void mousepad_window_action_line_numbers (GtkToggleAction *action, MousepadWindow *window); static void mousepad_window_action_statusbar_overwrite (MousepadWindow *window, @@ -471,6 +473,7 @@ static const GtkActionEntry action_entri static const GtkToggleActionEntry toggle_action_entries[] = { + { "highlight-current", NULL, N_("_Highlight Current"), NULL, N_("Highlight the line where the cursor is"), G_CALLBACK (mousepad_window_action_highlight_current), FALSE, }, { "line-numbers", NULL, N_("Line N_umbers"), NULL, N_("Show line numbers"), G_CALLBACK (mousepad_window_action_line_numbers), FALSE, }, { "statusbar", NULL, N_("St_atusbar"), NULL, N_("Change the visibility of the statusbar"), G_CALLBACK (mousepad_window_action_statusbar), FALSE, }, { "auto-indent", NULL, N_("_Auto Indent"), NULL, N_("Auto indent a new line"), G_CALLBACK (mousepad_window_action_auto_indent), FALSE, }, @@ -2263,6 +2266,10 @@ mousepad_window_update_actions (Mousepad action = gtk_action_group_get_action (window->action_group, "word-wrap"); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active); + active = mousepad_view_get_highlight_current (document->textview); + action = gtk_action_group_get_action (window->action_group, "highlight-current"); + gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active); + active = mousepad_view_get_line_numbers (document->textview); action = gtk_action_group_get_action (window->action_group, "line-numbers"); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active); @@ -4522,6 +4529,39 @@ mousepad_window_action_color_scheme (Gtk } } +static void +mousepad_window_action_highlight_current (GtkToggleAction *action, + MousepadWindow *window) +{ + gint page_num = 0; + gboolean active; + GtkWidget *page; + MousepadDocument *document; + + mousepad_return_if_fail (MOUSEPAD_IS_WINDOW (window)); + mousepad_return_if_fail (MOUSEPAD_IS_DOCUMENT (window->active)); + + /* leave when menu updates are locked */ + if (lock_menu_updates == 0) + { + /* get the current state */ + active = gtk_toggle_action_get_active (action); + + /* save as the last used current line highlight setting */ + g_object_set (G_OBJECT (window->preferences), "view-highlight-current", active, NULL); + + /* apply current line highlight setting to all open textviews */ + while ((page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (window->notebook), page_num))) + { + if (G_LIKELY (MOUSEPAD_IS_DOCUMENT (page))) + { + document = MOUSEPAD_DOCUMENT (page); + mousepad_view_set_highlight_current (document->textview, active); + } + page_num++; + } + } +} static void diff -rupN mousepad-0.3.0/mousepad/mousepad-window-ui.h mousepad-0.3.0-modified/mousepad/mousepad-window-ui.h --- mousepad-0.3.0/mousepad/mousepad-window-ui.h 2013-11-14 16:07:46.497192736 +1300 +++ mousepad-0.3.0-modified/mousepad/mousepad-window-ui.h 1970-01-01 12:00:00.000000000 +1200 diff -rupN mousepad-0.3.0/mousepad/mousepad-window-ui.h mousepad-0.3.0-modified/mousepad/mousepad-window-ui.h --- mousepad-0.3.0/mousepad/mousepad-window-ui.h 2013-11-14 16:07:46.497192736 +1300 +++ mousepad-0.3.0-modified/mousepad/mousepad-window-ui.h 2013-11-15 01:21:45.304555000 +1300 @@ -26,37 +26,38 @@ static const char mousepad_window_ui[] = "-selection\" /><" - "menuitem action=\"save-as\" />" - "" + "t\" />" + "" + "" + "<" + "menuitem action=\"cut\" />" }; -static const unsigned mousepad_window_ui_length = 3202u; +static const unsigned mousepad_window_ui_length = 3228u; diff -rupN mousepad-0.3.0/mousepad/mousepad-window-ui.xml mousepad-0.3.0-modified/mousepad/mousepad-window-ui.xml --- mousepad-0.3.0/mousepad/mousepad-window-ui.xml 2013-11-14 16:07:46.497192736 +1300 +++ mousepad-0.3.0-modified/mousepad/mousepad-window-ui.xml 2013-11-14 15:18:40.319530000 +1300 @@ -66,10 +66,10 @@ - +