diff --git a/contrib/single_click.diff b/contrib/single_click.diff index a6e3456a..2ad1983b 100644 --- a/contrib/single_click.diff +++ b/contrib/single_click.diff @@ -1,361 +1,202 @@ -diff -rc WindowMaker-0.52.0.ori/WPrefs.app/Appearance.c WindowMaker-0.52.0/WPrefs.app/Appearance.c -*** WindowMaker-0.52.0.ori/WPrefs.app/Appearance.c Mon Mar 22 12:16:49 1999 ---- WindowMaker-0.52.0/WPrefs.app/Appearance.c Wed Apr 21 08:24:11 1999 -*************** -*** 1286,1315 **** - - setupTextureFor(panel->texLs, "FTitleBack", "(solid, black)", - "[Focused]", i); -! panel->textureIndex[i] = i++; - - setupTextureFor(panel->texLs, "UTitleBack", "(solid, gray)", - "[Unfocused]", i); -! panel->textureIndex[i] = i++; - - setupTextureFor(panel->texLs, "PTitleBack", "(solid, \"#616161\")", - "[Owner of Focused]", i); -! panel->textureIndex[i] = i++; - - setupTextureFor(panel->texLs, "MenuTitleBack", "(solid, black)", - "[Menu Title]", i); -! panel->textureIndex[i] = i++; - - setupTextureFor(panel->texLs, "MenuTextBack", "(solid, gray)", - "[Menu Item]", i); -! panel->textureIndex[i] = i++; - - setupTextureFor(panel->texLs, "IconBack", "(solid, gray)", "[Icon]", i); -! panel->textureIndex[i] = i++; - /* - setupTextureFor(panel->texLs, "WorkspaceBack", "(solid, black)", - "[Workspace]", i); -! panel->textureIndex[i] = i++; - */ - - updatePreviewBox(panel, EVERYTHING); ---- 1286,1315 ---- - - setupTextureFor(panel->texLs, "FTitleBack", "(solid, black)", - "[Focused]", i); -! panel->textureIndex[i++] = i; - - setupTextureFor(panel->texLs, "UTitleBack", "(solid, gray)", - "[Unfocused]", i); -! panel->textureIndex[i++] = i; - - setupTextureFor(panel->texLs, "PTitleBack", "(solid, \"#616161\")", - "[Owner of Focused]", i); -! panel->textureIndex[i++] = i; - - setupTextureFor(panel->texLs, "MenuTitleBack", "(solid, black)", - "[Menu Title]", i); -! panel->textureIndex[i++] = i; - - setupTextureFor(panel->texLs, "MenuTextBack", "(solid, gray)", - "[Menu Item]", i); -! panel->textureIndex[i++] = i; - - setupTextureFor(panel->texLs, "IconBack", "(solid, gray)", "[Icon]", i); -! panel->textureIndex[i++] = i; - /* - setupTextureFor(panel->texLs, "WorkspaceBack", "(solid, black)", - "[Workspace]", i); -! panel->textureIndex[i++] = i; - */ - - updatePreviewBox(panel, EVERYTHING); -diff -rc WindowMaker-0.52.0.ori/WPrefs.app/Expert.c WindowMaker-0.52.0/WPrefs.app/Expert.c -*** WindowMaker-0.52.0.ori/WPrefs.app/Expert.c Thu Mar 18 17:39:22 1999 ---- WindowMaker-0.52.0/WPrefs.app/Expert.c Thu Apr 15 09:02:54 1999 -*************** -*** 31,37 **** - - WMWindow *win; - -! WMButton *swi[5]; - - } _Panel; - ---- 31,37 ---- - - WMWindow *win; - -! WMButton *swi[6]; - - } _Panel; - -*************** -*** 50,55 **** ---- 50,56 ---- - WMSetButtonSelected(panel->swi[2], GetBoolForKey("SaveSessionOnExit")); - WMSetButtonSelected(panel->swi[3], GetBoolForKey("UseSaveUnders")); - WMSetButtonSelected(panel->swi[4], GetBoolForKey("DisableBlinking")); -+ WMSetButtonSelected(panel->swi[5], GetBoolForKey("SingleClickLaunch")); - } - - -*************** -*** 63,69 **** - WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT); - WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP); - -! for (i=0; i<5; i++) { - panel->swi[i] = WMCreateSwitchButton(panel->frame); - WMResizeWidget(panel->swi[i], FRAME_WIDTH-40, 25); - WMMoveWidget(panel->swi[i], 20, 20+i*25); ---- 64,70 ---- - WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT); - WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP); - -! for (i=0; i<6; i++) { - panel->swi[i] = WMCreateSwitchButton(panel->frame); - WMResizeWidget(panel->swi[i], FRAME_WIDTH-40, 25); - WMMoveWidget(panel->swi[i], 20, 20+i*25); -*************** -*** 74,79 **** ---- 75,81 ---- - WMSetButtonText(panel->swi[2], _("Automatically save session when exiting WindowMaker")); - WMSetButtonText(panel->swi[3], _("Use SaveUnder in window frames, icons, menus and other objects")); - WMSetButtonText(panel->swi[4], _("Disable cycling color highlighting of icons.")); -+ WMSetButtonText(panel->swi[5], _("Launch applications and restore windows with a single click")); - - WMRealizeWidget(panel->frame); - WMMapSubwidgets(panel->frame); -*************** -*** 94,99 **** ---- 96,102 ---- - SetBoolForKey(WMGetButtonSelected(panel->swi[2]), "SaveSessionOnExit"); - SetBoolForKey(WMGetButtonSelected(panel->swi[3]), "UseSaveUnders"); - SetBoolForKey(WMGetButtonSelected(panel->swi[4]), "DisableBlinking"); -+ SetBoolForKey(WMGetButtonSelected(panel->swi[5]), "SingleClickLaunch"); - } - - -diff -rc WindowMaker-0.52.0.ori/src/WindowMaker.h WindowMaker-0.52.0/src/WindowMaker.h -*** WindowMaker-0.52.0.ori/src/WindowMaker.h Mon Mar 22 12:16:50 1999 ---- WindowMaker-0.52.0/src/WindowMaker.h Wed Apr 14 10:35:40 1999 -*************** -*** 348,353 **** ---- 348,356 ---- - /* shading animation */ - char shade_speed; - -+ /* single click to lauch applications */ -+ char single_click; -+ - int edge_resistance; - - struct { -diff -rc WindowMaker-0.52.0.ori/src/appicon.c WindowMaker-0.52.0/src/appicon.c -*** WindowMaker-0.52.0.ori/src/appicon.c Thu Apr 1 12:33:57 1999 ---- WindowMaker-0.52.0/src/appicon.c Wed Apr 14 10:38:03 1999 -*************** -*** 710,715 **** ---- 710,716 ---- - int shad_x = 0, shad_y = 0, docking=0, dockable, collapsed = 0; - int ix, iy; - int clickButton = event->xbutton.button; -+ Bool hasMoved; - Pixmap ghost = None; - - if (aicon->editing || WCHECK_STATE(WSTATE_MODAL)) -*************** -*** 758,763 **** ---- 759,765 ---- - dockable = canBeDocked(icon->owner); - - -+ hasMoved = False; - while (!done) { - WMMaskEvent(dpy, PointerMotionMask|ButtonReleaseMask|ButtonPressMask - |ButtonMotionMask|ExposureMask, &ev); -*************** -*** 767,772 **** ---- 769,775 ---- - break; - - case MotionNotify: -+ hasMoved = True; - if (!grabbed) { - if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD - || abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) { -*************** -*** 917,922 **** ---- 920,928 ---- - XSetWindowBackground(dpy, scr->dock_shadow, scr->white_pixel); - } - done = 1; -+ if (!hasMoved && wPreferences.single_click) { -+ iconDblClick(desc, event); -+ } - break; - } - } -diff -rc WindowMaker-0.52.0.ori/src/defaults.c WindowMaker-0.52.0/src/defaults.c -*** WindowMaker-0.52.0.ori/src/defaults.c Mon Mar 22 12:16:51 1999 ---- WindowMaker-0.52.0/src/defaults.c Wed Apr 14 10:54:24 1999 -*************** -*** 445,450 **** ---- 445,453 ---- - {"DisableBlinking", "NO", NULL, - &wPreferences.dont_blink, getBool, NULL - }, -+ {"SingleClickLaunch", "NO", NULL, -+ &wPreferences.single_click, getBool, NULL -+ }, - #ifdef WEENDOZE_CYCLE - {"WindozeCycling","NO", NULL, - &wPreferences.windoze_cycling, getBool, NULL -diff -rc WindowMaker-0.52.0.ori/src/dock.c WindowMaker-0.52.0/src/dock.c -*** WindowMaker-0.52.0.ori/src/dock.c Mon Mar 22 12:16:51 1999 ---- WindowMaker-0.52.0/src/dock.c Wed Apr 14 10:37:30 1999 -*************** -*** 3484,3490 **** - - - -! static void - handleIconMove(WDock *dock, WAppIcon *aicon, XEvent *event) - { - WScreen *scr = dock->screen_ptr; ---- 3484,3490 ---- - - - -! static int - handleIconMove(WDock *dock, WAppIcon *aicon, XEvent *event) - { - WScreen *scr = dock->screen_ptr; -*************** -*** 3499,3507 **** - int ix = aicon->xindex, iy = aicon->yindex; - int tmp; - Pixmap ghost = None; -! Bool docked; - int superfluous = wPreferences.superfluous; /* we catch it to avoid problems */ - - if (wPreferences.flags.noupdates) - return; - ---- 3499,3508 ---- - int ix = aicon->xindex, iy = aicon->yindex; - int tmp; - Pixmap ghost = None; -! Bool docked, hasMoved; - int superfluous = wPreferences.superfluous; /* we catch it to avoid problems */ - -+ hasMoved = False; - if (wPreferences.flags.noupdates) - return; - -*************** -*** 3551,3556 **** ---- 3552,3558 ---- - break; - - case MotionNotify: -+ hasMoved = True; - if (!grabbed) { - if (abs(ofs_x-ev.xmotion.x)>=MOVE_THRESHOLD - || abs(ofs_y-ev.xmotion.y)>=MOVE_THRESHOLD) { -*************** -*** 3690,3696 **** - #ifdef DEBUG - puts("End icon move"); - #endif -! return; - } - } - } ---- 3692,3701 ---- - #ifdef DEBUG - puts("End icon move"); - #endif -! if (!hasMoved) { -! return 1; -! } -! return 0; - } - } - } -*************** -*** 3807,3813 **** - XUnmapWindow(dpy, scr->clip_balloon); - scr->flags.clip_balloon_mapped = 0; - } -! - #ifdef DEBUG - puts("handling dock"); - #endif ---- 3812,3818 ---- - XUnmapWindow(dpy, scr->clip_balloon); - scr->flags.clip_balloon_mapped = 0; - } -! - #ifdef DEBUG - puts("handling dock"); - #endif -*************** -*** 3830,3836 **** - else - handleDockMove(dock, aicon, event); - } else -! handleIconMove(dock, aicon, event); - - } else if (event->xbutton.button==Button2 && dock->type==WM_CLIP && - aicon->xindex==0 && aicon->yindex==0) { ---- 3835,3843 ---- - else - handleDockMove(dock, aicon, event); - } else -! if (handleIconMove(dock, aicon, event) != 0 && -! wPreferences.single_click) -! iconDblClick(desc, event); - - } else if (event->xbutton.button==Button2 && dock->type==WM_CLIP && - aicon->xindex==0 && aicon->yindex==0) { -diff -rc WindowMaker-0.52.0.ori/src/icon.c WindowMaker-0.52.0/src/icon.c -*** WindowMaker-0.52.0.ori/src/icon.c Thu Mar 18 17:39:39 1999 ---- WindowMaker-0.52.0/src/icon.c Wed Apr 14 10:37:02 1999 -*************** -*** 809,814 **** ---- 809,815 ---- - int dx=event->xbutton.x, dy=event->xbutton.y; - int grabbed=0; - int clickButton=event->xbutton.button; -+ Bool hasMoved; - - if (WCHECK_STATE(WSTATE_MODAL)) - return; -*************** -*** 851,856 **** ---- 852,858 ---- - wwarning("pointer grab failed for icon move"); - #endif - } -+ hasMoved = False; - while(1) { - WMMaskEvent(dpy, PointerMotionMask|ButtonReleaseMask|ButtonPressMask - |ButtonMotionMask|ExposureMask, &ev); -*************** -*** 860,865 **** ---- 862,868 ---- - break; - - case MotionNotify: -+ hasMoved = True; - if (!grabbed) { - if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD - || abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) { -*************** -*** 897,902 **** ---- 900,908 ---- - - if (wPreferences.auto_arrange_icons) - wArrangeIcons(wwin->screen_ptr, True); -+ if (!hasMoved && wPreferences.single_click) { -+ miniwindowDblClick(desc, event); -+ } - return; - - } +diff -urN WindowMaker-0.62.1/WPrefs.app/Expert.c WindowMaker-0.62.1.patched/WPrefs.app/Expert.c +--- WindowMaker-0.62.1/WPrefs.app/Expert.c Fri Sep 17 17:03:54 1999 ++++ WindowMaker-0.62.1.patched/WPrefs.app/Expert.c Wed Aug 16 20:43:48 2000 +@@ -33,7 +33,7 @@ + + WMWindow *win; + +- WMButton *swi[8]; ++ WMButton *swi[9]; + + } _Panel; + +@@ -53,6 +53,7 @@ + WMSetButtonSelected(panel->swi[3], GetBoolForKey("UseSaveUnders")); + WMSetButtonSelected(panel->swi[4], GetBoolForKey("DisableBlinking")); + WMSetButtonSelected(panel->swi[5], GetBoolForKey("DontConfirmKill")); ++ WMSetButtonSelected(panel->swi[6], GetBoolForKey("SingleClickLaunch")); + } + + +@@ -66,7 +67,7 @@ + WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT); + WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP); + +- for (i=0; i<6; i++) { ++ for (i=0; i<7; i++) { + panel->swi[i] = WMCreateSwitchButton(panel->frame); + WMResizeWidget(panel->swi[i], FRAME_WIDTH-40, 25); + WMMoveWidget(panel->swi[i], 20, 20+i*25); +@@ -78,6 +79,7 @@ + WMSetButtonText(panel->swi[3], _("Use SaveUnder in window frames, icons, menus and other objects")); + WMSetButtonText(panel->swi[4], _("Disable cycling color highlighting of icons.")); + WMSetButtonText(panel->swi[5], _("Disable confirmation panel for the Kill command.")); ++ WMSetButtonText(panel->swi[6], _("Launch applications and restore windows with a single click")); + + WMRealizeWidget(panel->frame); + WMMapSubwidgets(panel->frame); +@@ -99,6 +101,7 @@ + SetBoolForKey(WMGetButtonSelected(panel->swi[3]), "UseSaveUnders"); + SetBoolForKey(WMGetButtonSelected(panel->swi[4]), "DisableBlinking"); + SetBoolForKey(WMGetButtonSelected(panel->swi[5]), "DontConfirmKill"); ++ SetBoolForKey(WMGetButtonSelected(panel->swi[6]), "SingleClickLaunch"); + } + + +diff -urN WindowMaker-0.62.1/src/WindowMaker.h WindowMaker-0.62.1.patched/src/WindowMaker.h +--- WindowMaker-0.62.1/src/WindowMaker.h Tue Mar 28 22:23:38 2000 ++++ WindowMaker-0.62.1.patched/src/WindowMaker.h Wed Aug 16 20:37:00 2000 +@@ -416,6 +416,9 @@ + /* shading animation */ + signed char shade_speed; + ++ /* single click to lauch applications */ ++ char single_click; ++ + int edge_resistance; + char attract; + +diff -urN WindowMaker-0.62.1/src/appicon.c WindowMaker-0.62.1.patched/src/appicon.c +--- WindowMaker-0.62.1/src/appicon.c Wed Mar 29 21:52:10 2000 ++++ WindowMaker-0.62.1.patched/src/appicon.c Wed Aug 16 20:37:00 2000 +@@ -717,6 +717,7 @@ + int shad_x = 0, shad_y = 0, docking=0, dockable, collapsed = 0; + int ix, iy; + int clickButton = event->xbutton.button; ++ Bool hasMoved; + Pixmap ghost = None; + Window wins[2]; + +@@ -786,6 +787,7 @@ + XClearWindow(dpy, scr->dock_shadow); + } + ++ hasMoved = False; + while (!done) { + WMMaskEvent(dpy, PointerMotionMask|ButtonReleaseMask|ButtonPressMask + |ButtonMotionMask|ExposureMask, &ev); +@@ -795,6 +797,7 @@ + break; + + case MotionNotify: ++ hasMoved = True; + if (!grabbed) { + if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD + || abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) { +@@ -925,6 +928,9 @@ + wArrangeIcons(scr, True); + + done = 1; ++ if (!hasMoved && wPreferences.single_click) { ++ iconDblClick(desc, event); ++ } + break; + } + } +diff -urN WindowMaker-0.62.1/src/defaults.c WindowMaker-0.62.1.patched/src/defaults.c +--- WindowMaker-0.62.1/src/defaults.c Tue Mar 28 22:58:25 2000 ++++ WindowMaker-0.62.1.patched/src/defaults.c Wed Aug 16 20:37:58 2000 +@@ -530,6 +530,9 @@ + {"DisableBlinking", "NO", NULL, + &wPreferences.dont_blink, getBool, NULL + }, ++ {"SingleClickLaunch", "NO", NULL, ++ &wPreferences.single_click, getBool, NULL ++ }, + /* style options */ + {"MenuStyle", "normal", seMenuStyles, + &wPreferences.menu_style, getEnum, setMenuStyle +diff -urN WindowMaker-0.62.1/src/dock.c WindowMaker-0.62.1.patched/src/dock.c +--- WindowMaker-0.62.1/src/dock.c Wed Mar 29 21:52:10 2000 ++++ WindowMaker-0.62.1.patched/src/dock.c Wed Aug 16 20:40:15 2000 +@@ -3750,7 +3750,7 @@ + + + +-static void ++static int + handleIconMove(WDock *dock, WAppIcon *aicon, XEvent *event) + { + WScreen *scr = dock->screen_ptr; +@@ -3765,11 +3765,11 @@ + int ix = aicon->xindex, iy = aicon->yindex; + int tmp; + Pixmap ghost = None; +- Bool docked; ++ Bool docked, hasMoved; + int superfluous = wPreferences.superfluous; /* we catch it to avoid problems */ + int omnipresent = aicon->omnipresent; /* this must be cached!!! */ + +- ++ hasMoved = False; + if (wPreferences.flags.noupdates) + return; + +@@ -3820,6 +3820,7 @@ + break; + + case MotionNotify: ++ hasMoved = True; + if (!grabbed) { + if (abs(ofs_x-ev.xmotion.x)>=MOVE_THRESHOLD + || abs(ofs_y-ev.xmotion.y)>=MOVE_THRESHOLD) { +@@ -3975,7 +3976,10 @@ + #ifdef DEBUG + puts("End icon move"); + #endif +- return; ++ if (!hasMoved) { ++ return 1; ++ } ++ return 0; + } + } + } +@@ -4115,7 +4119,9 @@ + else + handleDockMove(dock, aicon, event); + } else +- handleIconMove(dock, aicon, event); ++ if (handleIconMove(dock, aicon, event) != 0 && ++ wPreferences.single_click) ++ iconDblClick(desc, event); + + } else if (event->xbutton.button==Button2 && dock->type==WM_CLIP && + aicon==scr->clip_icon) { +diff -urN WindowMaker-0.62.1/src/icon.c WindowMaker-0.62.1.patched/src/icon.c +--- WindowMaker-0.62.1/src/icon.c Thu Jan 20 06:51:44 2000 ++++ WindowMaker-0.62.1.patched/src/icon.c Wed Aug 16 20:37:00 2000 +@@ -874,6 +874,7 @@ + int dx=event->xbutton.x, dy=event->xbutton.y; + int grabbed=0; + int clickButton=event->xbutton.button; ++ Bool hasMoved; + + if (WCHECK_STATE(WSTATE_MODAL)) + return; +@@ -916,6 +917,7 @@ + wwarning("pointer grab failed for icon move"); + #endif + } ++ hasMoved = False; + while(1) { + WMMaskEvent(dpy, PointerMotionMask|ButtonReleaseMask|ButtonPressMask + |ButtonMotionMask|ExposureMask, &ev); +@@ -925,6 +927,7 @@ + break; + + case MotionNotify: ++ hasMoved = True; + if (!grabbed) { + if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD + || abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) { +@@ -962,6 +965,9 @@ + + if (wPreferences.auto_arrange_icons) + wArrangeIcons(wwin->screen_ptr, True); ++ if (!hasMoved && wPreferences.single_click) { ++ miniwindowDblClick(desc, event); ++ } + return; + + }