* scroll-bar-toolkit-scroll
@ 2002-07-29 1:12 Richard Stallman
2002-07-29 10:51 ` scroll-bar-toolkit-scroll Gerd Moellmann
0 siblings, 1 reply; 16+ messages in thread
From: Richard Stallman @ 2002-07-29 1:12 UTC (permalink / raw)
Cc: emacs-devel
scroll-bar-toolkit-scroll has no doc string; it needs one. More
importantly, I am concerned about what it does. It is not
compatible with the non-toolkit scroll commands. What model
was it designed to be compatible with?
I also wonder if it is being triggered at the proper time.
Is it supposed to let you drag the handle? To do that properly,
it has to be activated on the down event, but that does not seem
to be the case. I can't really understand the comment in keyboard.c
around line 5188; maybe it says that Emacs does not get a down event,
or maybe only that Emacs can't distinguish down from up. Which is it?
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-07-29 1:12 scroll-bar-toolkit-scroll Richard Stallman
@ 2002-07-29 10:51 ` Gerd Moellmann
2002-07-30 0:59 ` scroll-bar-toolkit-scroll Richard Stallman
0 siblings, 1 reply; 16+ messages in thread
From: Gerd Moellmann @ 2002-07-29 10:51 UTC (permalink / raw)
Cc: emacs-devel
Richard Stallman <rms@gnu.org> writes:
> scroll-bar-toolkit-scroll has no doc string; it needs one. More
> importantly, I am concerned about what it does. It is not
> compatible with the non-toolkit scroll commands. What model
> was it designed to be compatible with?
None.
> I also wonder if it is being triggered at the proper time.
> Is it supposed to let you drag the handle? To do that properly,
> it has to be activated on the down event, but that does not seem
> to be the case. I can't really understand the comment in keyboard.c
> around line 5188; maybe it says that Emacs does not get a down event,
> or maybe only that Emacs can't distinguish down from up. Which is it?
Scroll bar widgets work different from Emacs' scroll bars. One
registers a callback function with the widget that is invoked when
actions happen on the scroll bar, for instance when the scroll bar
handle is dragged, when a scroll bar arrow is clicked etc. The widget
does the translation of user actions to scroll bar actions, depending
on its capabilities and specified user translations (I mean the normal
X way of customizing X widgets). The scroll bar actions received by
the callback function are converted to certain "widget events" that
are handled in Lisp.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-07-29 10:51 ` scroll-bar-toolkit-scroll Gerd Moellmann
@ 2002-07-30 0:59 ` Richard Stallman
2002-07-30 9:12 ` scroll-bar-toolkit-scroll Gerd Moellmann
0 siblings, 1 reply; 16+ messages in thread
From: Richard Stallman @ 2002-07-30 0:59 UTC (permalink / raw)
Cc: emacs-devel
The widget
does the translation of user actions to scroll bar actions, depending
on its capabilities and specified user translations (I mean the normal
X way of customizing X widgets). The scroll bar actions received by
the callback function are converted to certain "widget events" that
are handled in Lisp.
Does this include down-events? If so, how does the generated Lispy event
indicate whether it is down or up?
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-07-30 0:59 ` scroll-bar-toolkit-scroll Richard Stallman
@ 2002-07-30 9:12 ` Gerd Moellmann
2002-07-31 5:54 ` scroll-bar-toolkit-scroll Richard Stallman
0 siblings, 1 reply; 16+ messages in thread
From: Gerd Moellmann @ 2002-07-30 9:12 UTC (permalink / raw)
Cc: emacs-devel
Richard Stallman <rms@gnu.org> writes:
> The widget
> does the translation of user actions to scroll bar actions, depending
> on its capabilities and specified user translations (I mean the normal
> X way of customizing X widgets). The scroll bar actions received by
> the callback function are converted to certain "widget events" that
> are handled in Lisp.
>
> Does this include down-events? If so, how does the generated Lispy event
> indicate whether it is down or up?
IIRC, the scroll bar callback is invoked with action information only,
See, for instance, the LessTif/Motif callback xm_scroll_callback in
xterm.c. AFAIK, the callback cannot tell which user actions caused
the action, i.e. up/down events etc.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-07-30 9:12 ` scroll-bar-toolkit-scroll Gerd Moellmann
@ 2002-07-31 5:54 ` Richard Stallman
2002-07-31 11:58 ` scroll-bar-toolkit-scroll Gerd Moellmann
0 siblings, 1 reply; 16+ messages in thread
From: Richard Stallman @ 2002-07-31 5:54 UTC (permalink / raw)
Cc: emacs-devel
IIRC, the scroll bar callback is invoked with action information only,
Could you explain what "action information" means?
(I'm assuming you are the expert on this--wasn't it you who
wrote that code? If I should ask someone else instead, please
tell me who.)
See, for instance, the LessTif/Motif callback xm_scroll_callback in
xterm.c. AFAIK, the callback cannot tell which user actions caused
the action, i.e. up/down events etc.
I see one "action" is XmCR_DRAG. Can you find out, and tell me,
exactly when that is given? Is it for the down event on the slider,
or for an up event after sliding the slider, or what?
What does a callback with that code signify?
I noticed that xm_scroll_callback calls x_send_scroll_bar_event:
/* Send a client message with message type Xatom_Scrollbar for a
scroll action to the frame of WINDOW. PART is a value identifying
the part of the scroll bar that was clicked on. PORTION is the
amount to scroll of a whole of WHOLE. */
static void
x_send_scroll_bar_event (window, part, portion, whole)
I don't understand the role of this function in the overall
implementation of toolkit scroll bars. Could you explain it?
It seems to be sending some sort of X event to Emacs's X window.
Why is that? What happens when that client message "arrives"
again? Which part of the code in Emacs handles it then?
And why not call it directly instead of sending a message
to the X server?
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-07-31 5:54 ` scroll-bar-toolkit-scroll Richard Stallman
@ 2002-07-31 11:58 ` Gerd Moellmann
2002-08-01 16:51 ` scroll-bar-toolkit-scroll Richard Stallman
2002-08-09 7:12 ` scroll-bar-toolkit-scroll Stefan Monnier
0 siblings, 2 replies; 16+ messages in thread
From: Gerd Moellmann @ 2002-07-31 11:58 UTC (permalink / raw)
Cc: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 2453 bytes --]
Richard Stallman <rms@gnu.org> writes:
> IIRC, the scroll bar callback is invoked with action information only,
>
> Could you explain what "action information" means?
I meant "user action". In the Motif case, for example the scroll bar
callback in invoked for user action meaning "line down", "page up" etc.
> (I'm assuming you are the expert on this--wasn't it you who
> wrote that code? If I should ask someone else instead, please
> tell me who.)
I wouldn't call myself an expert on this stuff. Stefan, BTW, also
worked on the scroll bar code. He probably knows at least as much
about this as I do.
> See, for instance, the LessTif/Motif callback xm_scroll_callback in
> xterm.c. AFAIK, the callback cannot tell which user actions caused
> the action, i.e. up/down events etc.
>
> I see one "action" is XmCR_DRAG. Can you find out, and tell me,
> exactly when that is given?
The only info I have is a man page. I'll attach it at the end.
> Is it for the down event on the slider, or for an up event after
> sliding the slider, or what?
As I read the man page, XmCR_DRAG is received while the user is
dragging the slider for "each incremental change of position", so it
would be neither up nor down event.
>
> What does a callback with that code signify?
>
> I noticed that xm_scroll_callback calls x_send_scroll_bar_event:
>
> /* Send a client message with message type Xatom_Scrollbar for a
> scroll action to the frame of WINDOW. PART is a value identifying
> the part of the scroll bar that was clicked on. PORTION is the
> amount to scroll of a whole of WHOLE. */
>
> static void
> x_send_scroll_bar_event (window, part, portion, whole)
>
> I don't understand the role of this function in the overall
> implementation of toolkit scroll bars. Could you explain it?
>
> It seems to be sending some sort of X event to Emacs's X window.
> Why is that? What happens when that client message "arrives"
> again? Which part of the code in Emacs handles it then?
> And why not call it directly instead of sending a message
> to the X server?
I've used x_send_scroll_bar_event to "translate" the invocation of the
scroll bar callback to an X event that is handled in XTread_socket
like other events. This seemed to be the easiest way to orderly
produce a scroll bar input event in the kdb queue because I saw no way
to predict when the callback is called (asynchronously).
[-- Attachment #2: XmScrollBar man page --]
[-- Type: text/plain, Size: 44999 bytes --]
XmScrollBar(3) XmScrollBar(3)
N\bNA\bAM\bME\bE
X\bXm\bmS\bSc\bcr\bro\bol\bll\blB\bBa\bar\br -- The ScrollBar widget class
S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
#include <Xm/ScrollBar.h>
D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
The ScrollBar widget allows the user to view data that is
too large to be displayed all at once. ScrollBars are usu-
ally located inside a ScrolledWindow and adjacent to the
widget that contains the data to be viewed. When the user
interacts with the ScrollBar, the data within the other
widget scrolls.
A ScrollBar consists of two arrows placed at each end of a
rectangle. The rectangle is called the scroll region. A
smaller rectangle, called the slider, is placed within the
scroll region. The data is scrolled by clicking either
arrow, selecting on the scroll region, or dragging the
slider. When an arrow is selected, the slider within the
scroll region is moved in the direction of the arrow by an
amount supplied by the application. If the mouse button is
held down, the slider continues to move at a constant
rate.
The ratio of the slider size to the scroll region size
typically corresponds to the relationship between the size
of the visible data and the total size of the data. For
example, if 10 percent of the data is visible, the slider
typically occupies 10 percent of the scroll region. This
provides the user with a visual clue to the size of the
invisible data.
If the ScrollBar parent is an automatic ScrolledWindow,
the X\bXm\bmN\bNt\btr\bra\bav\bve\ber\brs\bsa\bal\blO\bOn\bn default is True. Otherwise, the default
is False.
ScrollBar holds the X\bXm\bmQ\bQT\bTn\bna\bav\bvi\big\bga\bat\bto\bor\br traits.
C\bCl\bla\bas\bss\bse\bes\bs
ScrollBar inherits behavior, resources, and traits from
the C\bCo\bor\bre\be and X\bXm\bmP\bPr\bri\bim\bmi\bit\bti\biv\bve\be classes.
The class pointer is x\bxm\bmS\bSc\bcr\bro\bol\bll\blB\bBa\bar\brW\bWi\bid\bdg\bge\bet\btC\bCl\bla\bas\bss\bs.
The class name is X\bXm\bmS\bSc\bcr\bro\bol\bll\blB\bBa\bar\br.
N\bNe\bew\bw R\bRe\bes\bso\bou\bur\brc\bce\bes\bs
The following table defines a set of widget resources used
by the programmer to specify data. The programmer can also
set the resource values for the inherited classes to set
attributes for this widget. To reference a resource by
name or by class in a .\b.X\bXd\bde\bef\bfa\bau\bul\blt\bts\bs file, remove the X\bXm\bmN\bN or
X\bXm\bmC\bC prefix and use the remaining letters. To specify one
of the defined values for a resource in a .\b.X\bXd\bde\bef\bfa\bau\bul\blt\bts\bs file,
remove the X\bXm\bm prefix and use the remaining letters (in
either lowercase or uppercase, but include any underscores
between words). The codes in the access column indicate
if the given resource can be set at creation time (C), set
by using X\bXt\btS\bSe\bet\btV\bVa\bal\blu\bue\bes\bs (S), retrieved by using X\bXt\btG\bGe\bet\btV\bVa\bal\blu\bue\bes\bs
(G), or is not applicable (N/A).
+------------------------------------------------------------------------------------------+
| | X\bXm\bmS\bSc\bcr\bro\bol\bll\blB\bBa\bar\br R\bRe\bes\bso\bou\bur\br|\bc\bce\be S\bSe\bet\bt | | |
|N\bNa\bam\bme\be | C\bCl\bla\bas\bss\bs | T\bTy\byp\bpe\be | D\bDe\bef\bfa\bau\bul\blt\bt | A\bAc\bcc\bce\bes\bss\bs |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNdecrementCallback | XmCCallback | XtCallbackList | NULL | C |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNdragCallback | XmCCallback | XtCallbackList | NULL | C |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNeditable | XmCEditable | Boolean | True | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNincrement | XmCIncrement | int | 1 | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNincrementCallback | XmCCallback | XtCallbackList | NULL | C |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNinitialDelay | XmCInitialDelay | int | 250 ms | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNmaximum | XmCMaximum | int | 100 | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNminimum | XmCMinimum | int | 0 | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNorientation | XmCOrientation | unsigned char | XmVERTICAL | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNpageDecrementCallback | XmCCallback | XtCallbackList | NULL | C |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNpageIncrement | XmCPageIncrement | int | 10 | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNpageIncrementCallback | XmCCallback | XtCallbackList | NULL | C |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNprocessingDirection | XmCProcessingDirection | unsigned char | dynamic | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNrepeatDelay | XmCRepeatDelay | int | 50 ms | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNshowArrows | XmCShowArrows | XtEnum | XmEACH_SIDE | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNsliderSize | XmCSliderSize | int | dynamic | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNsliderMark | XmCSliderMark | XtEnum | dynamic | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNsliderVisual | XmCSliderVisual | XtEnum | XmSHADOWED | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNslidingMode | XmCSlidingMode | XtEnum | XmSLIDER | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNsnapBackMultiple | XmCSnapBackMultiple | unsigned short | MaxValue | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNtoBottomCallback | XmCCallback | XtCallbackList | NULL | C |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNtoTopCallback | XmCCallback | XtCallbackList | NULL | C |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNtroughColor | XmCTroughColor | Pixel | dynamic | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNvalue | XmCValue | int | dynamic | CSG |
+-------------------------+------------------------+----------------+-------------+--------+
|XmNvalueChangedCallback | XmCCallback | XtCallbackList | NULL | C |
+-------------------------+------------------------+----------------+-------------+--------+
+-------------------------+------------------------+----------------+-------------+--------+
X\bXm\bmN\bNd\bde\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk
Specifies the list of callbacks that is called
when the user takes an action that moves the
ScrollBar by one increment and the value
decreases. The reason passed to the callback is
X\bXm\bmC\bCR\bR_\b_D\bDE\bEC\bCR\bRE\bEM\bME\bEN\bNT\bT.
X\bXm\bmN\bNd\bdr\bra\bag\bgC\bCa\bal\bll\blb\bba\bac\bck\bk
Specifies the list of callbacks that is called
on each incremental change of position when the
slider is being dragged. The reason sent by the
callback is X\bXm\bmC\bCR\bR_\b_D\bDR\bRA\bAG\bG.
X\bXm\bmN\bNe\bed\bdi\bit\bta\bab\bbl\ble\be
Specifies how ScrollBar will react to user
input. This resource can be True or False val-
ues, as follows:
T\bTr\bru\bue\be Allows the scrollbar to be sensitive
to user input. This is the default
value.
F\bFa\bal\bls\bse\be Makes the Scale scrollbar insensitive
to user input. The visual is not
greyed out. This value would mostly be
used in X\bXm\bmT\bTH\bHE\bER\bRM\bMO\bOM\bME\bET\bTE\bER\bR mode.
When X\bXm\bmN\bNe\bed\bdi\bit\bta\bab\bbl\ble\be is used on a widget it sets the
dropsite to X\bXm\bmD\bDR\bRO\bOP\bP_\b_S\bSI\bIT\bTE\bE_\b_A\bAC\bCT\bTI\bIV\bVE\bE.
X\bXm\bmN\bNi\bin\bnc\bcr\bre\bem\bme\ben\bnt\bt
Specifies the amount by which the value
increases or decreases when the user takes an
action that moves the slider by one increment.
The actual change in value is the lesser of X\bXm\bmN\bN-\b-
i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bt and (previous X\bXm\bmN\bNv\bva\bal\blu\bue\be - X\bXm\bmN\bNm\bmi\bin\bni\bim\bmu\bum\bm)
when the slider moves to the end of the Scroll-
Bar with the minimum value, and the lesser of
X\bXm\bmN\bNi\bin\bnc\bcr\bre\bem\bme\ben\bnt\bt and (X\bXm\bmN\bNm\bma\bax\bxi\bim\bmu\bum\bm- X\bXm\bmN\bNs\bsl\bli\bid\bde\ber\brS\bSi\biz\bze\be -
previous X\bXm\bmN\bNv\bva\bal\blu\bue\be) when the slider moves to the
end of the ScrollBar with the maximum value.
The value of this resource must be greater than
0 (zero).
X\bXm\bmN\bNi\bin\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk
Specifies the list of callbacks that is called
when the user takes an action that moves the
ScrollBar by one increment and the value
increases. The reason passed to the callback is
X\bXm\bmC\bCR\bR_\b_I\bIN\bNC\bCR\bRE\bEM\bME\bEN\bNT\bT.
X\bXm\bmN\bNi\bin\bni\bit\bti\bia\bal\blD\bDe\bel\bla\bay\by
Specifies the amount of time in milliseconds to
wait before starting continuous slider movement
while a button is pressed in an arrow or the
scroll region. The value of this resource must
be greater than 0 (zero).
X\bXm\bmN\bNm\bma\bax\bxi\bim\bmu\bum\bm
Specifies the slider's maximum value. X\bXm\bmN\bNm\bma\bax\bxi\bi-\b-
m\bmu\bum\bm must be greater than X\bXm\bmN\bNm\bmi\bin\bni\bim\bmu\bum\bm.
X\bXm\bmN\bNm\bmi\bin\bni\bim\bmu\bum\bm
Specifies the slider's minimum value. X\bXm\bmN\bNm\bma\bax\bxi\bi-\b-
m\bmu\bum\bm must be greater than X\bXm\bmN\bNm\bmi\bin\bni\bim\bmu\bum\bm.
X\bXm\bmN\bNo\bor\bri\bie\ben\bnt\bta\bat\bti\bio\bon\bn
Specifies whether the ScrollBar is displayed
vertically or horizontally. This resource can
have values of X\bXm\bmV\bVE\bER\bRT\bTI\bIC\bCA\bAL\bL and X\bXm\bmH\bHO\bOR\bRI\bIZ\bZO\bON\bNT\bTA\bAL\bL.
X\bXm\bmN\bNp\bpa\bag\bge\beD\bDe\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk
Specifies the list of callbacks that is called
when the user takes an action that moves the
ScrollBar by one page increment and the value
decreases. The reason passed to the callback is
X\bXm\bmC\bCR\bR_\b_P\bPA\bAG\bGE\bE_\b_D\bDE\bEC\bCR\bRE\bEM\bME\bEN\bNT\bT.
X\bXm\bmN\bNp\bpa\bag\bge\beI\bIn\bnc\bcr\bre\bem\bme\ben\bnt\bt
Specifies the amount by which the value
increases or decreases when the user takes an
action that moves the slider by one page incre-
ment. The actual change in value is the lesser
of X\bXm\bmN\bNp\bpa\bag\bge\beI\bIn\bnc\bcr\bre\bem\bme\ben\bnt\bt and (previous X\bXm\bmN\bNv\bva\bal\blu\bue\be -
X\bXm\bmN\bNm\bmi\bin\bni\bim\bmu\bum\bm) when the slider moves to the end of
the ScrollBar with the minimum value, and the
lesser of X\bXm\bmN\bNp\bpa\bag\bge\beI\bIn\bnc\bcr\bre\bem\bme\ben\bnt\bt and (X\bXm\bmN\bNm\bma\bax\bxi\bim\bmu\bum\bm-
X\bXm\bmN\bNs\bsl\bli\bid\bde\ber\brS\bSi\biz\bze\be - previous X\bXm\bmN\bNv\bva\bal\blu\bue\be) when the
slider moves to the end of the ScrollBar with
the maximum value. The value of this resource
must be greater than 0 (zero).
X\bXm\bmN\bNp\bpa\bag\bge\beI\bIn\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk
Specifies the list of callbacks that is called
when the user takes an action that moves the
ScrollBar by one page increment and the value
increases. The reason passed to the callback is
X\bXm\bmC\bCR\bR_\b_P\bPA\bAG\bGE\bE_\b_I\bIN\bNC\bCR\bRE\bEM\bME\bEN\bNT\bT.
X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn
Specifies whether the value for X\bXm\bmN\bNm\bma\bax\bxi\bim\bmu\bum\bm
should be on the right or left side of X\bXm\bmN\bNm\bmi\bin\bni\bi-\b-
m\bmu\bum\bm for horizontal ScrollBars or above or below
X\bXm\bmN\bNm\bmi\bin\bni\bim\bmu\bum\bm for vertical ScrollBars. This
resource can have values of X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_T\bTO\bOP\bP,\b,
X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_B\bBO\bOT\bTT\bTO\bOM\bM,\b, X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_L\bLE\bEF\bFT\bT, and
X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_R\bRI\bIG\bGH\bHT\bT. If the ScrollBar is oriented
vertically, the default value is X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_B\bBO\bOT\bT-\b-
T\bTO\bOM\bM. If the ScrollBar is oriented horizontally,
the default value depends on the X\bXm\bmN\bNl\bla\bay\byo\bou\but\btD\bDi\bir\bre\bec\bc-\b-
t\bti\bio\bon\bn resource of the widget.
X\bXm\bmN\bNr\bre\bep\bpe\bea\bat\btD\bDe\bel\bla\bay\by
Specifies the amount of time in milliseconds to
wait between subsequent slider movements after
the X\bXm\bmN\bNi\bin\bni\bit\bti\bia\bal\blD\bDe\bel\bla\bay\by has been processed. The
value of this resource must be greater than 0
(zero).
X\bXm\bmN\bNs\bsh\bho\bow\bwA\bAr\brr\bro\bow\bws\bs
Specifies whether the arrows are displayed and
how they are to be displayed. This resource can
take the following values:
X\bXm\bmE\bEA\bAC\bCH\bH_\b_S\bSI\bID\bDE\bE
Indicates that one arrow is displayed
on each end of the ScrollBar slider.
This corresponds to a value of True in
previous releases.
X\bXm\bmM\bMA\bAX\bX_\b_S\bSI\bID\bDE\bE
Indicates that both arrows are dis-
played on the X\bXm\bmN\bNm\bma\bax\bxi\bim\bmu\bum\bm side of the
ScrollBar slider.
X\bXm\bmM\bMI\bIN\bN_\b_S\bSI\bID\bDE\bE
Indicates that both arrows are dis-
played on the X\bXm\bmN\bNm\bmi\bin\bni\bim\bmu\bum\bm side of the
ScrollBar slider.
X\bXm\bmN\bNO\bON\bNE\bE Indicates that no arrows are dis-
played. This corresponds to a value of
False in previous releases.
X\bXm\bmE\bEA\bAC\bCH\bH_\b_S\bSI\bID\bDE\bE is the default value.
X\bXm\bmN\bNs\bsl\bli\bid\bde\ber\brM\bMa\bar\brk\bk
Specifies the shape the slider is to be dis-
played in. This resource can take the following
values:
X\bXm\bmE\bET\bTC\bCH\bHE\bED\bD_\b_L\bLI\bIN\bNE\bE
Specifies the slider as an etched
line.
X\bXm\bmN\bNO\bON\bNE\bE Specifies the slider as a foregrounded
rectangle. This is the default for a
regular slider.
X\bXm\bmR\bRO\bOU\bUN\bND\bD_\b_M\bMA\bAR\bRK\bK
Specifies the slider as a shadowed
circle. This is the default when the
slider is a thermometer.
X\bXm\bmT\bTH\bHU\bUM\bMB\bB_\b_M\bMA\bAR\bRK\bK
Specifies the slider as a series of
three etched lines centered in the
middle of the slider.
X\bXm\bmN\bNs\bsl\bli\bid\bdi\bin\bng\bgM\bMo\bod\bde\be
Specifies the mode the slider works in. There
are two possible modes:
X\bXm\bmS\bSL\bLI\bID\bDE\bER\bR Allows the slider to move freely
between the minimum and maximum ends
of the scale. This is the default
value.
X\bXm\bmT\bTH\bHE\bER\bRM\bMO\bOM\bME\bET\bTE\bER\bR
Forces the slider to be anchored to
one side of the trough area.
X\bXm\bmN\bNs\bsl\bli\bid\bde\ber\brS\bSi\biz\bze\be
Specifies the length of the slider between the
values of 1 and (X\bXm\bmN\bNm\bma\bax\bxi\bim\bmu\bum\bm - X\bXm\bmN\bNm\bmi\bin\bni\bim\bmu\bum\bm). The
value is constrained to be within these inclu-
sive bounds. The default value is (X\bXm\bmN\bNm\bma\bax\bxi\bim\bmu\bum\bm -
X\bXm\bmN\bNm\bmi\bin\bni\bim\bmu\bum\bm) divided by 10, with a minimum of 1.
X\bXm\bmN\bNs\bsl\bli\bid\bde\ber\brV\bVi\bis\bsu\bua\bal\bl
Specifies the color of the slider visual. This
resource can take the following values:
X\bXm\bmB\bBA\bAC\bCK\bKG\bGR\bRO\bOU\bUN\bND\bD_\b_C\bCO\bOL\bLO\bOR\bR
Specifies that the slider visual is in
the background color.
X\bXm\bmF\bFO\bOR\bRE\bEG\bGR\bRO\bOU\bUN\bND\bD_\b_C\bCO\bOL\bLO\bOR\bR
Specifies that the slider visual is in
the foreground color.
X\bXm\bmS\bSH\bHA\bAD\bDO\bOW\bWE\bED\bD_\b_B\bBA\bAC\bCK\bKG\bGR\bRO\bOU\bUN\bND\bD
Specifies that the slider visual is in
the background color, with a shadow.
This is the default for a regular
slider.
X\bXm\bmT\bTR\bRO\bOU\bUG\bGH\bH_\b_C\bCO\bOL\bLO\bOR\bR
Specifies that the slider visual is in
the trough color. This is the default
when the slider is a thermometer.
X\bXm\bmN\bNs\bsn\bna\bap\bpB\bBa\bac\bck\bkM\bMu\bul\blt\bti\bip\bpl\ble\be
Specifies the distance over which the scrollbar
slider snaps back to its original position when
the user drags the mouse outside the ScrollBar
edge. This distance is defined in terms of mul-
tiples of the width of the slider. For example,
a multiple of 0 (zero) causes the slider to snap
back as soon as the pointer moves out of the
ScrollBar frame, a multiple of 1 causes the
slider to snap back as soon as the pointer moves
beyond 1 ScrollBar width of the ScrollBar edge.
Whenever the slider snaps back, the ScrollBar
d\bdr\bra\bag\bgC\bCa\bal\bll\blb\bba\bac\bck\bk is called if there is one.
The default value is large enough to prevent
unwanted snapBack activity if the mouse is moved
within the boundaries of any reasonable screen.
To reset the default, set this resource to a
large value, such as 10000.
X\bXm\bmN\bNt\bto\boB\bBo\bot\btt\bto\bom\bmC\bCa\bal\bll\blb\bba\bac\bck\bk
Specifies the list of callbacks that is called
when the user takes an action that moves the
slider to the end of the ScrollBar with the max-
imum value. The reason passed to the callback
is X\bXm\bmC\bCR\bR_\b_T\bTO\bO_\b_B\bBO\bOT\bTT\bTO\bOM\bM.
X\bXm\bmN\bNt\bto\boT\bTo\bop\bpC\bCa\bal\bll\blb\bba\bac\bck\bk
Specifies the list of callbacks that is called
when the user takes an action that moves the
slider to the end of the ScrollBar with the min-
imum value. The reason passed to the callback
is X\bXm\bmC\bCR\bR_\b_T\bTO\bO_\b_T\bTO\bOP\bP.
X\bXm\bmN\bNt\btr\bro\bou\bug\bgh\bhC\bCo\bol\blo\bor\br
Specifies the color of the slider trough. This
color defaults to the color used for selections.
X\bXm\bmN\bNv\bva\bal\blu\bue\be Specifies the slider's position, between X\bXm\bmN\bNm\bmi\bin\bn-\b-
i\bim\bmu\bum\bm and (X\bXm\bmN\bNm\bma\bax\bxi\bim\bmu\bum\bm - X\bXm\bmN\bNs\bsl\bli\bid\bde\ber\brS\bSi\biz\bze\be). The
value is constrained to be within these inclu-
sive bounds. The initial value of this resource
is the larger of 0 (zero) and X\bXm\bmN\bNm\bmi\bin\bni\bim\bmu\bum\bm.
X\bXm\bmN\bNv\bva\bal\blu\bue\beC\bCh\bha\ban\bng\bge\bed\bdC\bCa\bal\bll\blb\bba\bac\bck\bk
Specifies the list of callbacks that is called
when the slider is released after being dragged.
These callbacks are also called in place of X\bXm\bmN\bN-\b-
i\bin\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk, X\bXm\bmN\bNd\bde\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk, X\bXm\bmN\bN-\b-
p\bpa\bag\bge\beI\bIn\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk, X\bXm\bmN\bNp\bpa\bag\bge\beD\bDe\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk,
X\bXm\bmN\bNt\bto\boT\bTo\bop\bpC\bCa\bal\bll\blb\bba\bac\bck\bk, or X\bXm\bmN\bNt\bto\boB\bBo\bot\btt\bto\bom\bmC\bCa\bal\bll\blb\bba\bac\bck\bk when
one of these callback lists would normally be
called but the value of the corresponding
resource is NULL. The reason passed to the
callback is X\bXm\bmC\bCR\bR_\b_V\bVA\bAL\bLU\bUE\bE_\b_C\bCH\bHA\bAN\bNG\bGE\bED\bD.
I\bIn\bnh\bhe\ber\bri\bit\bte\bed\bd R\bRe\bes\bso\bou\bur\brc\bce\bes\bs
ScrollBar inherits behavior and resources from the super-
classes described in the following tables. For a complete
description of each resource, refer to the reference page
for that superclass.
+---------------------------------------------------------------------------------------------------+
| | X\bXm\bmP\bPr\bri\bim\bmi\bit\bti\biv\bve\be|R\bRe\bes\bso\bou\bur\brc\bce\be S\bSe\bet\bt | | |
|N\bNa\bam\bme\be | C\bCl\bla\bas\bss\bs | T\bTy\byp\bpe\be | D\bDe\bef\bfa\bau\bul\blt\bt | A\bAc\bcc\bce\bes\bss\bs |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNbottomShadowColor | XmCBottomShadowColor | Pixel | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNbottomShadowPixmap | XmCBottomShadowPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNconvertCallback | XmCCallback | XtCallbackList | NULL | C |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNforeground | XmCForeground | Pixel | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNhelpCallback | XmCCallback | XtCallbackList | NULL | C |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNhighlightColor | XmCHighlightColor | Pixel | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNhighlightOnEnter | XmCHighlightOnEnter | Boolean | False | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNhighlightPixmap | XmCHighlightPixmap | Pixmap | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNhighlightThickness | XmCHighlightThickness | Dimension | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNlayoutDirection | XmCLayoutDirection | XmDirection | dynamic | CG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNnavigationType | XmCNavigationType | XmNavigationType | XmSTICKY_TAB_GROUP | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNpopupHandlerCallback | XmCCallback | XtCallbackList | NULL | C |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNshadowThickness | XmCShadowThickness | Dimension | 2 | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNtopShadowColor | XmCTopShadowColor | Pixel | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNtopShadowPixmap | XmCTopShadowPixmap | Pixmap | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNtraversalOn | XmCTraversalOn | Boolean | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNunitType | XmCUnitType | unsigned char | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNuserData | XmCUserData | XtPointer | NULL | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
+------------------------+-----------------------+------------------+----------------------+--------+
+---------------------------------------------------------------------------------------------------------------+
| | C\bCo\bor\bre\be R\bRe\bes\bso\bou\bur\brc\bce\be S\bSe\be|\bt\bt | | |
|N\bNa\bam\bme\be | C\bCl\bla\bas\bss\bs | T\bTy\byp\bpe\be | D\bDe\bef\bfa\bau\bul\blt\bt | A\bAc\bcc\bce\bes\bss\bs |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNaccelerators | XmCAccelerators | XtAccelerators | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNancestorSensitive | XmCSensitive | Boolean | dynamic | G |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNbackground | XmCBackground | Pixel | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNbackgroundPixmap | XmCPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNborderColor | XmCBorderColor | Pixel | XtDefaultForeground | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNborderPixmap | XmCPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNborderWidth | XmCBorderWidth | Dimension | 0 | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNcolormap | XmCColormap | Colormap | dynamic | CG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNdepth | XmCDepth | int | dynamic | CG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNdestroyCallback | XmCCallback | XtCallbackList | NULL | C |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNheight | XmCHeight | Dimension | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNinitialResourcesPersistent | XmCInitialResourcesPersistent | Boolean | True | C |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNmappedWhenManaged | XmCMappedWhenManaged | Boolean | True | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNscreen | XmCScreen | Screen * | dynamic | CG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNsensitive | XmCSensitive | Boolean | True | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNtranslations | XmCTranslations | XtTranslations | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNwidth | XmCWidth | Dimension | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNx | XmCPosition | Position | 0 | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNy | XmCPosition | Position | 0 | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
+------------------------------+-------------------------------+----------------+----------------------+--------+
C\bCa\bal\bll\blb\bba\bac\bck\bk I\bIn\bnf\bfo\bor\brm\bma\bat\bti\bio\bon\bn
A pointer to the following structure is passed to each
callback:
typedef struct
{
int _\br_\be_\ba_\bs_\bo_\bn;
XEvent _\b* _\be_\bv_\be_\bn_\bt;
int _\bv_\ba_\bl_\bu_\be;
int _\bp_\bi_\bx_\be_\bl;
} XmScrollBarCallbackStruct;
_\br_\be_\ba_\bs_\bo_\bn Indicates why the callback was invoked.
_\be_\bv_\be_\bn_\bt Points to the X\bXE\bEv\bve\ben\bnt\bt that triggered the call-
back.
_\bv_\ba_\bl_\bu_\be Contains the new slider location value.
_\bp_\bi_\bx_\be_\bl Is used only for X\bXm\bmN\bNt\bto\boT\bTo\bop\bpC\bCa\bal\bll\blb\bba\bac\bck\bk and X\bXm\bmN\bNt\bto\boB\bBo\bot\bt-\b-
t\bto\bom\bmC\bCa\bal\bll\blb\bba\bac\bck\bk. For horizontal ScrollBars, it con-
tains the _\bx coordinate of where the mouse button
selection occurred. For vertical ScrollBars, it
contains the _\by coordinate.
T\bTr\bra\ban\bns\bsl\bla\bat\bti\bio\bon\bns\bs
X\bXm\bmS\bSc\bcr\bro\bol\bll\blB\bBa\bar\br includes translations from Primitive. The
X\bXm\bmS\bSc\bcr\bro\bol\bll\blB\bBa\bar\br translations are described in the following
list.
The following key names are listed in the X standard key
event translation table syntax. This format is the one
used by Motif to specify the widget actions corresponding
to a given key. A brief overview of the format is pro-
vided under V\bVi\bir\brt\btu\bua\bal\blB\bBi\bin\bnd\bdi\bin\bng\bgs\bs(3). For a complete descrip-
tion of the format, please refer to the X Toolkit Instrin-
sics Documentation.
~\b~s\bs ~\b~c\bc ~\b~m\bm ~\b~a\ba <\b<B\bBt\btn\bn1\b1D\bDo\bow\bwn\bn>\b>:
Select()
~\b~s\bs ~\b~c\bc ~\b~m\bm ~\b~a\ba <\b<B\bBt\btn\bn1\b1U\bUp\bp>\b>:
Release()
~\b~s\bs ~\b~c\bc ~\b~m\bm ~\b~a\ba B\bBu\but\btt\bto\bon\bn1\b1<\b<P\bPt\btr\brM\bMo\bov\bve\bed\bd>\b>:
Moved()
~\b~s\bs ~\b~c\bc ~\b~m\bm ~\b~a\ba <\b<B\bBt\btn\bn2\b2D\bDo\bow\bwn\bn>\b>:
Select()
~\b~s\bs ~\b~c\bc ~\b~m\bm ~\b~a\ba <\b<B\bBt\btn\bn2\b2U\bUp\bp>\b>:
Release()
~\b~s\bs ~\b~c\bc ~\b~m\bm ~\b~a\ba B\bBu\but\btt\bto\bon\bn2\b2<\b<P\bPt\btr\brM\bMo\bov\bve\bed\bd>\b>:
Moved()
~\b~s\bs c\bc ~\b~m\bm ~\b~a\ba <\b<B\bBt\btn\bn1\b1D\bDo\bow\bwn\bn>\b>:
TopOrBottom()
~\b~s\bs c\bc ~\b~m\bm ~\b~a\ba <\b<B\bBt\btn\bn1\b1U\bUp\bp>\b>:
Release()
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfA\bAc\bct\bti\biv\bva\bat\bte\be>\b>:
PrimitiveParentActivate()
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfC\bCa\ban\bnc\bce\bel\bl>\b>:
CancelDrag()
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfB\bBe\beg\bgi\bin\bnL\bLi\bin\bne\be>\b>:
TopOrBottom()
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfE\bEn\bnd\bdL\bLi\bin\bne\be>\b>:
TopOrBottom()
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfP\bPa\bag\bge\beL\bLe\bef\bft\bt>\b>:
PageUpOrLeft(L\bLe\bef\bft\bt)
:\b:c\bc <\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfP\bPa\bag\bge\beU\bUp\bp>\b>:
PageUpOrLeft(L\bLe\bef\bft\bt)
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfP\bPa\bag\bge\beU\bUp\bp>\b>:
PageUpOrLeft(U\bUp\bp)
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfP\bPa\bag\bge\beR\bRi\big\bgh\bht\bt>\b>:
PageDownOrRight(R\bRi\big\bgh\bht\bt)
:\b:c\bc <\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfP\bPa\bag\bge\beD\bDo\bow\bwn\bn>\b>:
PageDownOrRight(R\bRi\big\bgh\bht\bt)
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfP\bPa\bag\bge\beD\bDo\bow\bwn\bn>\b>:
PageDownOrRight(D\bDo\bow\bwn\bn)
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfH\bHe\bel\blp\bp>\b>:
PrimitiveHelp()
:\b:c\bc <\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfU\bUp\bp>\b>:
PageUpOrLeft(U\bUp\bp)
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfU\bUp\bp>\b>:
IncrementUpOrLeft(U\bUp\bp)
:\b:c\bc <\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfD\bDo\bow\bwn\bn>\b>:
PageDownOrRight(D\bDo\bow\bwn\bn)
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfD\bDo\bow\bwn\bn>\b>:
IncrementDownOrRight(D\bDo\bow\bwn\bn)
:\b:c\bc <\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfL\bLe\bef\bft\bt>\b>:
PageUpOrLeft(L\bLe\bef\bft\bt)
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfL\bLe\bef\bft\bt>\b>:
IncrementUpOrLeft(L\bLe\bef\bft\bt)
:\b:c\bc <\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfR\bRi\big\bgh\bht\bt>\b>:
PageDownOrRight(R\bRi\big\bgh\bht\bt)
:\b:<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfR\bRi\big\bgh\bht\bt>\b>:
IncrementDownOrRight(R\bRi\big\bgh\bht\bt)
~\b~s\bs ~\b~m\bm ~\b~a\ba <\b<K\bKe\bey\by>\b>R\bRe\bet\btu\bur\brn\bn:
PrimitiveParentActivate()
s\bs ~\b~m\bm ~\b~a\ba <\b<K\bKe\bey\by>\b>T\bTa\bab\bb:
PrimitivePrevTabGroup()
~\b~m\bm ~\b~a\ba <\b<K\bKe\bey\by>\b>T\bTa\bab\bb:
PrimitiveNextTabGroup()
A\bAc\bct\bti\bio\bon\bn R\bRo\bou\but\bti\bin\bne\bes\bs
The ScrollBar action routines are
CancelDrag():
If the key press occurs during scrolling, can-
cels the scroll and returns the slider to its
previous location in the scrollbar, otherwise,
and if the parent is a manager, it passes the
event to the parent.
IncrementDownOrRight(D\bDo\bow\bwn\bn|\b|R\bRi\big\bgh\bht\bt):
With an argument of D\bDo\bow\bwn\bn, or 0 (zero) for com-
patibility, moves the slider down by one incre-
ment. With an argument of R\bRi\big\bgh\bht\bt, or 1 for com-
patibility, it moves the slider right by one
increment. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn is
X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_R\bRI\bIG\bGH\bHT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_B\bBO\bOT\bTT\bTO\bOM\bM, movement
toward the right or bottom calls the callbacks
for X\bXm\bmN\bNi\bin\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bi-\b-
r\bre\bec\bct\bti\bio\bon\bn is X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_L\bLE\bEF\bFT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_T\bTO\bOP\bP, move-
ment toward the right or bottom calls the call-
backs for X\bXm\bmN\bNd\bde\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk. The X\bXm\bmN\bNv\bva\bal\bl-\b-
u\bue\beC\bCh\bha\ban\bng\bge\bed\bdC\bCa\bal\bll\blb\bba\bac\bck\bk is called if the X\bXm\bmN\bNi\bin\bnc\bcr\bre\bem\bme\ben\bnt\bt-\b-
C\bCa\bal\bll\blb\bba\bac\bck\bk or X\bXm\bmN\bNd\bde\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk is NULL.
IncrementUpOrLeft(U\bUp\bp|\b|L\bLe\bef\bft\bt):
With an argument of U\bUp\bp, or 0 (zero) for
compatibility, moves the slider up by one incre-
ment. With an argument of L\bLe\bef\bft\bt, or 1 for com-
patibility, it moves the slider left by one
increment. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn is
X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_R\bRI\bIG\bGH\bHT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_B\bBO\bOT\bTT\bTO\bOM\bM, movement to
the left or top calls the callbacks for X\bXm\bmN\bN-\b-
d\bde\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn is
X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_L\bLE\bEF\bFT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_T\bTO\bOP\bP, movement to the
left or top calls the callbacks for X\bXm\bmN\bNi\bin\bnc\bcr\bre\be-\b-
m\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk. The X\bXm\bmN\bNv\bva\bal\blu\bue\beC\bCh\bha\ban\bng\bge\bed\bdC\bCa\bal\bll\blb\bba\bac\bck\bk is
called if the X\bXm\bmN\bNi\bin\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk or X\bXm\bmN\bNd\bde\bec\bcr\bre\be-\b-
m\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk is NULL.
Moved(): If the button press occurs within the slider,
the subsequent motion events move the slider to
the position of the pointer and call the call-
backs for X\bXm\bmN\bNd\bdr\bra\bag\bgC\bCa\bal\bll\blb\bba\bac\bck\bk.
PageDownOrRight(D\bDo\bow\bwn\bn|\b|R\bRi\big\bgh\bht\bt):
With an argument of D\bDo\bow\bwn\bn, or 0 (zero) for com-
patibility, moves the slider down by one page
increment. With an argument of R\bRi\big\bgh\bht\bt, or 1 for
compatibility, moves the slider right by one
page increment. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn is
X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_R\bRI\bIG\bGH\bHT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_B\bBO\bOT\bTT\bTO\bOM\bM, movement
toward the right or bottom calls the callbacks
for X\bXm\bmN\bNp\bpa\bag\bge\beI\bIn\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bs-\b-
i\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn is X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_L\bLE\bEF\bFT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_T\bTO\bOP\bP,
movement toward the right or bottom calls the
X\bXm\bmN\bNp\bpa\bag\bge\beD\bDe\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk callbacks. The X\bXm\bmN\bNv\bva\bal\bl-\b-
u\bue\beC\bCh\bha\ban\bng\bge\bed\bdC\bCa\bal\bll\blb\bba\bac\bck\bk is called if the X\bXm\bmN\bNp\bpa\bag\bge\beI\bIn\bnc\bcr\bre\be-\b-
m\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk or X\bXm\bmN\bNp\bpa\bag\bge\beD\bDe\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk is
NULL.
PageUpOrLeft(U\bUp\bp|\b|L\bLe\bef\bft\bt):
With an argument of U\bUp\bp, or 0 (zero) for compati-
bility, moves the slider up by one page incre-
ment. With an argument of L\bLe\bef\bft\bt, or 1 for com-
patibility, it moves the slider left by one page
increment. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn is
X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_R\bRI\bIG\bGH\bHT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_B\bBO\bOT\bTT\bTO\bOM\bM, movement to
the left or top calls the callbacks for X\bXm\bmN\bN-\b-
p\bpa\bag\bge\beD\bDe\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bir\bre\bec\bc-\b-
t\bti\bio\bon\bn is X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_L\bLE\bEF\bFT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_T\bTO\bOP\bP, movement
to the left or top calls the X\bXm\bmN\bNp\bpa\bag\bge\beI\bIn\bnc\bcr\bre\bem\bme\ben\bnt\bt-\b-
C\bCa\bal\bll\blb\bba\bac\bck\bk callbacks. The X\bXm\bmN\bNv\bva\bal\blu\bue\beC\bCh\bha\ban\bng\bge\bed\bdC\bCa\bal\bll\blb\bba\bac\bck\bk
is called if the X\bXm\bmN\bNp\bpa\bag\bge\beI\bIn\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk or
X\bXm\bmN\bNp\bpa\bag\bge\beD\bDe\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk is NULL.
PrimitiveHelp():
Calls the callbacks for X\bXm\bmN\bNh\bhe\bel\blp\bpC\bCa\bal\bll\blb\bba\bac\bck\bk if any
exist. If there are no help callbacks for this
widget, this action calls the help callbacks for
the nearest ancestor that has them.
PrimitiveNextTabGroup():
Traverses to the first item in the next tab
group. If the current tab group is the last
entry in the tab group list, it wraps to the
beginning of the tab group list.
PrimitiveParentActivate():
If the parent is a manager, passes the event to
the parent.
PrimitivePrevTabGroup():
Traverses to the first item in the previous tab
group. If the beginning of the tab group list
is reached, it wraps to the end of the tab group
list.
Release():
If the button press occurs within the slider and
the slider position is changed, the callbacks
for X\bXm\bmN\bNv\bva\bal\blu\bue\beC\bCh\bha\ban\bng\bge\bed\bdC\bCa\bal\bll\blb\bba\bac\bck\bk are called.
Select(): I\bIn\bn a\bar\brr\bro\bow\bw: Moves the slider by one increment in
the direction of the arrow. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bi-\b-
r\bre\bec\bct\bti\bio\bon\bn is X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_R\bRI\bIG\bGH\bHT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_B\bBO\bOT\bTT\bTO\bOM\bM,
movement toward the right or bottom calls the
callbacks for X\bXm\bmN\bNi\bin\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk, and movement
to the left or top calls the callbacks for X\bXm\bmN\bN-\b-
d\bde\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn is
X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_L\bLE\bEF\bFT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_T\bTO\bOP\bP, movement toward
the right or bottom calls the callbacks for X\bXm\bmN\bN-\b-
d\bde\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk, and movement to the left or
top calls the callbacks for X\bXm\bmN\bNi\bin\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\bl-\b-
b\bba\bac\bck\bk. The X\bXm\bmN\bNv\bva\bal\blu\bue\beC\bCh\bha\ban\bng\bge\bed\bdC\bCa\bal\bll\blb\bba\bac\bck\bk is called if
the X\bXm\bmN\bNi\bin\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk or X\bXm\bmN\bNd\bde\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk
is NULL.
I\bIn\bn s\bsc\bcr\bro\bol\bll\bl r\bre\beg\bgi\bio\bon\bn b\bbe\bet\btw\bwe\bee\ben\bn a\ban\bn a\bar\brr\bro\bow\bw a\ban\bnd\bd t\bth\bhe\be
s\bsl\bli\bid\bde\ber\br: Moves the slider by one page increment
in the direction of the arrow. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bs-\b-
i\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn is X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_R\bRI\bIG\bGH\bHT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_B\bBO\bOT\bT-\b-
T\bTO\bOM\bM, movement toward the right or bottom calls
the callbacks for X\bXm\bmN\bNp\bpa\bag\bge\beI\bIn\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk, and
movement to the left or top calls the callbacks
for X\bXm\bmN\bNp\bpa\bag\bge\beD\bDe\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bs-\b-
i\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn is X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_L\bLE\bEF\bFT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_T\bTO\bOP\bP,
movement toward the right or bottom calls the
callbacks for X\bXm\bmN\bNp\bpa\bag\bge\beD\bDe\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk, and
movement to the left or top calls the callbacks
for X\bXm\bmN\bNp\bpa\bag\bge\beI\bIn\bnc\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk. The X\bXm\bmN\bNv\bva\bal\bl-\b-
u\bue\beC\bCh\bha\ban\bng\bge\bed\bdC\bCa\bal\bll\blb\bba\bac\bck\bk is called if the X\bXm\bmN\bNp\bpa\bag\bge\beI\bIn\bnc\bcr\bre\be-\b-
m\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk or X\bXm\bmN\bNp\bpa\bag\bge\beD\bDe\bec\bcr\bre\bem\bme\ben\bnt\btC\bCa\bal\bll\blb\bba\bac\bck\bk is
NULL.
I\bIn\bn s\bsl\bli\bid\bde\ber\br: Activates the interactive dragging of
the slider.
If the button is held down in either the arrows
or the scroll region longer than the X\bXm\bmN\bNi\bin\bni\bi-\b-
t\bti\bia\bal\blD\bDe\bel\bla\bay\by resource, the slider is moved again by
the same increment and the same callbacks are
called. After the initial delay has been used,
the time delay changes to the time defined by
the resource X\bXm\bmN\bNr\bre\bep\bpe\bea\bat\btD\bDe\bel\bla\bay\by.
TopOrBottom():
<\b<C\bCt\btr\brl\bl>\b><\b<B\bBt\btn\bn1\b1D\bDo\bow\bwn\bn>\b> in an arrow or in the scroll
region between an arrow and the slider moves the
slider as far as possible in the direction of
the arrow. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn is
X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_R\bRI\bIG\bGH\bHT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_B\bBO\bOT\bTT\bTO\bOM\bM, movement
toward the right or bottom calls the callbacks
for X\bXm\bmN\bNt\bto\boB\bBo\bot\btt\bto\bom\bmC\bCa\bal\bll\blb\bba\bac\bck\bk, and movement to the
left or top calls the callbacks for X\bXm\bmN\bNt\bto\boT\bTo\bop\bp-\b-
C\bCa\bal\bll\blb\bba\bac\bck\bk. If X\bXm\bmN\bNp\bpr\bro\boc\bce\bes\bss\bsi\bin\bng\bgD\bDi\bir\bre\bec\bct\bti\bio\bon\bn is
X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_L\bLE\bEF\bFT\bT or X\bXm\bmM\bMA\bAX\bX_\b_O\bON\bN_\b_T\bTO\bOP\bP, movement toward
the right or bottom calls the callbacks for X\bXm\bmN\bN-\b-
t\bto\boT\bTo\bop\bpC\bCa\bal\bll\blb\bba\bac\bck\bk, and movement to the left or top
calls the callbacks for X\bXm\bmN\bNt\bto\boB\bBo\bot\btt\bto\bom\bmC\bCa\bal\bll\blb\bba\bac\bck\bk.
The X\bXm\bmN\bNv\bva\bal\blu\bue\beC\bCh\bha\ban\bng\bge\bed\bdC\bCa\bal\bll\blb\bba\bac\bck\bk is called if the
X\bXm\bmN\bNt\bto\boT\bTo\bop\bpC\bCa\bal\bll\blb\bba\bac\bck\bk or X\bXm\bmN\bNt\bto\boB\bBo\bot\btt\bto\bom\bmC\bCa\bal\bll\blb\bba\bac\bck\bk is NULL.
Pressing <\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfB\bBe\beg\bgi\bin\bnL\bLi\bin\bne\be>\b> or <\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfB\bBe\beg\bgi\bin\bn-\b-
D\bDa\bat\bta\ba>\b> moves the slider to the minimum value and
invokes the X\bXm\bmN\bNt\bto\boT\bTo\bop\bpC\bCa\bal\bll\blb\bba\bac\bck\bk. Pressing
<\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfE\bEn\bnd\bdL\bLi\bin\bne\be>\b> or <\b<K\bKe\bey\by>\b><\b<o\bos\bsf\bfE\bEn\bnd\bdD\bDa\bat\bta\ba>\b> moves the
slider to the maximum value and invokes the X\bXm\bmN\bN-\b-
t\bto\boB\bBo\bot\btt\bto\bom\bmC\bCa\bal\bll\blb\bba\bac\bck\bk.
V\bVi\bir\brt\btu\bua\bal\bl B\bBi\bin\bnd\bdi\bin\bng\bgs\bs
The bindings for virtual keys are vendor specific. For
information about bindings for virtual buttons and keys,
see V\bVi\bir\brt\btu\bua\bal\blB\bBi\bin\bnd\bdi\bin\bng\bgs\bs(3).
R\bRE\bEL\bLA\bAT\bTE\bED\bD
C\bCo\bor\bre\be(3), X\bXm\bmC\bCr\bre\bea\bat\bte\beS\bSc\bcr\bro\bol\bll\blB\bBa\bar\br(3), X\bXm\bmP\bPr\bri\bim\bmi\bit\bti\biv\bve\be(3), X\bXm\bmS\bSc\bcr\bro\bol\bll\bl-\b-
B\bBa\bar\brG\bGe\bet\btV\bVa\bal\blu\bue\bes\bs(3), and X\bXm\bmS\bSc\bcr\bro\bol\bll\blB\bBa\bar\brS\bSe\bet\btV\bVa\bal\blu\bue\bes\bs(3).
XmScrollBar(3)
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-07-31 11:58 ` scroll-bar-toolkit-scroll Gerd Moellmann
@ 2002-08-01 16:51 ` Richard Stallman
2002-08-02 10:19 ` scroll-bar-toolkit-scroll Gerd Moellmann
2002-08-09 7:07 ` scroll-bar-toolkit-scroll Stefan Monnier
2002-08-09 7:12 ` scroll-bar-toolkit-scroll Stefan Monnier
1 sibling, 2 replies; 16+ messages in thread
From: Richard Stallman @ 2002-08-01 16:51 UTC (permalink / raw)
Cc: emacs-devel
As I read the man page, XmCR_DRAG is received while the user is
dragging the slider for "each incremental change of position", so it
would be neither up nor down event.
Stefan, is that correct? It sounds like the event produced by
XmCR_DRAG ought to scroll the buffer based on the new position and
redisplay--is that right?
I've used x_send_scroll_bar_event to "translate" the invocation of the
scroll bar callback to an X event that is handled in XTread_socket
like other events. This seemed to be the easiest way to orderly
produce a scroll bar input event in the kdb queue because I saw no way
to predict when the callback is called (asynchronously).
Why not just insert the desired event into the Emacs event queue?
That can be done at any time, asynchronously.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-08-01 16:51 ` scroll-bar-toolkit-scroll Richard Stallman
@ 2002-08-02 10:19 ` Gerd Moellmann
2002-08-09 7:07 ` scroll-bar-toolkit-scroll Stefan Monnier
1 sibling, 0 replies; 16+ messages in thread
From: Gerd Moellmann @ 2002-08-02 10:19 UTC (permalink / raw)
Cc: emacs-devel
Richard Stallman <rms@gnu.org> writes:
> I've used x_send_scroll_bar_event to "translate" the invocation of the
> scroll bar callback to an X event that is handled in XTread_socket
> like other events. This seemed to be the easiest way to orderly
> produce a scroll bar input event in the kdb queue because I saw no way
> to predict when the callback is called (asynchronously).
>
> Why not just insert the desired event into the Emacs event queue?
> That can be done at any time, asynchronously.
I think it's easier the way it is, where there's only one place where
input events are stored to the queue.
For example, should the callback be invoked from XTread_socket, in the
course of an event that's dispatched from XTread_socket to the scroll
bar widget, XTread_socket's local variable numchars had to be
decremented if the callback itself pushed something on the queue.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-08-01 16:51 ` scroll-bar-toolkit-scroll Richard Stallman
2002-08-02 10:19 ` scroll-bar-toolkit-scroll Gerd Moellmann
@ 2002-08-09 7:07 ` Stefan Monnier
1 sibling, 0 replies; 16+ messages in thread
From: Stefan Monnier @ 2002-08-09 7:07 UTC (permalink / raw)
Cc: gerd.moellmann, emacs-devel
> As I read the man page, XmCR_DRAG is received while the user is
> dragging the slider for "each incremental change of position", so it
> would be neither up nor down event.
>
> Stefan, is that correct? It sounds like the event produced by
> XmCR_DRAG ought to scroll the buffer based on the new position and
> redisplay--is that right?
Yes, that sounds right. Doesn't it do that ?
Stefan
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-07-31 11:58 ` scroll-bar-toolkit-scroll Gerd Moellmann
2002-08-01 16:51 ` scroll-bar-toolkit-scroll Richard Stallman
@ 2002-08-09 7:12 ` Stefan Monnier
2002-08-12 17:07 ` scroll-bar-toolkit-scroll Richard Stallman
1 sibling, 1 reply; 16+ messages in thread
From: Stefan Monnier @ 2002-08-09 7:12 UTC (permalink / raw)
Cc: rms, emacs-devel
> > IIRC, the scroll bar callback is invoked with action information only,
> > Could you explain what "action information" means?
> I meant "user action". In the Motif case, for example the scroll bar
> callback in invoked for user action meaning "line down", "page up" etc.
Indeed. And the translation from up/down/move X-events into those
"user actions" depends on the toolkit and is mostly outside the
control of Emacs. In the case of Xaw3d, this translation can
be customized by the user via Xresources with something like:
*Scrollbar*translations: #override \
<Btn1Down>: StartScroll(Forward) NotifyScroll(Proportional) \n\
<Btn2Down>: StartScroll(Continuous) MoveThumb() NotifyThumb() \n\
<Btn3Down>: StartScroll(Backward) NotifyScroll(Proportional) \n\
<Btn2Motion>: MoveThumb() NotifyThumb() \n\
<BtnUp>: EndScroll()
Note that just like all those Xresources things, it doesn't always
work with all applications, or you sometimes need to explicitly
specify the application name because of precedence between overlapping
specifications, ...
Stefan
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-08-09 7:12 ` scroll-bar-toolkit-scroll Stefan Monnier
@ 2002-08-12 17:07 ` Richard Stallman
2002-08-12 17:14 ` scroll-bar-toolkit-scroll Stefan Monnier
0 siblings, 1 reply; 16+ messages in thread
From: Richard Stallman @ 2002-08-12 17:07 UTC (permalink / raw)
Cc: gerd.moellmann, emacs-devel
When you build Emacs with LessTif, does grabbing the slider work as it
ought to? Does the buffer redisplay in a new position each time you
move the slider a little up or down?
What is the user-level intended Emacs scrolling behavior with Xaw3d?
Is it supposed to be compatible with the Emacs non-toolkit scroll bars?
If so, is that the best specification, is that what we should support?
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-08-12 17:07 ` scroll-bar-toolkit-scroll Richard Stallman
@ 2002-08-12 17:14 ` Stefan Monnier
2002-08-13 22:46 ` scroll-bar-toolkit-scroll Richard Stallman
0 siblings, 1 reply; 16+ messages in thread
From: Stefan Monnier @ 2002-08-12 17:14 UTC (permalink / raw)
Cc: monnier+gnu/emacs, gerd.moellmann, emacs-devel
> When you build Emacs with LessTif, does grabbing the slider work as it
> ought to? Does the buffer redisplay in a new position each time you
> move the slider a little up or down?
Yes.
> What is the user-level intended Emacs scrolling behavior with Xaw3d?
> Is it supposed to be compatible with the Emacs non-toolkit scroll bars?
More or less. Although it's less configurable from
elisp since more of the behavior is implemented in C (more specifically
in the toolkit code).
It should also be compatible with "the way these scrollbars work in
the given toolkit used". So if you use Lesstif (or Xaw3d with arrows),
the bindings are not the same as the ones for non-toolkit Emacs (e.g.
mouse-3 does not scroll back).
> If so, is that the best specification, is that what we should support?
I don't think so, because in many cases making the scrollbar work
like non-toolkit Emacs (rather than the "native" behavior of the
toolkit) is difficult and I'm not sure it would be what users want.
Stefan
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-08-12 17:14 ` scroll-bar-toolkit-scroll Stefan Monnier
@ 2002-08-13 22:46 ` Richard Stallman
2002-08-14 22:25 ` scroll-bar-toolkit-scroll Stefan Monnier
0 siblings, 1 reply; 16+ messages in thread
From: Richard Stallman @ 2002-08-13 22:46 UTC (permalink / raw)
Cc: monnier+gnu/emacs, gerd.moellmann, emacs-devel
Should we try to make the toolkit scrollbars completely follow the
usual conventions of the toolkit, disregarding the non-toolkit Emacs
behavior?
Can you tell me the full list of behaviors of Emacs with Xaw3D?
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-08-13 22:46 ` scroll-bar-toolkit-scroll Richard Stallman
@ 2002-08-14 22:25 ` Stefan Monnier
2002-08-15 19:54 ` scroll-bar-toolkit-scroll Richard Stallman
0 siblings, 1 reply; 16+ messages in thread
From: Stefan Monnier @ 2002-08-14 22:25 UTC (permalink / raw)
Cc: monnier+gnu/emacs, gerd.moellmann, emacs-devel
> Should we try to make the toolkit scrollbars completely follow the
> usual conventions of the toolkit, disregarding the non-toolkit Emacs
> behavior?
I'm not sure what you mean. I think that's pretty much what we do.
But the convention only specifies some aspect of the behavior.
> Can you tell me the full list of behaviors of Emacs with Xaw3D?
Depends how Xaw3d was compiled (with or without the -DARROW_SCROLLBAR
(or somesuch) option). Without the -DARROW_SCROLLBAR it behaves like
non-toolkit Emacs (and hence like Xaw scrollbars). With it, it
behaves more like Motif.
RedHat uses an Xaw3d compiled without -DARROW_SCROLLBAR while Debian
compiles it with -DARROW_SCROLLBAR (last I heard).
Stefan
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-08-14 22:25 ` scroll-bar-toolkit-scroll Stefan Monnier
@ 2002-08-15 19:54 ` Richard Stallman
2002-08-16 16:10 ` scroll-bar-toolkit-scroll Stefan Monnier
0 siblings, 1 reply; 16+ messages in thread
From: Richard Stallman @ 2002-08-15 19:54 UTC (permalink / raw)
Cc: monnier+gnu/emacs, gerd.moellmann, emacs-devel
Depends how Xaw3d was compiled (with or without the -DARROW_SCROLLBAR
(or somesuch) option). Without the -DARROW_SCROLLBAR it behaves like
non-toolkit Emacs (and hence like Xaw scrollbars). With it, it
behaves more like Motif.
Is there no way for Emacs to control this behavior independent of
how the library was compiled?
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: scroll-bar-toolkit-scroll
2002-08-15 19:54 ` scroll-bar-toolkit-scroll Richard Stallman
@ 2002-08-16 16:10 ` Stefan Monnier
0 siblings, 0 replies; 16+ messages in thread
From: Stefan Monnier @ 2002-08-16 16:10 UTC (permalink / raw)
Cc: monnier+gnu/emacs, gerd.moellmann, emacs-devel
> Depends how Xaw3d was compiled (with or without the -DARROW_SCROLLBAR
> (or somesuch) option). Without the -DARROW_SCROLLBAR it behaves like
> non-toolkit Emacs (and hence like Xaw scrollbars). With it, it
> behaves more like Motif.
>
> Is there no way for Emacs to control this behavior independent of
> how the library was compiled?
No. The appearance is different (with extra arrow-buttons at
each end) already. You can influence the behavior via Xresources,
so you can bring them closer to each other if you really want to,
but it would still not be the same anyway.
Stefan
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2002-08-16 16:10 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-07-29 1:12 scroll-bar-toolkit-scroll Richard Stallman
2002-07-29 10:51 ` scroll-bar-toolkit-scroll Gerd Moellmann
2002-07-30 0:59 ` scroll-bar-toolkit-scroll Richard Stallman
2002-07-30 9:12 ` scroll-bar-toolkit-scroll Gerd Moellmann
2002-07-31 5:54 ` scroll-bar-toolkit-scroll Richard Stallman
2002-07-31 11:58 ` scroll-bar-toolkit-scroll Gerd Moellmann
2002-08-01 16:51 ` scroll-bar-toolkit-scroll Richard Stallman
2002-08-02 10:19 ` scroll-bar-toolkit-scroll Gerd Moellmann
2002-08-09 7:07 ` scroll-bar-toolkit-scroll Stefan Monnier
2002-08-09 7:12 ` scroll-bar-toolkit-scroll Stefan Monnier
2002-08-12 17:07 ` scroll-bar-toolkit-scroll Richard Stallman
2002-08-12 17:14 ` scroll-bar-toolkit-scroll Stefan Monnier
2002-08-13 22:46 ` scroll-bar-toolkit-scroll Richard Stallman
2002-08-14 22:25 ` scroll-bar-toolkit-scroll Stefan Monnier
2002-08-15 19:54 ` scroll-bar-toolkit-scroll Richard Stallman
2002-08-16 16:10 ` scroll-bar-toolkit-scroll Stefan Monnier
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.