1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-20 04:48:06 +01:00

disable scrolling menu when it is in virtual desktop mode.

you have to click and drag to scroll the menu.
This commit is contained in:
id
2001-04-16 13:33:50 +00:00
parent 5c37df521e
commit 9d1306bf01
4 changed files with 200 additions and 182 deletions

View File

@@ -1006,6 +1006,7 @@ handleEnterNotify(XEvent *event)
wWorkspaceGetViewPosition(scr, scr->current_workspace, &x, &y); wWorkspaceGetViewPosition(scr, scr->current_workspace, &x, &y);
wWorkspaceSetViewPort(scr, scr->current_workspace, x, y - VIRTUALEDGE_SCROLL_VSTEP); wWorkspaceSetViewPort(scr, scr->current_workspace, x, y - VIRTUALEDGE_SCROLL_VSTEP);
} else if (event->xcrossing.window == scr->virtual_edge_d) { } else if (event->xcrossing.window == scr->virtual_edge_d) {
printf("enter bottom\n");
XWarpPointer(dpy, None, scr->root_win, 0,0,0,0, event->xcrossing.x_root, scr->scr_height - wPreferences.vedge_thickness - 1); XWarpPointer(dpy, None, scr->root_win, 0,0,0,0, event->xcrossing.x_root, scr->scr_height - wPreferences.vedge_thickness - 1);
wWorkspaceGetViewPosition(scr, scr->current_workspace, &x, &y); wWorkspaceGetViewPosition(scr, scr->current_workspace, &x, &y);
wWorkspaceSetViewPort(scr, scr->current_workspace, x, y + VIRTUALEDGE_SCROLL_VSTEP); wWorkspaceSetViewPort(scr, scr->current_workspace, x, y + VIRTUALEDGE_SCROLL_VSTEP);

View File

@@ -1620,23 +1620,6 @@ getScrollAmount(WMenu *menu, int *hamount, int *vamount)
getPointerPosition(scr, &xroot, &yroot); getPointerPosition(scr, &xroot, &yroot);
#ifdef VIRTUAL_DESKTOP
if (wPreferences.vedge_thickness) {
if (xroot <= wPreferences.vedge_thickness + 1 && menuX1 < wPreferences.vedge_thickness) {
/* scroll to the right */
*hamount = WMIN(MENU_SCROLL_STEP, abs(menuX1));
} else if (xroot >= screenW-2-wPreferences.vedge_thickness && menuX2 > screenW-1-wPreferences.vedge_thickness) {
/* scroll to the left */
*hamount = WMIN(MENU_SCROLL_STEP, abs(menuX2-screenW-1));
if (*hamount==0)
*hamount = 1;
*hamount = -*hamount;
}
} else
#endif
if (xroot <= 1 && menuX1 < 0) { if (xroot <= 1 && menuX1 < 0) {
/* scroll to the right */ /* scroll to the right */
@@ -1720,6 +1703,10 @@ scrollMenuCallback(void *data)
int hamount = 0; /* amount to scroll */ int hamount = 0; /* amount to scroll */
int vamount = 0; int vamount = 0;
#ifdef VIRTUAL_DESKTOP
/* don't scroll if it is in vdesk mode */
if (!wPreferences.vedge_thickness)
#endif
getScrollAmount(menu, &hamount, &vamount); getScrollAmount(menu, &hamount, &vamount);
if (hamount != 0 || vamount != 0) { if (hamount != 0 || vamount != 0) {
@@ -2013,6 +2000,12 @@ menuMouseDown(WObjDescriptor *desc, XEvent *event)
} }
} }
#ifdef VIRTUAL_DESKTOP
if (wPreferences.vedge_thickness) {
wWorkspaceLowerEdge(scr);
}
#endif
prevx = bev->x_root; prevx = bev->x_root;
prevy = bev->y_root; prevy = bev->y_root;
while (!done) { while (!done) {
@@ -2156,6 +2149,12 @@ menuMouseDown(WObjDescriptor *desc, XEvent *event)
case Expose: case Expose:
WMHandleEvent(&ev); WMHandleEvent(&ev);
#ifdef VIRTUAL_DESKTOP
/* since expose will raise edge up.. I need another ugly hack here */
if (wPreferences.vedge_thickness) {
wWorkspaceLowerEdge(scr);
}
#endif
break; break;
} }
} }
@@ -2221,6 +2220,11 @@ menuMouseDown(WObjDescriptor *desc, XEvent *event)
byebye: byebye:
((WMenu*)desc->parent)->flags.inside_handler = 0; ((WMenu*)desc->parent)->flags.inside_handler = 0;
#ifdef VIRTUAL_DESKTOP
if (wPreferences.vedge_thickness) {
wWorkspaceRaiseEdge(scr);
}
#endif
} }

View File

@@ -689,6 +689,7 @@ void wWorkspaceManageEdge(WScreen *scr)
void wWorkspaceRaiseEdge(WScreen *scr) void wWorkspaceRaiseEdge(WScreen *scr)
{ {
puts("raise edge");
if (wPreferences.vedge_thickness && initVDesk) { if (wPreferences.vedge_thickness && initVDesk) {
XRaiseWindow(dpy, scr->virtual_edge_u); XRaiseWindow(dpy, scr->virtual_edge_u);
XRaiseWindow(dpy, scr->virtual_edge_d); XRaiseWindow(dpy, scr->virtual_edge_d);
@@ -697,6 +698,17 @@ void wWorkspaceRaiseEdge(WScreen *scr)
} }
} }
void wWorkspaceLowerEdge(WScreen *scr)
{
puts("lower edge");
if (wPreferences.vedge_thickness && initVDesk) {
XLowerWindow(dpy, scr->virtual_edge_u);
XLowerWindow(dpy, scr->virtual_edge_d);
XLowerWindow(dpy, scr->virtual_edge_l);
XLowerWindow(dpy, scr->virtual_edge_r);
}
}
void wWorkspaceResizeViewPort(WScreen *scr, int workspace, int width, int height) void wWorkspaceResizeViewPort(WScreen *scr, int workspace, int width, int height)
{ {
scr->workspaces[workspace]->width = WMAX(width,scr->scr_width); scr->workspaces[workspace]->width = WMAX(width,scr->scr_width);

View File

@@ -42,6 +42,7 @@ void wWorkspaceForceChange(WScreen *scr, int workspace);
#ifdef VIRTUAL_DESKTOP #ifdef VIRTUAL_DESKTOP
void wWorkspaceManageEdge(WScreen *scr); void wWorkspaceManageEdge(WScreen *scr);
void wWorkspaceRaiseEdge(WScreen *scr); void wWorkspaceRaiseEdge(WScreen *scr);
void wWorkspaceLowerEdge(WScreen *scr);
void wWorkspaceResizeViewPort(WScreen *scr, int workspace, int width, int height); void wWorkspaceResizeViewPort(WScreen *scr, int workspace, int width, int height);
Bool wWorkspaceSetViewPort(WScreen *scr, int workspace, int view_x, int view_y); Bool wWorkspaceSetViewPort(WScreen *scr, int workspace, int view_x, int view_y);
Bool wWorkspaceAdjustViewPort(WScreen *scr, int workspace, int view_x, int view_y); Bool wWorkspaceAdjustViewPort(WScreen *scr, int workspace, int view_x, int view_y);