136796c6ef
- Update to 2.6.6 * fvwm features: - Support for Russian from Ivan Gayevskiy. - EnvMatch supports infostore variables. - The option "forget" to the Maximize command allows to unmaximize a window without changing its size and position. - Windows shaded to a corner (NW, NE, SW, SE) are reduced to a small square. - New option "!raise" to the WarpToWindow command. - The new extended variables $[wa.x], $[wa.y], $[wa.width], $[wa.height] can be used to get the geometry of the EWMH working area, and $[dwa.x], $[dwa.y], $[dwa.width], $[dwa.height] can be used to get the geometry of the EWMH dynamic working area. - The Resize commands accept "wa" or "da" as a suffix of the width or height value. If present, the value is a percentage of the width or height of the EWMH working area or the EWMH dynamic working area. - Fvwm is much more resilient against applications that flood the window manager with repeated events. * New module features: - FvwmForm supports separator lines. - New FvwmIconMan options: IconAndSelectButton IconAndSelectColorset * Bug fixes: - Provide a wrapper for the deprecation of XKeycodeToKeysym and use XkbKeycodeToKeysym() where appropriate. - fvwm-menu-desktop is re-written and provides better support of the XDG menu specification. OBS-URL: https://build.opensuse.org/request/show/417830 OBS-URL: https://build.opensuse.org/package/show/X11:windowmanagers/fvwm2?expand=0&rev=33
81 lines
2.3 KiB
Diff
81 lines
2.3 KiB
Diff
From 65bfccfd9ed0cac95088d612fdcdf3edf4c3b23d Mon Sep 17 00:00:00 2001
|
|
From: Thomas Adam <thomas@fvwm.org>
|
|
Date: Thu, 4 Aug 2016 11:38:52 +0100
|
|
Subject: [PATCH] Expose: don't flush accumulated events
|
|
|
|
When dealing with Expose events, don't ever flush the accumulated ones; the
|
|
handling of the queue here is incorrect, and ultimately gets addressed during
|
|
other operations.
|
|
|
|
This should help fix the problem of ParentRelative icon pixmaps from
|
|
corrupting other icons, etc.
|
|
---
|
|
fvwm/events.c | 13 +------------
|
|
fvwm/icons.c | 15 ++++-----------
|
|
fvwm/menus.c | 1 -
|
|
3 files changed, 5 insertions(+), 24 deletions(-)
|
|
|
|
diff --git a/fvwm/events.c b/fvwm/events.c
|
|
index 3ea69bb..1d5bb64 100644
|
|
--- a/fvwm/events.c
|
|
+++ b/fvwm/events.c
|
|
@@ -2412,18 +2412,7 @@ void HandleExpose(const evh_args_t *ea)
|
|
FvwmWindow * const fw = ea->exc->w.fw;
|
|
|
|
e = *ea->exc->x.etrigger;
|
|
-#if 0
|
|
- /* This doesn't work well. Sometimes, the expose count is zero although
|
|
- * dozens of expose events are pending. This happens all the time
|
|
- * during a shading animation. Simply flush expose events
|
|
- * unconditionally. */
|
|
- if (e.xexpose.count != 0)
|
|
- {
|
|
- flush_accumulate_expose(e.xexpose.window, &e);
|
|
- }
|
|
-#else
|
|
- flush_accumulate_expose(e.xexpose.window, &e);
|
|
-#endif
|
|
+
|
|
if (fw == NULL)
|
|
{
|
|
return;
|
|
diff --git a/fvwm/icons.c b/fvwm/icons.c
|
|
index a58a019..d23f08d 100644
|
|
--- a/fvwm/icons.c
|
|
+++ b/fvwm/icons.c
|
|
@@ -1366,18 +1366,11 @@ void DrawIconWindow(
|
|
|
|
if (draw_title && FW_W_ICON_TITLE(fw) != None)
|
|
{
|
|
- if (pev && pev->xexpose.window != FW_W_ICON_TITLE(fw))
|
|
+ if (pev && pev->xexpose.window == FW_W_ICON_TITLE(fw))
|
|
{
|
|
- XEvent e;
|
|
- if (FCheckTypedWindowEvent(
|
|
- dpy, FW_W_ICON_TITLE(fw), Expose, &e))
|
|
- {
|
|
- flush_accumulate_expose(
|
|
- FW_W_ICON_TITLE(fw), &e);
|
|
- DrawIconTitleWindow(
|
|
- fw, &e, BackColor, Shadow, Relief, cs,
|
|
- title_cs);
|
|
- }
|
|
+ DrawIconTitleWindow(
|
|
+ fw, pev, BackColor, Shadow, Relief, cs,
|
|
+ title_cs);
|
|
}
|
|
else
|
|
{
|
|
diff --git a/fvwm/menus.c b/fvwm/menus.c
|
|
index 885eada..2c49195 100644
|
|
--- a/fvwm/menus.c
|
|
+++ b/fvwm/menus.c
|
|
@@ -6239,7 +6239,6 @@ Bool menu_expose(XEvent *event, FvwmWindow *fw)
|
|
dpy, event->xany.window, MenuContext, (caddr_t *)&mr) !=
|
|
XCNOENT))
|
|
{
|
|
- flush_accumulate_expose(event->xany.window, event);
|
|
paint_menu(mr, event, fw);
|
|
|
|
return True;
|