Geant4-11
Functions
wheelmouse.cc File Reference
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <Xm/Xm.h>
#include <Xm/ScrollBar.h>

Go to the source code of this file.

Functions

static void mouseScroll (Widget, XtPointer client_data, XEvent *event, Boolean *)
 
void xmAddMouseEventHandler (Widget w)
 

Function Documentation

◆ mouseScroll()

static void mouseScroll ( Widget  ,
XtPointer  client_data,
XEvent *  event,
Boolean *   
)
static

Definition at line 57 of file wheelmouse.cc.

59{
60 Widget sb = (Widget)client_data;
61 int value_return = 0;
62 int slider_size_return = 0;
63 int increment_return = 0;
64 int page_increment_return = 0;
65 int count;
66 int step;
67
68 /* get a few value regarding the scrollbar conf. */
69 XmScrollBarGetValues (sb, &value_return, &slider_size_return,
70 &increment_return, &page_increment_return);
71
72 /* calculate the step wide according to the pressed keys */
73 if ( event->xbutton.state & ShiftMask )
74 {
75 step = 1;
76 }
77 else if ( event->xbutton.state & ControlMask )
78 {
79 step = page_increment_return;
80 }
81 else
82 {
83 step = page_increment_return >> 1;
84 }
85
86 if ( event->xbutton.button == Button4 )
87 {
88 value_return -= step;
89 if ( value_return < 0 )
90 value_return = 0;
91 }
92 else if ( event->xbutton.button == Button5 )
93 {
94 /* and the max value for increment */
95 XtVaGetValues(sb, XmNmaximum, &count, NULL);
96 value_return += step;
97 if ( value_return > count - slider_size_return )
98 value_return = count - slider_size_return;
99 }
100
101 /* finally perform scrolling with the calculated step */
102 if ( event->xbutton.button == Button4 ||
103 event->xbutton.button == Button5 )
104 {
105 XmScrollBarSetValues (sb, value_return, slider_size_return,
106 increment_return, page_increment_return, True);
107 }
108}

Referenced by xmAddMouseEventHandler().

◆ xmAddMouseEventHandler()

void xmAddMouseEventHandler ( Widget  w)

Definition at line 126 of file wheelmouse.cc.

127{
128 Widget wid;
129
130 /* we need to pass the scrollbar widget to the handler */
131 XtVaGetValues(XtParent(w),XmNverticalScrollBar, &wid, NULL);
132
133 /* handler for the scrolledList/ScrolledText */
134 XtAddEventHandler(w, ButtonReleaseMask, False,
135 (XtEventHandler) mouseScroll, wid);
136 /* and for the scrollbar itself */
137 XtAddEventHandler(wid, ButtonReleaseMask, False,
138 (XtEventHandler) mouseScroll, wid);
139}
static void mouseScroll(Widget, XtPointer client_data, XEvent *event, Boolean *)
Definition: wheelmouse.cc:57

References mouseScroll().

Referenced by G4OpenInventorXtExaminerViewer::constructListsDialog(), G4OpenInventorXtExaminerViewer::createElementsList(), G4OpenInventorXtExaminerViewer::popUpFileSelDialog(), G4OpenInventorXtExaminerViewer::saveRefCoordsDialogCB(), and G4OpenInventorXtExaminerViewer::saveSceneGraphDialogCB().