Next: Input Remarks, Previous: Other Input Routines, Up: Part III Input Objects [Contents][Index]
Never use FL_NO_BOX
as the boxtype.
The first color argument (col1
) to
fl_set_object_color()
controls the color of the input
field when it is not selected and the second (col2
) is the
color when selected.
To change the color of the input text or the cursor use
void fl_set_input_color(FL_OBJECT *obj, FL_COLOR tcol, FL_COLOR ccol);
Here tcol
indicates the color of the text and ccol
is
the color of the cursor.
If you want to know the colors of the text and cursor use
void fl_get_input_color(FL_OBJECT *obj, FL_COLOR *tcol, FL_COLOR *ccol);
By default, the scrollbar size is dependent on the initial size of the input box. To change the size of the scrollbars, use the following routine
void fl_set_input_scrollbarsize(FL_OBJECT *obj, int hh, int vw);
where hh
is the horizontal scrollbar height and vw
is
the vertical scrollbar width in pixels.
To determine the current settings for the horizontal scrollbar height and the vertical scrollbar width use
void fl_get_input_scrollbarsize(FL_OBJECT *obj, int *hh, int *vw);
The default scrollbar types are FL_HOR_THIN_SCROLLBAR
and
FL_VERT_THIN_SCROLLBAR
. There are two ways you can change
the default. One way is to use fl_set_defaults()
or
fl_set_scrollbar_type()
to set the application wide
default (preferred); another way is to use
fl_get_object_component()
to get the object handle to the
scrollbars and change the the object type forcibly. Although the
second method of changing the scrollbar type is not recommended, the
object handle obtained can be useful in changing the scrollbar colors
etc.
As mentioned earlier, it is possible for the application program to
change the default edit keymaps. The editing key assignment is held in
a structure of type
FL_EditKeymap
defined as follows:
typedef struct { long del_prev_char; /* delete previous char */ long del_next_char; /* delete next char */ long del_prev_word; /* delete previous word */ long del_next_word; /* delete next word */ long del_to_eol; /* delete from cursor to end of line */ long del_to_bol; /* delete from cursor to begin of line */ long clear_field; /* delete all */ long del_to_eos; /* not implemented */ long backspace; /* alternative for del_prev_char */ long moveto_prev_line; /* one line up */ long moveto_next_line; /* one line down */ long moveto_prev_char; /* one char left */ long moveto_next_char; /* one char right */ long moveto_prev_word; /* one word left */ long moveto_next_word; /* one word right */ long moveto_prev_page; /* one page up */ long moveto_next_page; /* one page down */ long moveto_bol; /* move to begining of line */ long moveto_eol; /* move to end of line */ long moveto_bof; /* move to begin of file */ long moveto_eof; /* move to end of file */ long transpose; /* switch two char positions*/ long paste; /* paste the edit buffer */ } FL_EditKeymap;
To change the default edit keymaps, the following routine is available:
void fl_set_input_editkeymap(const FL_EditKeymap *km);
with a filled or partially filled FL_EditKeymap
structure. The unfilled members must be set to 0 so the default
mapping is retained. Change of edit keymap is global and affects all
input field within the application.
Calling fl_set_input_editkeymap()
with km
set to
NULL
restores the default. All cursor keys (<Left>
,
<Home>
etc.) are reserved and their meanings hard-coded, thus
can’t be used in the mapping. For example, if you try to set
del_prev_char
to <Home>
, pressing the <Home>
key
will not delete the previous character.
To obtain the current map of the edit keys use the function
void fl_get_input_editkeymap(FL_EditKeymap *km);
with the km
argument pointing of a user supplied structure
which after the call will be set up with the current settings for
the edit keys.
In filling the keymap structure, ASCII characters (i.e., characters
with values below 128, including the control characters with values
below 32) should be specified by their ASCII codes (<Ctrl> C
is 3 etc.), while all others by their Keysym
s (XK_F1
etc.). Control and special character combinations can be obtained by adding
FL_CONTROL_MASK
to the Keysym
. To specify Meta
add
FL_ALT_MASK
to the key value.
FL_EditKeymap ekm; memset(&ekm, 0, sizeof ekm); /* zero struct */ ekm.del_prev_char = 8; /* <Backspace> */ ekm.del_prev_word = 8 | FL_CONTROL_MASK; /* <Ctrl><Backspace> */ ekm.del_next_char = 127; /* <Delete> */ ekm.del_prev_word = 'h' | FL_ALT_MASK; /* <Meta>h */ ekm.del_next_word = 127 | FL_ALT_MASK; /* <Meta><Delete> */ ekm.moveto_bof = XK_F1; /* <F1> */ ekm.moveto_eof = XK_F1 | FL_CONTROL_MASK; /* <Ctrl><F1> */ fl_set_input_editkeymap(&ekm);
Note: In earlier versions of XForms (all version before 1.2) the
default behaviour of the edit keys was slightly different which
doesn’t fit modern user expectations, as was the way the way the
edit keymap was to be set up. If you use XForms for some older
application that makes massive use of the "classical" behaviour
you can compile XForms to use the old behaviour by using the
--enable-classic-editkeys
option when configuring the
library for compilation.
Next: Input Remarks, Previous: Other Input Routines, Up: Part III Input Objects [Contents][Index]