diff --git a/NEWS b/NEWS index 25b8d89f..a083eb5a 100644 --- a/NEWS +++ b/NEWS @@ -2,7 +2,7 @@ NEWS for veteran Window Maker users ----------------------------------- ---- 0.70.1 +--- 0.80.0 Shading/Unshading windows using mouse wheel on their titlebar --------------------------------------------------------- @@ -23,6 +23,68 @@ Practically speaking, this means that you have to move the mouse wheel up or down quickly, like when you want to quickly scroll over something big. +Shared application icons +------------------------ + +Real application icon sharing was implemented in place of the collapse +appicon thing. With this applications of the same instance.class will +have a single shared application icon and hiding will hide all windows +of the aplications attached to that appicon as if there is a single +application. This feature is enabled by default for all applications in +the global WMWindowAttributes defaults domain using: + +"*" = {SharedAppIcon = Yes;}; + +If you're not satisfied with this or want the old behaviour back you +can revert this (either in the global domain for all users or in your +personal WMWindowAttibutes domain) using SharedAppIcon = No; for "*" +It can also be enabled/disabled for individual applications as needed. + +Setting this option can be done using the window's inspector panel in the +"Application Specific" section. You can set/unset it for all applications by +using the "Defaults for all windows" in the "Window Specification" section + +Basically using this can have 2 major scenarios: +1. Leave it on by default, but disable it for the few specific + applications that do not behave well with it. (default) +2. Leave it off by default, and enable it for all applications for + which you want it enabled. + +At this point all applications we tested work ok, some of them even +work better with this feature turned on: for example xmms and Corel's +WorkPerfect8 now only have 1 appicon (they used to have 2 without this +feature). + +This feature is turned off by default for the following applications +because it's incompatible with them: +1. all GNUstep applications +2. applications with an application menu (wterm, Aileron, etc) + +As a side note: wterm can use the shared appicon feature as long as it +doesn't use the appmenu (will do this by default). If you start it +using the appmenu (wterm -wm) it will disable the shared appicon +feature because apps with appmenus are incompatible with this feature. + +If an application is a GNUstep application or if it has an appmenu, it's +detected automatically and the shared appicon is disabled automatically +without any user intervention or need to configure anything. + + +Dock/Clip stealing appicons +--------------------------- + +This feature is different form the Clip's "Autoattract Icons" feature +as it won't attach any new icon to the dock/clip. +What it does, is when you start an application by other means than +dock/clip, like for example using the main menu or a terminal, it will +search the dock/clips for the presence of an appicon for that +application, that is not already running at that moment and will attach +the started application to that appicon in the dock/clip if available, +making it look like the dock/clip just stole the appicon for the started +application. There is an animation for this to offer visual feedback +that this happened. + + --- 0.70.0 diff --git a/src/dialog.c b/src/dialog.c index 3d62d27a..7671bd0b 100644 --- a/src/dialog.c +++ b/src/dialog.c @@ -961,28 +961,50 @@ logoPushCallback(void *data) static int oldi = 0; int len; static int jingobeu[] = { - 329, 150, -1, 100, 329, 150, -1, 100, 329, 300, -1, 250, - 329, 150, -1, 100, 329, 150, -1, 100, 329, 300, -1, 250, - 329, 150, 392, 150, 261, 150, 293, 150, 329, 400, -1, 400, 0 + 329, 150, -1, 100, 329, 150, -1, 100, 329, 300, -1, 250, + 329, 150, -1, 100, 329, 150, -1, 100, 329, 300, -1, 250, + 329, 150, 392, 150, 261, 150, 293, 150, 329, 400, -1, 400, 0 }; static int c = 0; if (panel->x) { - XKeyboardControl kc; + XKeyboardControl kc; + XKeyboardState ksave; + unsigned long mask = KBBellPitch|KBBellDuration|KBBellPercent; + + XGetKeyboardControl(dpy, &ksave); if (panel->x > 0) { - if(jingobeu[panel->x-1]==0){panel->x=-1;}else if(jingobeu[panel->x --1]<0){panel->x++;c=jingobeu[panel->x-1]/50;panel->x++;}else if(c==0){ - kc.bell_pitch=jingobeu[panel->x-1];panel->x++;kc.bell_percent=50;c= - jingobeu[panel->x-1]/50;kc.bell_duration=jingobeu[panel->x-1];panel->x++; -XChangeKeyboardControl(dpy,KBBellPitch|KBBellDuration|KBBellPercent,&kc); - XBell(dpy,50);XFlush(dpy);}else{c--;}} + if(jingobeu[panel->x-1]==0) { + panel->x=-1; + } else if (jingobeu[panel->x-1]<0) { + panel->x++; + c=jingobeu[panel->x-1]/50; + panel->x++; + } else if (c==0) { + kc.bell_percent=50; + kc.bell_pitch=jingobeu[panel->x-1]; + panel->x++; + kc.bell_duration=jingobeu[panel->x-1]; + c=jingobeu[panel->x-1]/50; + panel->x++; + XChangeKeyboardControl(dpy, mask, &kc); + XBell(dpy, 50); + XFlush(dpy); + } else { + c--; + } + } if (!(panel->cycle % 4)) { WMPixmap *p; p = DoXThing(panel->wwin); WMSetLabelImage(panel->logoL, p); - } + } + kc.bell_pitch = ksave.bell_pitch; + kc.bell_percent = ksave.bell_percent; + kc.bell_duration = ksave.bell_duration; + XChangeKeyboardControl(dpy, mask, &kc); } else if (panel->cycle < 30) { RImage *image; WMPixmap *pix; @@ -1470,7 +1492,7 @@ wShowInfoPanel(WScreen *scr) panel->timer = WMAddTimerHandler(100, logoPushCallback, panel); panel->cycle = 0; panel->x = 1; - panel->str = _("Merry X'mas!"); + panel->str = _("Merry Christmas!"); panel->oldPix = WMRetainPixmap(WMGetLabelImage(panel->logoL)); } #endif