1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-02-16 14:15:46 +01:00

Initial mouse wheel code.

This commit is contained in:
dan
2000-04-13 21:24:28 +00:00
parent b188d55bbe
commit 5c76167098
6 changed files with 153 additions and 17 deletions

View File

@@ -634,6 +634,37 @@ autoScroll(void *data)
}
static void
wheelScrollUp(PopUpButton *bPtr)
{
int testIndex = bPtr->selectedItemIndex - 1;
while (testIndex>=0 && !WMGetPopUpButtonItemEnabled(bPtr, testIndex))
testIndex--;
if (testIndex != -1) {
WMSetPopUpButtonSelectedItem(bPtr, testIndex);
if (bPtr->action)
(*bPtr->action)(bPtr, bPtr->clientData);
}
}
static void
wheelScrollDown(PopUpButton *bPtr)
{
int itemCount = WMGetBagItemCount(bPtr->items);
int testIndex = bPtr->selectedItemIndex + 1;
while (testIndex<itemCount && !WMGetPopUpButtonItemEnabled(bPtr, testIndex))
testIndex++;
if (testIndex != itemCount) {
WMSetPopUpButtonSelectedItem(bPtr, testIndex);
if (bPtr->action)
(*bPtr->action)(bPtr, bPtr->clientData);
}
}
static void
handleActionEvents(XEvent *event, void *data)
{
@@ -699,6 +730,14 @@ handleActionEvents(XEvent *event, void *data)
if (!bPtr->flags.enabled)
break;
if (!bPtr->flags.pullsDown && !bPtr->menuView->flags.mapped) {
if (event->xbutton.button==WINGsConfiguration.mouseWheelDown) {
wheelScrollDown(bPtr);
} else if (event->xbutton.button==WINGsConfiguration.mouseWheelUp) {
wheelScrollUp(bPtr);
}
break;
}
popUpMenu(bPtr);
if (!bPtr->flags.pullsDown) {
bPtr->highlightedItem = bPtr->selectedItemIndex;
@@ -714,6 +753,10 @@ handleActionEvents(XEvent *event, void *data)
break;
case ButtonRelease:
if (event->xbutton.button==WINGsConfiguration.mouseWheelUp ||
event->xbutton.button==WINGsConfiguration.mouseWheelDown) {
break;
}
XUngrabPointer(bPtr->view->screen->display, event->xbutton.time);
if (!bPtr->flags.pullsDown)
popDownMenu(bPtr);
@@ -725,9 +768,9 @@ handleActionEvents(XEvent *event, void *data)
if (bPtr->flags.insideMenu && bPtr->highlightedItem>=0) {
WMMenuItem *item;
item = WMGetPopUpButtonMenuItem(bPtr, bPtr->highlightedItem);
if (WMGetMenuItemEnabled(item)) {
int i;
WMSetPopUpButtonSelectedItem(bPtr, bPtr->highlightedItem);