From 41773e58a1e654688bda3aa64e450d24586ef0f3 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Wed, 23 Sep 2009 15:04:08 +0200 Subject: Enable native keybindings of GtkTextView in the internal viewer --- UViewer.pas | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/UViewer.pas b/UViewer.pas index d97a16d..a6f5bc4 100644 --- a/UViewer.pas +++ b/UViewer.pas @@ -197,52 +197,68 @@ begin vadj := gtk_scrolled_window_get_vadjustment(PGtkScrolledWindow(ScrolledWindow.FWidget)); hadj := gtk_scrolled_window_get_hadjustment(PGtkScrolledWindow(ScrolledWindow.FWidget)); // debugmsg(['lower = ', adj^.lower, ', upper = ', adj^.upper, ', value = ', x, ', page_size = ', adj^.page_size]); - Accept := False; + Accept := True; case Key of GDK_HOME: begin smooth_scroll(vadj, 0, True); smooth_scroll(hadj, 0, True); + Accept := False; end; GDK_END: begin smooth_scroll(vadj, vadj^.upper - vadj^.page_size, True); + Accept := False; end; GDK_Page_Down, GDK_SPACE: begin x := gtk_adjustment_get_value(vadj) + vadj^.page_increment; if x + vadj^.page_size > vadj^.upper then x := vadj^.upper - vadj^.page_size; smooth_scroll(vadj, x, True); + Accept := False; end; GDK_Page_Up: begin x := gtk_adjustment_get_value(vadj) - vadj^.page_increment; if x < 0 then x := 0; smooth_scroll(vadj, x, True); + Accept := False; end; GDK_Down: begin x := gtk_adjustment_get_value(vadj) + vadj^.step_increment; if x + vadj^.page_size > vadj^.upper then x := vadj^.upper - vadj^.page_size; smooth_scroll(vadj, x, False); + Accept := False; end; GDK_Up: begin x := gtk_adjustment_get_value(vadj) - vadj^.step_increment; if x < 0 then x := 0; smooth_scroll(vadj, x, False); + Accept := False; end; GDK_Right: begin x := gtk_adjustment_get_value(hadj) + hadj^.step_increment; if x + hadj^.page_size > hadj^.upper then x := hadj^.upper - hadj^.page_size; smooth_scroll(hadj, x, False); + Accept := False; end; GDK_Left: begin x := gtk_adjustment_get_value(hadj) - hadj^.step_increment; if x < 0 then x := 0; smooth_scroll(hadj, x, False); + Accept := False; end; - GDK_W, GDK_Capital_W: if TextView.WrapMode = wmWrapNone then TextView.WrapMode := wmWrapWord - else TextView.WrapMode := wmWrapNone; - GDK_C, GDK_Capital_C, GDK_Insert: if (ssCtrl in Shift) then Accept := True; - GDK_S, GDK_Capital_S: gtk_widget_modify_font(TextView.FWidget, pango_font_description_from_string('Monospace')); - GDK_A, GDK_Capital_A: gtk_widget_modify_font(TextView.FWidget, nil); - + GDK_W, GDK_Capital_W: if (Shift = []) then begin + if TextView.WrapMode = wmWrapNone then TextView.WrapMode := wmWrapWord + else TextView.WrapMode := wmWrapNone; + Accept := False; + end; +// GDK_C, GDK_Capital_C, GDK_Insert: if (ssCtrl in Shift) then Accept := True; + GDK_S, GDK_Capital_S: if (Shift = []) then begin + gtk_widget_modify_font(TextView.FWidget, pango_font_description_from_string('Monospace')); + Accept := False; + end; + GDK_A, GDK_Capital_A: if (Shift = []) then begin + gtk_widget_modify_font(TextView.FWidget, nil); + Accept := False; + end; end; end; -- cgit v1.2.3