mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 12:28:22 +01:00
127 lines
3.8 KiB
Diff
127 lines
3.8 KiB
Diff
diff -Naur WindowMaker-0.65.0/src/WindowMaker.h wmaker-workspaceflip/src/WindowMaker.h
|
|
--- WindowMaker-0.65.0/src/WindowMaker.h Sat Apr 28 01:41:21 2001
|
|
+++ wmaker-workspaceflip/src/WindowMaker.h Sun Aug 12 12:51:14 2001
|
|
@@ -397,6 +397,8 @@
|
|
|
|
int raise_delay; /* delay for autoraise. 0 is disabled */
|
|
|
|
+ int workspace_flip_delay; /* delay for workspace flipping, 0 is disabled */
|
|
+
|
|
int cmap_size; /* size of dithering colormap in colors
|
|
* per channel */
|
|
|
|
diff -Naur WindowMaker-0.65.0/src/defaults.c wmaker-workspaceflip/src/defaults.c
|
|
--- WindowMaker-0.65.0/src/defaults.c Fri May 11 00:16:49 2001
|
|
+++ wmaker-workspaceflip/src/defaults.c Sun Aug 12 12:51:14 2001
|
|
@@ -420,6 +420,9 @@
|
|
{"RaiseDelay", "0", NULL,
|
|
&wPreferences.raise_delay, getInt, NULL
|
|
},
|
|
+ {"WorkspaceFlipDelay", "0", NULL,
|
|
+ &wPreferences.workspace_flip_delay, getInt, NULL
|
|
+ },
|
|
{"WindozeCycling", "YES", NULL,
|
|
&wPreferences.windows_cycling,getBool, NULL
|
|
},
|
|
diff -Naur WindowMaker-0.65.0/src/event.c wmaker-workspaceflip/src/event.c
|
|
--- WindowMaker-0.65.0/src/event.c Sat Apr 28 01:41:21 2001
|
|
+++ wmaker-workspaceflip/src/event.c Sun Aug 12 12:51:14 2001
|
|
@@ -1676,12 +1676,53 @@
|
|
}
|
|
}
|
|
|
|
+#define DEL_TIMER(timer) { \
|
|
+ WMDeleteTimerHandler(timer); \
|
|
+ timer = NULL; \
|
|
+}
|
|
+
|
|
+
|
|
+
|
|
+static void
|
|
+flipRightWorkspace(void* data)
|
|
+{
|
|
+ WScreen *scr = (WScreen*)data;
|
|
+ int x,y,tmp,last_workspace = scr->current_workspace;
|
|
+ Window tmpw;
|
|
+
|
|
+ DEL_TIMER(scr->workspace_flip_right_timer);
|
|
+
|
|
+ XQueryPointer(dpy,scr->root_win,&tmpw,&tmpw,&x,&y,&tmp,&tmp,&tmp);
|
|
+ if(x != scr->scr_width-1) return;
|
|
+
|
|
+ wWorkspaceRelativeChange(scr, 1);
|
|
+ if(last_workspace != scr->current_workspace)
|
|
+ XWarpPointer(dpy,None,scr->root_win,0,0,0,0,1,y);
|
|
+}
|
|
+
|
|
+static void
|
|
+flipLeftWorkspace(void* data)
|
|
+{
|
|
+ WScreen *scr = (WScreen*)data;
|
|
+ int x,y,tmp,last_workspace = scr->current_workspace;
|
|
+ Window tmpw;
|
|
+
|
|
+ DEL_TIMER(scr->workspace_flip_left_timer);
|
|
+
|
|
+ XQueryPointer(dpy,scr->root_win,&tmpw,&tmpw,&x,&y,&tmp,&tmp,&tmp);
|
|
+ if(x != 0) return;
|
|
+
|
|
+ wWorkspaceRelativeChange(scr, -1);
|
|
+ if(last_workspace != scr->current_workspace)
|
|
+ XWarpPointer(dpy,None,scr->root_win,0,0,0,0,scr->scr_width-2,y);
|
|
+}
|
|
|
|
static void
|
|
handleMotionNotify(XEvent *event)
|
|
{
|
|
WMenu *menu;
|
|
WScreen *scr = wScreenForRootWindow(event->xmotion.root);
|
|
+ int left,right;
|
|
|
|
if (wPreferences.scrollable_menus) {
|
|
if (scr->flags.jump_back_pending ||
|
|
@@ -1697,6 +1738,29 @@
|
|
wMenuScroll(menu, event);
|
|
}
|
|
}
|
|
+
|
|
+ /* workspace flipping */
|
|
+ if(!wPreferences.workspace_flip_delay) return;
|
|
+
|
|
+ left = (event->xmotion.x_root == 0);
|
|
+ right = (event->xmotion.x_root == scr->scr_width-1);
|
|
+
|
|
+ if(right && !scr->workspace_flip_right_timer)
|
|
+ scr->workspace_flip_right_timer =
|
|
+ WMAddTimerHandler(wPreferences.workspace_flip_delay,
|
|
+ flipRightWorkspace,scr);
|
|
+
|
|
+ if(left && !scr->workspace_flip_left_timer)
|
|
+ scr->workspace_flip_left_timer =
|
|
+ WMAddTimerHandler(wPreferences.workspace_flip_delay,
|
|
+ flipLeftWorkspace,scr);
|
|
+
|
|
+ if(!right && scr->workspace_flip_right_timer)
|
|
+ DEL_TIMER(scr->workspace_flip_right_timer);
|
|
+
|
|
+ if(!left && scr->workspace_flip_left_timer)
|
|
+ DEL_TIMER(scr->workspace_flip_left_timer);
|
|
+
|
|
#if 0
|
|
if (event->xmotion.subwindow == None)
|
|
return;
|
|
diff -Naur WindowMaker-0.65.0/src/screen.h wmaker-workspaceflip/src/screen.h
|
|
--- WindowMaker-0.65.0/src/screen.h Sun Apr 15 03:23:01 2001
|
|
+++ wmaker-workspaceflip/src/screen.h Sun Aug 12 12:51:14 2001
|
|
@@ -273,6 +273,10 @@
|
|
Window last_click_window;
|
|
int last_click_button;
|
|
|
|
+ /* for workspace flipping when mouse hits edge */
|
|
+ WMHandlerID *workspace_flip_left_timer;
|
|
+ WMHandlerID *workspace_flip_right_timer;
|
|
+
|
|
/* balloon help data */
|
|
struct _WBalloon *balloon;
|
|
|