On Fri, 30 Sep 2005, Dominik Vogt wrote:

On Fri, Sep 30, 2005 at 12:58:12PM +0200, Viktor Griph wrote:
On Fri, 30 Sep 2005, Dominik Vogt wrote:
[snip]
I've reverted the patch, and will try to look for a more complete (and
probably more complex) solution when I find the time.

The problem is that if you do for example
DestroyFunc ResizeFunction
AddToFunc ResizeFunction
+ M ThisWindow (Shaded) WindowShade off
+ M Resize
+ M TestRc (Match) WindowShade on

Mouse  1 SF ResizeFunction
to resize shaded windows opaque you end up with reference point making it
resize to double it's size at start, and move up to above it's starting
point. If you move the pointer down beneth the old lower border it will
just be double sized. I'll look into another solution.

Phew, interesting problem.  You're right in that the resize code
should not have a reference point to start with when changing the
size of a shaded window.  The difficult part is to find out that
the window *was* shaded when the reference point was recorded but
isn't anymore.

It's not just only shaded windows (but I think the are the only one where I see any usefulness in moving the reference points from the complex function before calling resize). Ant function that moves any part of the window could create similar effects, but not as bad as unshading, which is the extreme situation.

DestroyFunc StupidResize
AddToFunc StupidResize
+ I Move w+10 w+10
+ I Resize
Mouse 1 FS M Function StupidResizee

Can you explain the jumping movement from the top of your head?  I
guess you have already debugged that, so I don't need to look at
it myself for now.

I'll try. First of all it should be noted that the problem was for normal resizing of shaded windows as well before my shaded resize patch (The changes to move_resize.c were about that, except for the removal of a duplicate code block)

I'll describe the error as it is with TitleAtTop, and no shade direction given. It affects all other shade directions as well in a similar way, with directions changed.

When starting the resize on the south border the window will grow to doble size, by moving the title up the window hight, leaving the lower border where it is. Moving the mouse north will keep resizing the window north from that point, keeping the distance of the old window height. Moving the pointer down will have the window flicker between that double sized window, and the original size and pposition window increased in hight by as mush as you have moved the pointer down. (Moving slowly can make it stop at either state.) Once passing the original unshaded border point minus the title hieight (when the flicker window title intersects the original title position) the window will keep resizing with no flickering.

I didn't debug it further then finding out that it was the reference points that was wrong, so I didn't dig into the code to check why the flickering occured.

Ooops. Sorry about that. What was the compiler flags that should be used
to disable all ignorable warnings?

gcc-2.95.x:

make CFLAGS="-g -O2 -Wall -Werror"

gcc-3.x and gcc-4.x:

make CFLAGS="-g -O2 -Wall -Wpointer-arith -fno-stric-aliasing -Werror"


By the way, this information and more is in the docs/DEVELOPERS
file.  I always try to keep it up to date.

Thanks again. I thought all developer info was on the web-page.

/Viktor

Reply via email to