From 9de2afcbacd30945033e7c026a7001364b725a95 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 22 Dec 1999 22:28:08 +0000 Subject: [PATCH] * updates for cursor setting * button press event works --- fcl/shedit/gtkdemo.pp | 8 +++++-- fcl/shedit/gtkshedit.pp | 47 ++++++++++++++++++++++++++++------------- fcl/shedit/shedit.pp | 11 ++++++---- 3 files changed, 45 insertions(+), 21 deletions(-) diff --git a/fcl/shedit/gtkdemo.pp b/fcl/shedit/gtkdemo.pp index 4c720b1804..64221a4a69 100644 --- a/fcl/shedit/gtkdemo.pp +++ b/fcl/shedit/gtkdemo.pp @@ -64,7 +64,7 @@ begin e.shSymbol := AddSHStyle('Symbol', colBrown, colDefault, fsNormal); e.shKeyword := AddSHStyle('Keyword', colBlack, colDefault, fsBold); e.shComment := AddSHStyle('Comment', colDarkCyan, colDefault, fsItalics); - e.shDirective := AddSHStyle('Directive', colDarkYellow, colDefault, fsItalics); + e.shDirective := AddSHStyle('Directive', colRed, colDefault, fsItalics); e.shNumbers := AddSHStyle('Numbers', colDarkMagenta, colDefault, fsNormal); e.shCharacters := AddSHStyle('Characters', colDarkBlue, colDefault, fsNormal); e.shStrings := AddSHStyle('Strings', colBlue, colDefault, fsNormal); @@ -135,7 +135,11 @@ begin end. { $Log$ - Revision 1.5 1999-12-08 01:03:15 peter + Revision 1.6 1999-12-22 22:28:08 peter + * updates for cursor setting + * button press event works + + Revision 1.5 1999/12/08 01:03:15 peter * changes so redrawing and walking with the cursor finally works correct diff --git a/fcl/shedit/gtkshedit.pp b/fcl/shedit/gtkshedit.pp index d5f62c570e..5a04f27119 100644 --- a/fcl/shedit/gtkshedit.pp +++ b/fcl/shedit/gtkshedit.pp @@ -150,7 +150,7 @@ begin edit.GdkWnd := edit.PaintBox^.window; edit.GC := gdk_gc_new(edit.GdkWnd); - edit.CurGCColor := 0; // Reset color, because we have a new GC! + edit.CurGCColor := 0; // Reset color, because we have a new GC! gdk_gc_copy(edit.GC, PGtkStyle(edit.PaintBox^.thestyle)^. fg_gc[edit.PaintBox^.state]); @@ -182,7 +182,7 @@ begin GDK_Shift_L..GDK_Hyper_R : begin // Don't let modifier keys trough as normal keys - // *** This doesn't work reliably! (sg) + // *** This doesn't work reliably! (sg) exit; end; else @@ -190,7 +190,7 @@ begin end; KeyState:=Event^.State; -// WriteLn('KeyCode ', KeyCode,' keystate ',KeyState); + WriteLn('KeyCode ', KeyCode,' keystate ',KeyState); // Calculate the Key modifiers (shiftstate) KeyMods := []; @@ -211,8 +211,15 @@ end; function TGtkSHEdit_ButtonPressEvent(GtkWidget: PGtkWidget; event: PGdkEventButton ; edit: TGtkSHEdit): Integer; cdecl; +var + px,py : integer; begin - Writeln('button press'); + px:=(round(event^.x)-edit.leftindent) div edit.CharW; + py:=(round(event^.y)-edit.leftindent) div edit.CharH; +// Writeln('button press ',px,',',py); + edit.Edit.CursorX:=px; + edit.Edit.CursorY:=py; + edit.SetFocus; Result := 1; end; @@ -273,18 +280,23 @@ begin gtk_scrolled_window_add_with_viewport(PGtkScrolledWindow(Widget), PaintBox); gtk_widget_show(PaintBox); - PGtkObject(PaintBox)^.flags := PGtkObject(PaintBox)^.flags or GTK_CAN_FOCUS; + gtk_widget_set_flags(PGtkWidget(PaintBox),GTK_CAN_FOCUS); gtk_signal_connect(PGtkObject(PaintBox), 'expose-event', GTK_SIGNAL_FUNC(@TGtkSHEdit_Expose), self); gtk_signal_connect_after(PGtkObject(PaintBox), 'key-press-event', - GTK_SIGNAL_FUNC(@TGtkSHEdit_KeyPressed), self); - gtk_signal_connect_after(PGtkObject(PaintBox), 'button-press-event', - GTK_SIGNAL_FUNC(@TGtkSHEdit_KeyPressed), self); + GTK_SIGNAL_FUNC(@TGtkSHEdit_Keypressed), self); + gtk_signal_connect(PGtkObject(PaintBox), 'button-press-event', + GTK_SIGNAL_FUNC(@TGtkSHEdit_ButtonPressEvent), self); gtk_signal_connect_after(PGtkObject(PaintBox), 'focus-in-event', GTK_SIGNAL_FUNC(@TGtkSHEdit_FocusInEvent), self); gtk_signal_connect_after(PGtkObject(PaintBox), 'focus-out-event', GTK_SIGNAL_FUNC(@TGtkSHEdit_FocusOutEvent), self); + + gtk_widget_set_events(PGtkWidget(Paintbox), + GDK_EXPOSURE_MASK or GDK_KEY_PRESS_MASK or GDK_KEY_RELEASE_MASK or + GDK_BUTTON_PRESS_MASK or GDK_ENTER_NOTIFY_MASK or GDK_LEAVE_NOTIFY_MASK); + gtk_widget_show(Widget); end; @@ -292,9 +304,9 @@ end; procedure TGtkSHEdit.SetEdit(AEdit: TSHTextEdit); begin Edit := AEdit; - shWhitespace := AddSHStyle('Whitespace', colBlack, colWhite, fsNormal); - Edit.shDefault := AddSHStyle('Default', colBlack, colWhite, fsNormal); - Edit.shSelected := AddSHStyle('Selected', colWhite, colBlue, fsNormal); + shWhitespace := AddSHStyle('Whitespace', colBlack, colWhite, fsNormal); + Edit.shDefault := AddSHStyle('Default', colBlack, colWhite, fsNormal); + Edit.shSelected := AddSHStyle('Selected', colWhite, colDarkBlue, fsNormal); { Install keys } Edit.AddKeyDef(@Edit.CursorUp, selClear, 'Cursor up', GDK_Up, []); Edit.AddKeyDef(@Edit.CursorDown, selClear, 'Cursor down', GDK_Down, []); @@ -320,8 +332,9 @@ begin Edit.AddKeyDef(@Edit.ToggleOverwriteMode, selNothing, 'Toggle overwrite mode', GDK_Insert, []); Edit.AddKeyDef(@Edit.EditDelLeft, selClear, 'Delete char left of cursor', GDK_Backspace, []); - Edit.AddKeyDef(@Edit.EditDelRight, selClear, 'Delete char right of cursor', GDK_Delete, []); + Edit.AddKeyDef(@Edit.EditDelRight, selClear, 'Delete char right of cursor', GDK_Delete_Key, []); Edit.AddKeyDef(@Edit.EditDelLine, selClear, 'Delete current line', Ord('Y'), [ssCtrl]); + Edit.AddKeyDef(@Edit.EditDelLine, selClear, 'Delete current line', Ord('y'), [ssCtrl]); Edit.AddKeyDef(@Edit.EditUndo, selClear, 'Undo last action', GDK_Backspace, [ssAlt]); Edit.AddKeyDef(@Edit.EditRedo, selClear, 'Redo last undone action', GDK_Backspace, [ssShift, ssAlt]); end; @@ -466,8 +479,8 @@ begin end; ' ': begin Inc(s); - Inc(CurX1); - end; + Inc(CurX1); + end; else begin if (CurX1 >= x1) and (CurX1 <= x2) then begin SetGCColor(SHStyles^[RequestedColor].Color); @@ -582,7 +595,11 @@ end; end. { $Log$ - Revision 1.7 1999-12-12 17:50:50 sg + Revision 1.8 1999-12-22 22:28:08 peter + * updates for cursor setting + * button press event works + + Revision 1.7 1999/12/12 17:50:50 sg * Fixed drawing of selection * Several small corrections (removed superfluous local variables etc.) diff --git a/fcl/shedit/shedit.pp b/fcl/shedit/shedit.pp index e75dd037d8..d716bba595 100644 --- a/fcl/shedit/shedit.pp +++ b/fcl/shedit/shedit.pp @@ -260,7 +260,6 @@ type - implementation uses @@ -372,15 +371,15 @@ end; procedure TSHTextEdit.SetCursorX(NewCursorX: Integer); begin - FCursorX := NewCursorX; HideCursor; + FCursorX := NewCursorX; ShowCursor; end; procedure TSHTextEdit.SetCursorY(NewCursorY: Integer); begin - FCursorY := NewCursorY; HideCursor; + FCursorY := NewCursorY; ShowCursor; end; @@ -402,7 +401,11 @@ end. { $Log$ - Revision 1.5 1999-12-10 15:01:03 peter + Revision 1.6 1999-12-22 22:28:09 peter + * updates for cursor setting + * button press event works + + Revision 1.5 1999/12/10 15:01:03 peter * first things for selection * Better Adjusting of range/cursor