@ -28,7 +28,7 @@
//
//
/* \file
/* \file
Fl_Text_Display widget . */
Fl_Text_Display widget . */
# ifndef FL_TEXT_DISPLAY_H
# ifndef FL_TEXT_DISPLAY_H
# define FL_TEXT_DISPLAY_H
# define FL_TEXT_DISPLAY_H
@ -40,377 +40,405 @@
# include "Fl_Text_Buffer.H"
# include "Fl_Text_Buffer.H"
/**
/**
This is the FLTK text display widget . It allows the user to
\ brief Rich text display widget .
view multiple lines of text and supports highlighting and
scrolling . The buffer that is displayed in the widget is managed
This is the FLTK text display widget . It allows the user to view multiple lines
by the Fl_Text_Buffer
of text and supports highlighting and scrolling . The buffer that is displayed
class .
in the widget is managed by the Fl_Text_Buffer class . A single Text Buffer
*/
can be displayed by multiple Text Displays .
*/
class FL_EXPORT Fl_Text_Display : public Fl_Group
class FL_EXPORT Fl_Text_Display : public Fl_Group
{
{
public :
public :
/**
/**
text display cursor shapes enumeration
text display cursor shapes enumeration
*/
*/
enum {
enum {
NORMAL_CURSOR , CARET_CURSOR , DIM_CURSOR ,
NORMAL_CURSOR , /**< I-beam */
BLOCK_CURSOR , HEAVY_CURSOR
CARET_CURSOR , /**< caret under the text */
} ;
DIM_CURSOR , /**< dim I-beam */
BLOCK_CURSOR , /**< unfille box under the current character */
HEAVY_CURSOR /**< thick I-beam */
} ;
/**
/**
the character position is the left edge of a character wheras
the character position is the left edge of a character wheras
the cursor is thought to be between the centers of to consecutive
the cursor is thought to be between the centers of to consecutive
characters .
characters .
*/
*/
enum {
enum {
CURSOR_POS , CHARACTER_POS
CURSOR_POS ,
} ;
CHARACTER_POS
} ;
/**
drag types - they match Fl : : event_clicks ( ) so that single clicking to
start a collection selects by character , double clicking selects by
word and triple clicking selects by line .
*/
enum {
DRAG_CHAR = 0 , DRAG_WORD = 1 , DRAG_LINE = 2
} ;
friend void fl_text_drag_me ( int pos , Fl_Text_Display * d ) ;
typedef void ( * Unfinished_Style_Cb ) ( int , void * ) ;
/**
/**
style attributes - currently not implemented !
drag types - they match Fl : : event_clicks ( ) so that single clicking to
start a collection selects by character , double clicking selects by
word and triple clicking selects by line .
*/
*/
enum {
enum {
ATTR_NONE = 0 ,
DRAG_CHAR = 0 ,
ATTR_UNDERLINE = 1 ,
DRAG_WORD = 1 ,
ATTR_HIDDEN = 2
DRAG_LINE = 2
} ;
} ;
friend void fl_text_drag_me ( int pos , Fl_Text_Display * d ) ;
typedef void ( * Unfinished_Style_Cb ) ( int , void * ) ;
/**
/**
This structure associates the color , font , size of a string to draw
This structure associates the color , font , size of a string to draw
with an attribute mask matching attr
with an attribute mask matching attr
*/
*/
struct Style_Table_Entry {
struct Style_Table_Entry {
Fl_Color color ;
Fl_Color color ;
Fl_Font font ;
Fl_Font font ;
int size ;
Fl_Fontsize size ;
unsigned attr ;
unsigned attr ;
} ;
} ;
Fl_Text_Display ( int X , int Y , int W , int H , const char * l = 0 ) ;
Fl_Text_Display ( int X , int Y , int W , int H , const char * l = 0 ) ;
~ Fl_Text_Display ( ) ;
~ Fl_Text_Display ( ) ;
virtual int handle ( int e ) ;
virtual int handle ( int e ) ;
void buffer ( Fl_Text_Buffer * buf ) ;
void buffer ( Fl_Text_Buffer * buf ) ;
/**
/**
Sets or gets the current text buffer associated with the text widget .
Sets the current text buffer associated with the text widget .
Multiple text widgets can be associated with the same text buffer .
Multiple text widgets can be associated with the same text buffer .
*/
\ param buf new text buffer
void buffer ( Fl_Text_Buffer & buf ) { buffer ( & buf ) ; }
*/
void buffer ( Fl_Text_Buffer & buf ) { buffer ( & buf ) ; }
/**
Gets the current text buffer associated with the text widget .
/**
Multiple text widgets can be associated with the same text buffer .
Gets the current text buffer associated with the text widget .
*/
Multiple text widgets can be associated with the same text buffer .
Fl_Text_Buffer * buffer ( ) const { return mBuffer ; }
\ return current text buffer
*/
void redisplay_range ( int start , int end ) ;
Fl_Text_Buffer * buffer ( ) const { return mBuffer ; }
void scroll ( int topLineNum , int horizOffset ) ;
void insert ( const char * text ) ;
void redisplay_range ( int start , int end ) ;
void overstrike ( const char * text ) ;
void scroll ( int topLineNum , int horizOffset ) ;
void insert_position ( int newPos ) ;
void insert ( const char * text ) ;
void overstrike ( const char * text ) ;
void insert_position ( int newPos ) ;
/**
/**
Gets the position of the text insertion cursor for text display
Gets the position of the text insertion cursor for text display
\ return insert position index into text buffer
*/
*/
int insert_position ( ) const { return mCursorPos ; }
int insert_position ( ) const { return mCursorPos ; }
int in_selection ( int x , int y ) const ;
int in_selection ( int x , int y ) const ;
void show_insert_position ( ) ;
void show_insert_position ( ) ;
int move_right ( ) ;
int move_left ( ) ;
int move_right ( ) ;
int move_up ( ) ;
int move_left ( ) ;
int move_down ( ) ;
int move_up ( ) ;
int count_lines ( int start , int end , bool start_pos_is_line_start ) const ;
int move_down ( ) ;
int line_start ( int pos ) const ;
int count_lines ( int start , int end , bool start_pos_is_line_start ) const ;
int line_end ( int pos , bool start_pos_is_line_start ) const ;
int line_start ( int pos ) const ;
int skip_lines ( int startPos , int nLines , bool startPosIsLineStart ) ;
int line_end ( int pos , bool start_pos_is_line_start ) const ;
int rewind_lines ( int startPos , int nLines ) ;
int skip_lines ( int startPos , int nLines , bool startPosIsLineStart ) ;
void next_word ( void ) ;
int rewind_lines ( int startPos , int nLines ) ;
void previous_word ( void ) ;
void next_word ( void ) ;
void show_cursor ( int b = 1 ) ;
void previous_word ( void ) ;
void show_cursor ( int b = 1 ) ;
/**
/**
Hides the text cursor
Hides the text cursor
*/
*/
void hide_cursor ( ) { show_cursor ( 0 ) ; }
void hide_cursor ( ) { show_cursor ( 0 ) ; }
void cursor_style ( int style ) ;
void cursor_style ( int style ) ;
/**
/**
Sets or gets the text cursor color .
Gets the text cursor color .
\ return cursor color
*/
*/
Fl_Color cursor_color ( ) const { return mCursor_color ; }
Fl_Color cursor_color ( ) const { return mCursor_color ; }
/**
/**
Sets or gets the text cursor color .
Sets the text cursor color .
\ param n new cursor color
*/
*/
void cursor_color ( Fl_Color n ) { mCursor_color = n ; }
void cursor_color ( Fl_Color n ) { mCursor_color = n ; }
/**
/**
Sets or gets the width / height of the scrollbars .
Gets the width / height of the scrollbars .
/ return width of scrollbars
*/
*/
int scrollbar_width ( ) const { return scrollbar_width_ ; }
int scrollbar_width ( ) const { return scrollbar_width_ ; }
/**
/**
Sets or gets the width / height of the scrollbars .
Sets the width / height of the scrollbars .
\ param W width of scrollbars
*/
*/
void scrollbar_width ( int W ) { scrollbar_width_ = W ; }
void scrollbar_width ( int W ) { scrollbar_width_ = W ; }
/**
/**
Gets the scrollbar alignment type
Gets the scrollbar alignment type
\ return scrollbar alignment
*/
*/
Fl_Align scrollbar_align ( ) const { return scrollbar_align_ ; }
Fl_Align scrollbar_align ( ) const { return scrollbar_align_ ; }
/**
/**
Sets the scrollbar alignment type
Sets the scrollbar alignment type
\ param a new scrollbar alignment
*/
*/
void scrollbar_align ( Fl_Align a ) { scrollbar_align_ = a ; }
void scrollbar_align ( Fl_Align a ) { scrollbar_align_ = a ; }
/**
/**
Moves the insert position to the beginning of the current word .
Moves the insert position to the beginning of the current word .
\ param pos start calculation at this index
\ return beginning of the wors
*/
*/
int word_start ( int pos ) const { return buffer ( ) - > word_start ( pos ) ; }
int word_start ( int pos ) const { return buffer ( ) - > word_start ( pos ) ; }
/**
/**
Moves the insert position to the end of the current word .
Moves the insert position to the end of the current word .
\ param pos start calculation at this index
\ return index of first character after the end of the word
*/
*/
int word_end ( int pos ) const { return buffer ( ) - > word_end ( pos ) ; }
int word_end ( int pos ) const { return buffer ( ) - > word_end ( pos ) ; }
void highlight_data ( Fl_Text_Buffer * styleBuffer ,
void highlight_data ( Fl_Text_Buffer * styleBuffer ,
const Style_Table_Entry * styleTable ,
const Style_Table_Entry * styleTable ,
int nStyles , char unfinishedStyle ,
int nStyles , char unfinishedStyle ,
Unfinished_Style_Cb unfinishedHighlightCB ,
Unfinished_Style_Cb unfinishedHighlightCB ,
void * cbArg ) ;
void * cbArg ) ;
int position_style ( int lineStartPos , int lineLen , int lineIndex ) const ;
int position_style ( int lineStartPos , int lineLen , int lineIndex ) const ;
/**
/**
\ todo FIXME : get set methods pointing on shortcut_
\ todo FIXME : get set methods pointing on shortcut_
have no effects as shortcut_ is unused in this class and derived !
have no effects as shortcut_ is unused in this class and derived !
\ return the current shortcut key
*/
*/
int shortcut ( ) const { return shortcut_ ; }
int shortcut ( ) const { return shortcut_ ; }
/**
/**
\ todo FIXME : get set methods pointing on shortcut_
\ todo FIXME : get set methods pointing on shortcut_
have no effects as shortcut_ is unused in this class and derived !
have no effects as shortcut_ is unused in this class and derived !
\ param s the new shortcut key
*/
*/
void shortcut ( int s ) { shortcut_ = s ; }
void shortcut ( int s ) { shortcut_ = s ; }
/**
/**
Gets the default font used when drawing text in the widget .
Gets the default font used when drawing text in the widget .
\ return current text font face unless overriden by a style
*/
*/
Fl_Font textfont ( ) const { return textfont_ ; }
Fl_Font textfont ( ) const { return textfont_ ; }
/**
/**
Sets the default font used when drawing text in the widget .
Sets the default font used when drawing text in the widget .
\ param s default text font face
*/
*/
void textfont ( Fl_Font s ) { textfont_ = s ; }
void textfont ( Fl_Font s ) { textfont_ = s ; }
/**
/**
Gets the default size of text in the widget .
Gets the default size of text in the widget .
\ return current text height unless overriden by a style
*/
*/
Fl_Fontsize textsize ( ) const { return textsize_ ; }
Fl_Fontsize textsize ( ) const { return textsize_ ; }
/**
/**
Sets the default size of text in the widget .
Sets the default size of text in the widget .
\ param s new text size
*/
*/
void textsize ( Fl_Fontsize s ) { textsize_ = s ; }
void textsize ( Fl_Fontsize s ) { textsize_ = s ; }
/**
/**
Gets the default color of text in the widget .
Gets the default color of text in the widget .
\ return text color unless overriden by a style
*/
*/
Fl_Color textcolor ( ) const { return textcolor_ ; }
Fl_Color textcolor ( ) const { return textcolor_ ; }
/**
/**
Sets the default color of text in the widget .
Sets the default color of text in the widget .
\ param n new text color
*/
*/
void textcolor ( Fl_Color n ) { textcolor_ = n ; }
void textcolor ( Fl_Color n ) { textcolor_ = n ; }
int wrapped_column ( int row , int column ) const ;
int wrapped_column ( int row , int column ) const ;
int wrapped_row ( int row ) const ;
int wrapped_row ( int row ) const ;
void wrap_mode ( int wrap , int wrap_margin ) ;
void wrap_mode ( int wrap , int wrap_margin ) ;
virtual void resize ( int X , int Y , int W , int H ) ;
virtual void resize ( int X , int Y , int W , int H ) ;
protected :
protected :
// Most (all?) of this stuff should only be called from resize() or
// Most (all?) of this stuff should only be called from resize() or
// draw().
// draw().
// Anything with "vline" indicates thats it deals with currently
// Anything with "vline" indicates thats it deals with currently
// visible lines.
// visible lines.
virtual void draw ( ) ;
virtual void draw ( ) ;
void draw_text ( int X , int Y , int W , int H ) ;
void draw_text ( int X , int Y , int W , int H ) ;
void draw_range ( int start , int end ) ;
void draw_range ( int start , int end ) ;
void draw_cursor ( int , int ) ;
void draw_cursor ( int , int ) ;
void draw_string ( int style , int x , int y , int toX , const char * string ,
void draw_string ( int style , int x , int y , int toX , const char * string ,
int nChars ) const ;
int nChars ) const ;
void draw_vline ( int visLineNum , int leftClip , int rightClip ,
void draw_vline ( int visLineNum , int leftClip , int rightClip ,
int leftCharIndex , int rightCharIndex ) ;
int leftCharIndex , int rightCharIndex ) ;
int find_x ( const char * s , int len , int style , int x ) const ;
int find_x ( const char * s , int len , int style , int x ) const ;
enum { DRAW_LINE , FIND_INDEX , GET_WIDTH } ;
enum {
DRAW_LINE ,
FIND_INDEX ,
GET_WIDTH
} ;
int handle_vline ( int mode ,
int handle_vline ( int mode ,
int lineStart , int lineLen , int leftChar , int rightChar ,
int lineStart , int lineLen , int leftChar , int rightChar ,
int topClip , int bottomClip ,
int topClip , int bottomClip ,
int leftClip , int rightClip ) const ;
int leftClip , int rightClip ) const ;
void draw_line_numbers ( bool clearAll ) ;
void draw_line_numbers ( bool clearAll ) ;
void clear_rect ( int style , int x , int y , int width , int height ) const ;
void clear_rect ( int style , int x , int y , int width , int height ) const ;
void display_insert ( ) ;
void display_insert ( ) ;
void offset_line_starts ( int newTopLineNum ) ;
void offset_line_starts ( int newTopLineNum ) ;
void calc_line_starts ( int startLine , int endLine ) ;
void calc_line_starts ( int startLine , int endLine ) ;
void update_line_starts ( int pos , int charsInserted , int charsDeleted ,
void update_line_starts ( int pos , int charsInserted , int charsDeleted ,
int linesInserted , int linesDeleted , int * scrolled ) ;
int linesInserted , int linesDeleted , int * scrolled ) ;
void calc_last_char ( ) ;
void calc_last_char ( ) ;
int position_to_line ( int pos , int * lineNum ) const ;
int position_to_line ( int pos , int * lineNum ) const ;
int string_width ( const char * string , int length , int style ) const ;
int string_width ( const char * string , int length , int style ) const ;
static void scroll_timer_cb ( void * ) ;
static void scroll_timer_cb ( void * ) ;
static void buffer_predelete_cb ( int pos , int nDeleted , void * cbArg ) ;
static void buffer_predelete_cb ( int pos , int nDeleted , void * cbArg ) ;
static void buffer_modified_cb ( int pos , int nInserted , int nDeleted ,
static void buffer_modified_cb ( int pos , int nInserted , int nDeleted ,
int nRestyled , const char * deletedText ,
int nRestyled , const char * deletedText ,
void * cbArg ) ;
void * cbArg ) ;
static void h_scrollbar_cb ( Fl_Scrollbar * w , Fl_Text_Display * d ) ;
static void h_scrollbar_cb ( Fl_Scrollbar * w , Fl_Text_Display * d ) ;
static void v_scrollbar_cb ( Fl_Scrollbar * w , Fl_Text_Display * d ) ;
static void v_scrollbar_cb ( Fl_Scrollbar * w , Fl_Text_Display * d ) ;
void update_v_scrollbar ( ) ;
void update_v_scrollbar ( ) ;
void update_h_scrollbar ( ) ;
void update_h_scrollbar ( ) ;
int measure_vline ( int visLineNum ) const ;
int measure_vline ( int visLineNum ) const ;
int longest_vline ( ) const ;
int longest_vline ( ) const ;
int empty_vlines ( ) const ;
int empty_vlines ( ) const ;
int vline_length ( int visLineNum ) const ;
int vline_length ( int visLineNum ) const ;
int xy_to_position ( int x , int y , int PosType = CHARACTER_POS ) const ;
int xy_to_position ( int x , int y , int PosType = CHARACTER_POS ) const ;
void xy_to_rowcol ( int x , int y , int * row , int * column ,
void xy_to_rowcol ( int x , int y , int * row , int * column ,
int PosType = CHARACTER_POS ) const ;
int PosType = CHARACTER_POS ) const ;
int position_to_xy ( int pos , int * x , int * y ) const ;
int position_to_xy ( int pos , int * x , int * y ) const ;
void maintain_absolute_top_line_number ( int state ) ;
void maintain_absolute_top_line_number ( int state ) ;
int get_absolute_top_line_number ( ) const ;
int get_absolute_top_line_number ( ) const ;
void absolute_top_line_number ( int oldFirstChar ) ;
void absolute_top_line_number ( int oldFirstChar ) ;
int maintaining_absolute_top_line_number ( ) const ;
int maintaining_absolute_top_line_number ( ) const ;
void reset_absolute_top_line_number ( ) ;
void reset_absolute_top_line_number ( ) ;
int position_to_linecol ( int pos , int * lineNum , int * column ) const ;
int position_to_linecol ( int pos , int * lineNum , int * column ) const ;
void scroll_ ( int topLineNum , int horizOffset ) ;
void scroll_ ( int topLineNum , int horizOffset ) ;
void extend_range_for_styles ( int * start , int * end ) ;
void extend_range_for_styles ( int * start , int * end ) ;
void find_wrap_range ( const char * deletedText , int pos , int nInserted ,
void find_wrap_range ( const char * deletedText , int pos , int nInserted ,
int nDeleted , int * modRangeStart , int * modRangeEnd ,
int nDeleted , int * modRangeStart , int * modRangeEnd ,
int * linesInserted , int * linesDeleted ) ;
int * linesInserted , int * linesDeleted ) ;
void measure_deleted_lines ( int pos , int nDeleted ) ;
void measure_deleted_lines ( int pos , int nDeleted ) ;
void wrapped_line_counter ( Fl_Text_Buffer * buf , int startPos , int maxPos ,
void wrapped_line_counter ( Fl_Text_Buffer * buf , int startPos , int maxPos ,
int maxLines , bool startPosIsLineStart ,
int maxLines , bool startPosIsLineStart ,
int styleBufOffset , int * retPos , int * retLines ,
int styleBufOffset , int * retPos , int * retLines ,
int * retLineStart , int * retLineEnd ,
int * retLineStart , int * retLineEnd ,
bool countLastLineMissingNewLine = true ) const ;
bool countLastLineMissingNewLine = true ) const ;
void find_line_end ( int pos , bool start_pos_is_line_start , int * lineEnd ,
void find_line_end ( int pos , bool start_pos_is_line_start , int * lineEnd ,
int * nextLineStart ) const ;
int * nextLineStart ) const ;
int measure_proportional_character ( const char * s , int colNum , int pos ) const ;
int measure_proportional_character ( const char * s , int colNum , int pos ) const ;
int wrap_uses_character ( int lineEndPos ) const ;
int wrap_uses_character ( int lineEndPos ) const ;
int damage_range1_start , damage_range1_end ;
int damage_range1_start , damage_range1_end ;
int damage_range2_start , damage_range2_end ;
int damage_range2_start , damage_range2_end ;
int mCursorPos ;
int mCursorPos ;
int mCursorOn ;
int mCursorOn ;
int mCursorOldY ; /* Y pos. of cursor for blanking */
int mCursorOldY ; /* Y pos. of cursor for blanking */
int mCursorToHint ; /* Tells the buffer modified callback
int mCursorToHint ; /* Tells the buffer modified callback
where to move the cursor , to reduce
where to move the cursor , to reduce
the number of redraw calls */
the number of redraw calls */
int mCursorStyle ; /* One of enum cursorStyles above */
int mCursorStyle ; /* One of enum cursorStyles above */
int mCursorPreferredCol ; /* Column for vert. cursor movement */
int mCursorPreferredCol ; /* Column for vert. cursor movement */
int mNVisibleLines ; /* # of visible (displayed) lines */
int mNVisibleLines ; /* # of visible (displayed) lines */
int mNBufferLines ; /* # of newlines in the buffer */
int mNBufferLines ; /* # of newlines in the buffer */
Fl_Text_Buffer * mBuffer ; /* Contains text to be displayed */
Fl_Text_Buffer * mBuffer ; /* Contains text to be displayed */
Fl_Text_Buffer * mStyleBuffer ; /* Optional parallel buffer containing
Fl_Text_Buffer * mStyleBuffer ; /* Optional parallel buffer containing
color and font information */
color and font information */
int mFirstChar , mLastChar ; /* Buffer positions of first and last
int mFirstChar , mLastChar ; /* Buffer positions of first and last
displayed character ( lastChar points
displayed character ( lastChar points
either to a newline or one character
either to a newline or one character
beyond the end of the buffer ) */
beyond the end of the buffer ) */
int mContinuousWrap ; /* Wrap long lines when displaying */
int mContinuousWrap ; /* Wrap long lines when displaying */
int mWrapMargin ; /* Margin in # of char positions for
int mWrapMargin ; /* Margin in # of char positions for
wrapping in continuousWrap mode */
wrapping in continuousWrap mode */
int * mLineStarts ;
int * mLineStarts ;
int mTopLineNum ; /* Line number of top displayed line
int mTopLineNum ; /* Line number of top displayed line
of file ( first line of file is 1 ) */
of file ( first line of file is 1 ) */
int mAbsTopLineNum ; /* In continuous wrap mode, the line
int mAbsTopLineNum ; /* In continuous wrap mode, the line
number of the top line if the text
number of the top line if the text
were not wrapped ( note that this is
were not wrapped ( note that this is
only maintained as needed ) . */
only maintained as needed ) . */
int mNeedAbsTopLineNum ; /* Externally settable flag to continue
int mNeedAbsTopLineNum ; /* Externally settable flag to continue
maintaining absTopLineNum even if
maintaining absTopLineNum even if
it isn ' t needed for line # display */
it isn ' t needed for line # display */
int mHorizOffset ; /* Horizontal scroll pos. in pixels */
int mHorizOffset ; /* Horizontal scroll pos. in pixels */
int mTopLineNumHint ; /* Line number of top displayed line
int mTopLineNumHint ; /* Line number of top displayed line
of file ( first line of file is 1 ) */
of file ( first line of file is 1 ) */
int mHorizOffsetHint ; /* Horizontal scroll pos. in pixels */
int mHorizOffsetHint ; /* Horizontal scroll pos. in pixels */
int mNStyles ; /* Number of entries in styleTable */
int mNStyles ; /* Number of entries in styleTable */
const Style_Table_Entry * mStyleTable ; /* Table of fonts and colors for
const Style_Table_Entry * mStyleTable ; /* Table of fonts and colors for
coloring / syntax - highlighting */
coloring / syntax - highlighting */
char mUnfinishedStyle ; /* Style buffer entry which triggers
char mUnfinishedStyle ; /* Style buffer entry which triggers
on - the - fly reparsing of region */
on - the - fly reparsing of region */
Unfinished_Style_Cb mUnfinishedHighlightCB ; /* Callback to parse "unfinished" */
Unfinished_Style_Cb mUnfinishedHighlightCB ; /* Callback to parse "unfinished" */
/* regions */
/* regions */
void * mHighlightCBArg ; /* Arg to unfinishedHighlightCB */
void * mHighlightCBArg ; /* Arg to unfinishedHighlightCB */
int mMaxsize ;
int mMaxsize ;
int mSuppressResync ; /* Suppress resynchronization of line
int mSuppressResync ; /* Suppress resynchronization of line
starts during buffer updates */
starts during buffer updates */
int mNLinesDeleted ; /* Number of lines deleted during
int mNLinesDeleted ; /* Number of lines deleted during
buffer modification ( only used
buffer modification ( only used
when resynchronization is suppressed ) */
when resynchronization is suppressed ) */
int mModifyingTabDistance ; /* Whether tab distance is being
int mModifyingTabDistance ; /* Whether tab distance is being
modified */
modified */
Fl_Color mCursor_color ;
Fl_Color mCursor_color ;
Fl_Scrollbar * mHScrollBar ;
Fl_Scrollbar * mHScrollBar ;
Fl_Scrollbar * mVScrollBar ;
Fl_Scrollbar * mVScrollBar ;
int scrollbar_width_ ;
int scrollbar_width_ ;
Fl_Align scrollbar_align_ ;
Fl_Align scrollbar_align_ ;
int dragPos , dragType , dragging ;
int dragPos , dragType , dragging ;
int display_insert_position_hint ;
int display_insert_position_hint ;
struct { int x , y , w , h ; } text_area ;
struct { int x , y , w , h ; } text_area ;
int shortcut_ ;
int shortcut_ ;
Fl_Font textfont_ ;
Fl_Font textfont_ ;
Fl_Fontsize textsize_ ;
Fl_Fontsize textsize_ ;
Fl_Color textcolor_ ;
Fl_Color textcolor_ ;
// The following are not presently used from the original NEdit code,
// The following are not presently used from the original NEdit code,
// but are being put here so that future versions of Fl_Text_Display
// but are being put here so that future versions of Fl_Text_Display
// can implement line numbers without breaking binary compatibility.
// can implement line numbers without breaking binary compatibility.
/* Line number margin and width */
/* Line number margin and width */
int mLineNumLeft , mLineNumWidth ;
int mLineNumLeft , mLineNumWidth ;
} ;
} ;
# endif
# endif