From: "Rodolfo García Peñas (kix)" <[email protected]>
This patch removes the wIconDestroy and the window always has icon.
This patch doesn't create the icon at the window creation! so yet
WWindow icon could be null.
---
src/actions.c | 6 +-----
src/window.c | 8 +++++++-
src/wmspec.c | 16 +---------------
3 files changed, 9 insertions(+), 21 deletions(-)
diff --git a/src/actions.c b/src/actions.c
index a79de8a..e1e6aaa 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -1318,12 +1318,8 @@ void wDeiconifyWindow(WWindow *wwin)
}
if (!wPreferences.disable_miniwindows && wwin->icon != NULL
- && !wwin->flags.net_handle_icon) {
+ && !wwin->flags.net_handle_icon)
RemoveFromStackList(wwin->icon->core);
- /* removeIconGrabs(wwin->icon); */
- wIconDestroy(wwin->icon);
- wwin->icon = NULL;
- }
if (!netwm_hidden) {
XUngrabServer(dpy);
diff --git a/src/window.c b/src/window.c
index 1cb384a..da17334 100644
--- a/src/window.c
+++ b/src/window.c
@@ -235,11 +235,17 @@ void wWindowDestroy(WWindow *wwin)
wFrameWindowDestroy(wwin->frame);
if (wwin->icon) {
- RemoveFromStackList(wwin->icon->core);
+ /* If minimized, remove it form the stacking list */
+ if (!wPreferences.disable_miniwindows &&
+ !wwin->flags.net_handle_icon &&
+ wwin->flags.miniaturized)
+ RemoveFromStackList(wwin->icon->core);
+
wIconDestroy(wwin->icon);
if (wPreferences.auto_arrange_icons)
wArrangeIcons(wwin->screen_ptr, True);
}
+
if (wwin->net_icon_image)
RReleaseImage(wwin->net_icon_image);
diff --git a/src/wmspec.c b/src/wmspec.c
index c758f0a..f8e0029 100644
--- a/src/wmspec.c
+++ b/src/wmspec.c
@@ -1053,18 +1053,6 @@ static void doStateAtom(WWindow *wwin, Atom state, int
set, Bool init)
}
}
-static void removeIcon(WWindow *wwin)
-{
- if (wwin->icon == NULL)
- return;
- if (wwin->flags.miniaturized && wwin->icon->mapped) {
- XUnmapWindow(dpy, wwin->icon->core->window);
- RemoveFromStackList(wwin->icon->core);
- wIconDestroy(wwin->icon);
- wwin->icon = NULL;
- }
-}
-
static Bool handleWindowType(WWindow *wwin, Atom type, int *layer)
{
Bool ret = True;
@@ -1282,9 +1270,7 @@ static Bool updateNetIconInfo(WWindow *wwin)
}
if (wwin->flags.miniaturized && old_state !=
wwin->flags.net_handle_icon) {
- if (wwin->flags.net_handle_icon) {
- removeIcon(wwin);
- } else {
+ if (!wwin->flags.net_handle_icon) {
wwin->flags.miniaturized = False;
wwin->flags.skip_next_animation = True;
wIconifyWindow(wwin);
--
1.7.10.4
--
To unsubscribe, send mail to [email protected].