kwo pushed a commit to branch master.

http://git.enlightenment.org/e16/e16.git/commit/?id=b27ff7ee74c0390c927fa5afa49ac4ccf2b257e0

commit b27ff7ee74c0390c927fa5afa49ac4ccf2b257e0
Author: Kim Woelders <k...@woelders.dk>
Date:   Wed May 6 07:51:23 2020 +0200

    Fix technical/shapewin move mode through edge flip
    
    The technical etc. move modes using a shaped window ("avoid server grab"
    mode) would create a new shape window on every edge flip, which could
    only be removed by restarting e16.
    
    Broken since 0c16916258bde5de8874b96f6539be6e6b2ab2cf - v1.0.12.
---
 src/draw.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/draw.c b/src/draw.c
index 511200e7..5b1cff73 100644
--- a/src/draw.c
+++ b/src/draw.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2000-2007 Carsten Haitzler, Geoff Harrison and various 
contributors
- * Copyright (C) 2007-2018 Kim Woelders
+ * Copyright (C) 2007-2020 Kim Woelders
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
@@ -226,12 +226,16 @@ DrawEwinShape(EWin * ewin, int md, int x, int y, int w, 
int h,
      {
        EwinShapeSet(ewin);
 
-       psd = ECALLOC(ShapeData, 1);
-       ewin->shape_data = psd;
+       psd = (ShapeData *) ewin->shape_data;
        if (!psd)
-          goto done;
-       psd->root = WinGetXwin(VROOT);
-       EwinBorderGetSize(ewin, &psd->bl, &psd->br, &psd->bt, &psd->bb);
+         {
+            psd = ECALLOC(ShapeData, 1);
+            if (!psd)
+               goto done;
+            ewin->shape_data = psd;
+            psd->root = WinGetXwin(VROOT);
+            EwinBorderGetSize(ewin, &psd->bl, &psd->br, &psd->bt, &psd->bb);
+         }
      }
    psd = (ShapeData *) ewin->shape_data;
    if (!psd)

-- 


Reply via email to