ZynAddSubFX/FLTK: updated to SVN revision 6943

Updated FLTK to SVN revision 6943 of branch-1.3:

	- Adding Gerg's Fl_Table widget to FLTK 1.3 with kind permission. Documentation not yet added Support for both Visual Studio IDE's not yet added.
	- Removed accidentaly added binary file (Note to self: the use of wild cards is a dangerous one ;-)
	- Added doxygenified documentation for Fl_Table
	- Added doxygenified documentation for Fl_Table_Row
	- Added doxygenified documentation for Fl_Table_Row
	- Added Fl_Tree source code, demo files, and documentation. Thanks, Greg!
	- Removed unused members width_ and height_ from Fl_Scroll (STR #2289).
	- Removed obsolete <P> tags from doxygen docs (Fl_Scroll.H), fixed some typos.
	- Would not build on ubuntu 9.10 - bad file name (fl_ask.h) should be fl_ask.H fix 64 bit build
	- Added const'nes too Fl_Counter::step()
	- STR #2292: fixed issue typing a minus in Fl_Int_Input when all text is selected.
	- Added missing svn properties and $Id$ tags.
This commit is contained in:
Tobias Doerffel
2009-11-27 08:32:31 +01:00
parent 8b9ced7951
commit 873eff2b22
10 changed files with 369 additions and 353 deletions

View File

@@ -1,5 +1,6 @@
CHANGES IN FLTK 1.3.0
- Added template to generate new projects with Xcode.
- Managing all Widget flags in a single location now (STR #2161)
- Fixed all color related call to Fl_Color type (STR #2208)
- File chooser preview now recognizes utf8 encoded

View File

@@ -98,7 +98,7 @@ public:
/**
Returns the increment for normal step buttons.
*/
double step() {return Fl_Valuator::step();}
double step() const {return Fl_Valuator::step();}
/** Gets the text font */
Fl_Font textfont() const {return textfont_;}

View File

@@ -36,22 +36,24 @@
/**
This container widget lets you maneuver around a set of widgets much
larger than your window. If the child widgets are larger than the size
larger than your window. If the child widgets are larger than the size
of this object then scrollbars will appear so that you can scroll over
to them:
<P ALIGN=CENTER>\image html Fl_Scroll.gif </P>
\image html Fl_Scroll.gif
\image latex Fl_Scroll.eps "Fl_Scroll" width=4cm
<P>If all of the child widgets are packed together into a solid
If all of the child widgets are packed together into a solid
rectangle then you want to set box() to FL_NO_BOX or
one of the _FRAME types. This will result in the best output.
However, if the child widgets are a sparse arrangment you must set
box() to a real _BOX type. This can result in some
However, if the child widgets are a sparse arrangement you must
set box() to a real _BOX type. This can result in some
blinking during redrawing, but that can be solved by using a
Fl_Double_Window. </P>
Fl_Double_Window.
By default you can scroll in both directions, and the scrollbars
disappear if the data will fit in the area of the scroll.
<P>Use Fl_Scroll::type() to change this as follows :
Use Fl_Scroll::type() to change this as follows :
<UL>
<LI>0 - No scrollbars </LI>
<LI>Fl_Scroll::HORIZONTAL - Only a horizontal scrollbar. </LI>
@@ -62,38 +64,38 @@
<LI>Fl_Scroll::BOTH_ALWAYS - Both always on. </LI>
</UL>
<P> Use <B> scrollbar.align(int) ( see void Fl_Widget::align(Fl_Align) ) :</B>
to change what side the scrollbars are drawn on.<BR>If the
FL_ALIGN_LEFT bit is on, the vertical scrollbar is on the left.
Use <B> scrollbar.align(int) ( see void Fl_Widget::align(Fl_Align) ) :</B>
to change what side the scrollbars are drawn on.
If the FL_ALIGN_LEFT bit is on, the vertical scrollbar is on the left.
If the FL_ALIGN_TOP bit is on, the horizontal scrollbar is on
the top. Note that only the alignment flags in scrollbar are
considered. The flags in hscrollbar however are ignored.
<P>This widget can also be used to pan around a single child widget
"canvas". This child widget should be of your own class, with a
draw() method that draws the contents. The scrolling is done by
This widget can also be used to pan around a single child widget
"canvas". This child widget should be of your own class, with a
draw() method that draws the contents. The scrolling is done by
changing the x() and y() of the widget, so this child
must use the x() and y() to position it's drawing.
must use the x() and y() to position its drawing.
To speed up drawing it should test fl_push_clip().
<P>Another very useful child is a single
Fl_Pack, which is itself a group that packs it's children
together and changes size to surround them. Filling the Fl_Pack
with Fl_Tabs groups (and then putting
Another very useful child is a single Fl_Pack, which is itself a group
that packs its children together and changes size to surround them.
Filling the Fl_Pack with Fl_Tabs groups (and then putting
normal widgets inside those) gives you a very powerful scrolling list
of individually-openable panels. </P>
of individually-openable panels.
<P>Fluid lets you create these, but you can only lay out objects that
fit inside the Fl_Scroll without scrolling. Be sure to leave
space for the scrollbars, as Fluid won't show these either. </P>
<P><I>You cannot use Fl_Window as a child of this since the
Fluid lets you create these, but you can only lay out objects that
fit inside the Fl_Scroll without scrolling. Be sure to leave
space for the scrollbars, as Fluid won't show these either.
<I>You cannot use Fl_Window as a child of this since the
clipping is not conveyed to it when drawn, and it will draw over the
scrollbars and neighboring objects.</I>
*/
class FL_EXPORT Fl_Scroll : public Fl_Group {
int xposition_, yposition_;
int width_, height_;
int oldx, oldy;
int scrollbar_size_;
static void hscrollbar_cb(Fl_Widget*, void*);

View File

@@ -1,4 +1,4 @@
/* "$Id: $"
/* "$Id$"
*
* Author: Jean-Marc Lienher ( http://oksid.ch )
* Copyright 2000-2003 by O'ksi'D.
@@ -172,5 +172,5 @@ XUtf8Toupper(
#endif
/*
* End of "$Id: $".
* End of "$Id$".
*/

View File

@@ -1,5 +1,5 @@
/*
* "$Id: fl_types.h 6299 2008-09-18 19:09:34Z fabien $"
* "$Id$"
*
* Simple "C"-style types for the Fast Light Tool Kit (FLTK).
*
@@ -62,5 +62,5 @@ typedef unsigned int Fl_Char;
#endif
/*
* End of "$Id: fl_types.h 6299 2008-09-18 19:09:34Z fabien $".
* End of "$Id$".
*/

View File

@@ -1,4 +1,4 @@
/* "$Id: $"
/* "$Id$"
*
* Author: Jean-Marc Lienher ( http://oksid.ch )
* Copyright 2000-2009 by O'ksi'D.
@@ -246,5 +246,5 @@ FL_EXPORT char fl_make_path( const char *path );
#endif /* _HAVE_FL_UTF8_HDR_ */
/*
* End of "$Id: $".
* End of "$Id$".
*/

View File

@@ -82,18 +82,18 @@ static const char *legal_fp_chars = ".eE+-";
#endif
int Fl_Input::handle_key() {
char ascii = Fl::event_text()[0];
int repeat_num=1;
int del;
if (Fl::compose(del)) {
// Insert characters into numeric fields after checking for legality:
if (input_type() == FL_FLOAT_INPUT || input_type() == FL_INT_INPUT) {
Fl::compose_reset(); // ignore any foreign letters...
// initialize the list of legal characters inside a floating point number
#ifdef HAVE_LOCALECONV
if (!legal_fp_chars) {
@@ -108,7 +108,7 @@ int Fl_Input::handle_key() {
// the following line is not a true memory leak because the array is only
// allocated once if required, and automatically freed when the program quits
char *chars = (char*)malloc(len+1);
legal_fp_chars = chars;
legal_fp_chars = chars;
strcpy(chars, standard_fp_chars);
if (lc) {
if (lc->decimal_point) strcat(chars, lc->decimal_point);
@@ -118,361 +118,364 @@ int Fl_Input::handle_key() {
}
}
#endif // HAVE_LOCALECONV
// find the insert position
int ip = position()<mark() ? position() : mark();
// This is complex to allow "0xff12" hex to be typed:
if (!position() && (ascii == '+' || ascii == '-') ||
(ascii >= '0' && ascii <= '9') ||
(position()==1 && index(0)=='0' && (ascii=='x' || ascii == 'X')) ||
(position()>1 && index(0)=='0' && (index(1)=='x'||index(1)=='X')
&& (ascii>='A'&& ascii<='F' || ascii>='a'&& ascii<='f')) ||
input_type()==FL_FLOAT_INPUT && ascii && strchr(legal_fp_chars, ascii)) {
if (readonly()) fl_beep();
else replace(position(), mark(), &ascii, 1);
if (!ip && (ascii == '+' || ascii == '-')
|| (ascii >= '0' && ascii <= '9')
|| (ip==1 && index(0)=='0' && (ascii=='x' || ascii == 'X'))
|| (ip>1 && index(0)=='0' && (index(1)=='x'||index(1)=='X')
&& (ascii>='A'&& ascii<='F' || ascii>='a'&& ascii<='f'))
|| input_type()==FL_FLOAT_INPUT && ascii && strchr(legal_fp_chars, ascii))
{
if (readonly()) fl_beep();
else replace(position(), mark(), &ascii, 1);
}
return 1;
}
if (del || Fl::event_length()) {
if (readonly()) fl_beep();
else replace(position(), del ? position()-del : mark(),
Fl::event_text(), Fl::event_length());
Fl::event_text(), Fl::event_length());
}
return 1;
}
unsigned int mods = Fl::event_state() & (FL_META|FL_CTRL|FL_ALT);
switch (Fl::event_key()) {
case FL_Insert:
if (Fl::event_state() & FL_CTRL) ascii = ctrl('C');
else if (Fl::event_state() & FL_SHIFT) ascii = ctrl('V');
break;
case FL_Delete:
case FL_Insert:
if (Fl::event_state() & FL_CTRL) ascii = ctrl('C');
else if (Fl::event_state() & FL_SHIFT) ascii = ctrl('V');
break;
case FL_Delete:
#ifdef __APPLE__
if (mods==0 || mods==FL_CTRL) { // delete next char
ascii = ctrl('D');
} else if (mods==FL_ALT) { // delete next word
if (mark() != position()) return cut();
cut(position(), word_end(position()));
return 1;
} else if (mods==FL_META) { // delete to the end of the line
if (mark() != position()) return cut();
cut(position(), line_end(position()));
return 1;
} else return 1;
if (mods==0 || mods==FL_CTRL) { // delete next char
ascii = ctrl('D');
} else if (mods==FL_ALT) { // delete next word
if (mark() != position()) return cut();
cut(position(), word_end(position()));
return 1;
} else if (mods==FL_META) { // delete to the end of the line
if (mark() != position()) return cut();
cut(position(), line_end(position()));
return 1;
} else return 1;
#else
if (mods==0) {
ascii = ctrl('D');
} else if (mods==FL_SHIFT) {
ascii = ctrl('X');
} else return 1;
if (mods==0) {
ascii = ctrl('D');
} else if (mods==FL_SHIFT) {
ascii = ctrl('X');
} else return 1;
#endif
break;
case FL_Left:
break;
case FL_Left:
#ifdef __APPLE__
if (mods==0) { // char left
ascii = ctrl('B');
} else if (mods==FL_ALT) { // word left
shift_position(word_start(position()));
return 1;
} else if (mods==FL_CTRL || mods==FL_META) { // start of line
shift_position(line_start(position()));
return 1;
} else return 1;
if (mods==0) { // char left
ascii = ctrl('B');
} else if (mods==FL_ALT) { // word left
shift_position(word_start(position()));
return 1;
} else if (mods==FL_CTRL || mods==FL_META) { // start of line
shift_position(line_start(position()));
return 1;
} else return 1;
#else
if (mods==0) { // char left
ascii = ctrl('B');
} else if (mods==FL_CTRL) { // word left
shift_position(word_start(position()));
return 1;
} else return 1;
if (mods==0) { // char left
ascii = ctrl('B');
} else if (mods==FL_CTRL) { // word left
shift_position(word_start(position()));
return 1;
} else return 1;
#endif
break;
case FL_Right:
break;
case FL_Right:
#ifdef __APPLE__
if (mods==0) { // char right
ascii = ctrl('F');
} else if (mods==FL_ALT) { // word right
shift_position(word_end(position()));
return 1;
} else if (mods==FL_CTRL || mods==FL_META) { // end of line
shift_position(line_end(position()));
return 1;
} else return 1;
if (mods==0) { // char right
ascii = ctrl('F');
} else if (mods==FL_ALT) { // word right
shift_position(word_end(position()));
return 1;
} else if (mods==FL_CTRL || mods==FL_META) { // end of line
shift_position(line_end(position()));
return 1;
} else return 1;
#else
if (mods==0) { // char right
ascii = ctrl('F');
} else if (mods==FL_CTRL) { // word right
shift_position(word_end(position()));
return 1;
} else return 1;
if (mods==0) { // char right
ascii = ctrl('F');
} else if (mods==FL_CTRL) { // word right
shift_position(word_end(position()));
return 1;
} else return 1;
#endif // __APPLE__
break;
case FL_Page_Up:
break;
case FL_Page_Up:
#ifdef __APPLE__
if (mods==0) { // scroll text one page
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
if (mods==0) { // scroll text one page
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
repeat_num = linesPerPage();
ascii = ctrl('P');
} else if (mods==FL_ALT) { // move cursor one page
repeat_num = linesPerPage();
ascii = ctrl('P');
} else return 1;
break;
#else
repeat_num = linesPerPage();
ascii = ctrl('P');
} else if (mods==FL_ALT) { // move cursor one page
// fall through
#endif
case FL_Up:
#ifdef __APPLE__
if (mods==0) { // line up
ascii = ctrl('P');
} else if (mods==FL_CTRL) { // scroll text down one page
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
repeat_num = linesPerPage();
ascii = ctrl('P');
} else if (mods==FL_ALT) { // line start and up
if (line_start(position())==position() && position()>0)
return shift_position(line_start(position()-1)) + NORMAL_INPUT_MOVE;
else
return shift_position(line_start(position())) + NORMAL_INPUT_MOVE;
} else if (mods==FL_META) { // start of document
shift_position(0);
return 1;
} else return 1;
#else
if (mods==0) { // line up
ascii = ctrl('P');
} else if (mods==FL_CTRL) { // scroll text down one line
// Fl_Input has no scroll control, so instead we move the cursor by one page
ascii = ctrl('P');
} else return 1;
#endif
break;
case FL_Page_Down:
#ifdef __APPLE__
if (mods==0) { // scroll text one page
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
repeat_num = linesPerPage();
ascii = ctrl('N');
} else if (mods==FL_ALT) { // move cursor one page
repeat_num = linesPerPage();
ascii = ctrl('N');
} else return 1;
break;
#else
repeat_num = linesPerPage();
ascii = ctrl('P');
} else return 1;
break;
#else
repeat_num = linesPerPage();
// fall through
// fall through
#endif
case FL_Up:
case FL_Down:
#ifdef __APPLE__
if (mods==0) { // line up
ascii = ctrl('P');
} else if (mods==FL_CTRL) { // scroll text down one page
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
repeat_num = linesPerPage();
ascii = ctrl('P');
} else if (mods==FL_ALT) { // line start and up
if (line_start(position())==position() && position()>0)
return shift_position(line_start(position()-1)) + NORMAL_INPUT_MOVE;
else
return shift_position(line_start(position())) + NORMAL_INPUT_MOVE;
} else if (mods==FL_META) { // start of document
shift_position(0);
return 1;
} else return 1;
if (mods==0) { // line down
ascii = ctrl('N');
} else if (mods==FL_CTRL) {
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
repeat_num = linesPerPage();
ascii = ctrl('N');
} else if (mods==FL_ALT) { // line end and down
if (line_end(position())==position() && position()<size())
return shift_position(line_end(position()+1)) + NORMAL_INPUT_MOVE;
else
return shift_position(line_end(position())) + NORMAL_INPUT_MOVE;
} else if (mods==FL_META) { // end of document
shift_position(size());
return 1;
} else return 1;
#else
if (mods==0) { // line up
ascii = ctrl('P');
} else if (mods==FL_CTRL) { // scroll text down one line
// Fl_Input has no scroll control, so instead we move the cursor by one page
ascii = ctrl('P');
} else return 1;
if (mods==0) { // line down
ascii = ctrl('N');
} else if (mods==FL_CTRL) { // scroll text up one line
// Fl_Input has no scroll control, so instead we move the cursor by one page
ascii = ctrl('N');
} else return 1;
#endif
break;
case FL_Page_Down:
break;
case FL_Home:
#ifdef __APPLE__
if (mods==0) { // scroll text one page
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
repeat_num = linesPerPage();
ascii = ctrl('N');
} else if (mods==FL_ALT) { // move cursor one page
repeat_num = linesPerPage();
ascii = ctrl('N');
} else return 1;
break;
if (mods==0) { // scroll display to the top
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
shift_position(0);
return 1;
} else return 1;
#else
repeat_num = linesPerPage();
// fall through
if (mods==0) {
ascii = ctrl('A');
} else if (mods==FL_CTRL) {
shift_position(0);
return 1;
}
#endif
case FL_Down:
break;
case FL_End:
#ifdef __APPLE__
if (mods==0) { // line down
ascii = ctrl('N');
} else if (mods==FL_CTRL) {
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
repeat_num = linesPerPage();
ascii = ctrl('N');
} else if (mods==FL_ALT) { // line end and down
if (line_end(position())==position() && position()<size())
return shift_position(line_end(position()+1)) + NORMAL_INPUT_MOVE;
else
return shift_position(line_end(position())) + NORMAL_INPUT_MOVE;
} else if (mods==FL_META) { // end of document
shift_position(size());
return 1;
} else return 1;
if (mods==0) { // scroll display to the bottom
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
shift_position(size());
return 1;
} else return 1;
#else
if (mods==0) { // line down
ascii = ctrl('N');
} else if (mods==FL_CTRL) { // scroll text up one line
// Fl_Input has no scroll control, so instead we move the cursor by one page
ascii = ctrl('N');
} else return 1;
if (mods==0) {
ascii = ctrl('E');
} else if (mods==FL_CTRL) {
shift_position(size());
return 1;
} else return 1;
#endif
break;
case FL_Home:
break;
case FL_BackSpace:
#ifdef __APPLE__
if (mods==0) { // scroll display to the top
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
shift_position(0);
return 1;
} else return 1;
if (mods==0 || mods==FL_CTRL) { // delete previous char
ascii = ctrl('H');
} else if (mods==FL_ALT) { // delete previous word
if (mark() != position()) return cut();
cut(word_start(position()), position());
return 1;
} else if (mods==FL_META) { // delete to the beginning of the line
if (mark() != position()) return cut();
cut(line_start(position()), position());
return 1;
} else return 1;
#else
if (mods==0) {
ascii = ctrl('A');
} else if (mods==FL_CTRL) {
shift_position(0);
return 1;
}
ascii = ctrl('H');
#endif
break;
case FL_End:
break;
case FL_Enter:
case FL_KP_Enter:
if (when() & FL_WHEN_ENTER_KEY) {
position(size(), 0);
maybe_do_callback();
return 1;
} else if (input_type() == FL_MULTILINE_INPUT && !readonly())
return replace(position(), mark(), "\n", 1);
else
return 0; // reserved for shortcuts
case FL_Tab:
if (Fl::event_state(FL_CTRL|FL_SHIFT) || input_type()!=FL_MULTILINE_INPUT || readonly()) return 0;
return replace(position(), mark(), &ascii, 1);
#ifdef __APPLE__
if (mods==0) { // scroll display to the bottom
// OS X scrolls the view, but does not move the cursor
// Fl_Input has no scroll control, so instead we move the cursor by one page
shift_position(size());
return 1;
} else return 1;
#else
if (mods==0) {
ascii = ctrl('E');
} else if (mods==FL_CTRL) {
shift_position(size());
return 1;
} else return 1;
#endif
break;
case FL_BackSpace:
#ifdef __APPLE__
if (mods==0 || mods==FL_CTRL) { // delete previous char
ascii = ctrl('H');
} else if (mods==FL_ALT) { // delete previous word
if (mark() != position()) return cut();
cut(word_start(position()), position());
return 1;
} else if (mods==FL_META) { // delete to the beginning of the line
if (mark() != position()) return cut();
cut(line_start(position()), position());
return 1;
} else return 1;
#else
ascii = ctrl('H');
#endif
break;
case FL_Enter:
case FL_KP_Enter:
if (when() & FL_WHEN_ENTER_KEY) {
position(size(), 0);
maybe_do_callback();
return 1;
} else if (input_type() == FL_MULTILINE_INPUT && !readonly())
return replace(position(), mark(), "\n", 1);
else
return 0; // reserved for shortcuts
case FL_Tab:
if (Fl::event_state(FL_CTRL|FL_SHIFT) || input_type()!=FL_MULTILINE_INPUT || readonly()) return 0;
return replace(position(), mark(), &ascii, 1);
#ifdef __APPLE__
case 'c' :
case 'v' :
case 'x' :
case 'z' :
// printf("'%c' (0x%02x) pressed with%s%s%s%s\n", ascii, ascii,
// Fl::event_state(FL_SHIFT) ? " FL_SHIFT" : "",
// Fl::event_state(FL_CTRL) ? " FL_CTRL" : "",
// Fl::event_state(FL_ALT) ? " FL_ALT" : "",
// Fl::event_state(FL_META) ? " FL_META" : "");
if (Fl::event_state(FL_META)) ascii -= 0x60;
// printf("using '%c' (0x%02x)...\n", ascii, ascii);
break;
case 'c' :
case 'v' :
case 'x' :
case 'z' :
// printf("'%c' (0x%02x) pressed with%s%s%s%s\n", ascii, ascii,
// Fl::event_state(FL_SHIFT) ? " FL_SHIFT" : "",
// Fl::event_state(FL_CTRL) ? " FL_CTRL" : "",
// Fl::event_state(FL_ALT) ? " FL_ALT" : "",
// Fl::event_state(FL_META) ? " FL_META" : "");
if (Fl::event_state(FL_META)) ascii -= 0x60;
// printf("using '%c' (0x%02x)...\n", ascii, ascii);
break;
#endif // __APPLE__
}
int i;
switch (ascii) {
case ctrl('A'): // go to the beginning of the current line
return shift_position(line_start(position())) + NORMAL_INPUT_MOVE;
case ctrl('B'): // go one character backward
return shift_position(position()-1) + NORMAL_INPUT_MOVE;
case ctrl('C'): // copy
return copy(1);
case ctrl('D'): // cut the next character
case ctrl('?'):
if (readonly()) {
fl_beep();
case ctrl('A'): // go to the beginning of the current line
return shift_position(line_start(position())) + NORMAL_INPUT_MOVE;
case ctrl('B'): // go one character backward
return shift_position(position()-1) + NORMAL_INPUT_MOVE;
case ctrl('C'): // copy
return copy(1);
case ctrl('D'): // cut the next character
case ctrl('?'):
if (readonly()) {
fl_beep();
return 1;
}
if (mark() != position()) return cut();
else return cut(1);
case ctrl('E'): // go to the end of the line
return shift_position(line_end(position())) + NORMAL_INPUT_MOVE;
case ctrl('F'): // go to the next character
return shift_position(position()+1) + NORMAL_INPUT_MOVE;
case ctrl('H'): // cut the previous character
if (readonly()) {
fl_beep();
return 1;
}
if (mark() != position()) cut();
else cut(-1);
return 1;
}
if (mark() != position()) return cut();
else return cut(1);
case ctrl('E'): // go to the end of the line
return shift_position(line_end(position())) + NORMAL_INPUT_MOVE;
case ctrl('F'): // go to the next character
return shift_position(position()+1) + NORMAL_INPUT_MOVE;
case ctrl('H'): // cut the previous character
if (readonly()) {
fl_beep();
case ctrl('K'): // cut to the end of the line
if (readonly()) {
fl_beep();
return 1;
}
if (position()>=size()) return 0;
i = line_end(position());
if (i == position() && i < size()) i++;
cut(position(), i);
return copy_cuts();
case ctrl('N'): // go down one line
i = position();
if (line_end(i) >= size()) return NORMAL_INPUT_MOVE;
while (repeat_num--) {
i = line_end(i);
if (i >= size()) break;
i++;
}
shift_up_down_position(i);
return 1;
}
if (mark() != position()) cut();
else cut(-1);
return 1;
case ctrl('K'): // cut to the end of the line
if (readonly()) {
fl_beep();
case ctrl('P'): // go up one line
i = position();
if (!line_start(i)) return NORMAL_INPUT_MOVE;
while(repeat_num--) {
i = line_start(i);
if (!i) break;
i--;
}
shift_up_down_position(line_start(i));
return 1;
}
if (position()>=size()) return 0;
i = line_end(position());
if (i == position() && i < size()) i++;
cut(position(), i);
return copy_cuts();
case ctrl('N'): // go down one line
i = position();
if (line_end(i) >= size()) return NORMAL_INPUT_MOVE;
while (repeat_num--) {
i = line_end(i);
if (i >= size()) break;
i++;
}
shift_up_down_position(i);
return 1;
case ctrl('P'): // go up one line
i = position();
if (!line_start(i)) return NORMAL_INPUT_MOVE;
while(repeat_num--) {
i = line_start(i);
if (!i) break;
i--;
}
shift_up_down_position(line_start(i));
return 1;
case ctrl('U'): // clear the whole document?
if (readonly()) {
fl_beep();
case ctrl('U'): // clear the whole document?
if (readonly()) {
fl_beep();
return 1;
}
return cut(0, size());
case ctrl('V'): // paste text
case ctrl('Y'):
if (readonly()) {
fl_beep();
return 1;
}
Fl::paste(*this, 1);
return 1;
}
return cut(0, size());
case ctrl('V'): // paste text
case ctrl('Y'):
if (readonly()) {
fl_beep();
return 1;
}
Fl::paste(*this, 1);
return 1;
case ctrl('X'): // cut the selected text
case ctrl('W'):
if (readonly()) {
fl_beep();
return 1;
}
copy(1);
return cut();
case ctrl('Z'): // undo
case ctrl('_'):
if (readonly()) {
fl_beep();
return 1;
}
return undo();
case ctrl('I'): // insert literal
case ctrl('J'):
case ctrl('L'):
case ctrl('M'):
if (readonly()) {
fl_beep();
return 1;
}
// insert a few selected control characters literally:
if (input_type() != FL_FLOAT_INPUT && input_type() != FL_INT_INPUT)
return replace(position(), mark(), &ascii, 1);
case ctrl('X'): // cut the selected text
case ctrl('W'):
if (readonly()) {
fl_beep();
return 1;
}
copy(1);
return cut();
case ctrl('Z'): // undo
case ctrl('_'):
if (readonly()) {
fl_beep();
return 1;
}
return undo();
case ctrl('I'): // insert literal
case ctrl('J'):
case ctrl('L'):
case ctrl('M'):
if (readonly()) {
fl_beep();
return 1;
}
// insert a few selected control characters literally:
if (input_type() != FL_FLOAT_INPUT && input_type() != FL_INT_INPUT)
return replace(position(), mark(), &ascii, 1);
}
return 0;
}

View File

@@ -1,3 +1,6 @@
//
// "$Id$"
//
// Standard dialog header file for the UTF-8 Fast Light Tool Kit (FLTK-UTF8).
//
// Copyright 2009 by Bill Spitzak and others.
@@ -423,6 +426,6 @@ extern "C" __declspec(dllimport) long __stdcall CoCreateInstance(const GUID & rc
#endif
/*
* End of "$Id$".
*/
//
// End of "$Id$".
//

View File

@@ -1,5 +1,8 @@
/* This is the utf.c file from fltk2 adapted for use in my fltk1.1 port */
/*
* "$Id$"
*
* This is the utf.c file from fltk2 adapted for use in my fltk1.1 port
*/
/* Copyright 2006-2009 by Bill Spitzak and others.
*
* This library is free software; you can redistribute it and/or
@@ -855,3 +858,7 @@ int fl_utf8test(const char* src, unsigned srclen) {
}
/** @} */
/*
* End of "$Id$".
*/

View File

@@ -1,4 +1,5 @@
// "$Id: $"
//
// "$Id$"
//
// Unicode to UTF-8 conversion functions.
//
@@ -822,6 +823,5 @@ void fl_make_path_for_file( const char *path )
/** @} */
//
// End of "$Id: $".
// End of "$Id$".
//