[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Patch to fix frame positioning with negative top/left values onWindo
From: |
Fran Litterio |
Subject: |
Re: Patch to fix frame positioning with negative top/left values onWindows |
Date: |
Sat, 1 Apr 2006 11:22:09 -0500 |
I just checked the CVS archive, and my patch has not been applied.
I've been running with it for well over a year with no negative
side-effects. I would like to see it applied.
--
Fran Litterio
On 4/1/06, Drew Adams <address@hidden> wrote:
> I've been using a 2005-06-26 CVS snapshot on Windows that had this bug. I
> thought that this had been fixed since that snapshot. I just tried a
> 2006-03-20 snapshot on Windows, however, and the same bug is still there.
>
> Did Fran's patch never get applied, or doesn't it work? His patch dates from
> January of 2005 - soon to be a year and a half! The bug symptoms are the
> same as before. See thread "Improved patch to fix frame positioning bug on
> Windows" from 2005-01-14.
>
> -----Original Message-----
> From: address@hidden
> [mailto:address@hidden Behalf Of
> Francis Litterio
> Sent: Thursday, July 07, 2005 9:24 AM
> To: address@hidden
> Cc: address@hidden
> Subject: Patch to fix frame positioning with negative top/left values
> onWindows
>
> Emacs developers,
>
> This patch to the CVS Emacs sources fixes the way that function
> x_calc_absolute_position() accounts for the Windows-drawn borders around
> a frame when converting a negative 'top or 'left parameter into the
> equivalent positive value.
>
> I have submitted this patch before, but RMS told me that the FSF needed
> a copyright assignment from me before it could applied. The FSF now has
> mysigned the copyright assignment, so please let me know if there's any
> problem with this patch. I've been running Emacs with it for some
> months with no problems.
> --
> Francis Litterio
> franl <at> world . std . com
>
>
> diff -w -u -u -w -r1.228 w32term.c
> --- w32term.c 4 Jul 2005 16:06:37 -0000 1.228
> +++ w32term.c 7 Jul 2005 16:19:39 -0000
> @@ -5438,17 +5438,58 @@
> {
> int flags = f->size_hint_flags;
>
> - /* Treat negative positions as relative to the leftmost bottommost
> + /* left_right_borders_width holds the sum of the widths of
> the frame's left
> + and right borders (in pixels) drawn by Windows. */
> +
> + unsigned int left_right_borders_width = 8; /* A sensible
> default value. */
> +
> + /* top_bottom_borders_height holds the sum of the heights of
> the frame's top and
> + bottom borders (in pixels) drawn by Windows. */
> +
> + unsigned int top_bottom_borders_height = 32; /* A sensible
> default value. */
> +
> + /* Now obtain the actual values of the above two variables.
> If we fail to
> + obtain the actual values, we will use the defaults
> assigned above. We compute
> + the border width (height) by subtracting the width
> (height) of the frame's
> + client area from the width (height) of the frame's entire window.
> + */
> +
> + WINDOWPLACEMENT wp = { 0 };
> +
> + BOOL status = GetWindowPlacement (FRAME_W32_WINDOW (f), &wp);
> +
> + if (status != FALSE)
> + {
> + RECT client_rect = { 0 };
> +
> + status = GetClientRect (FRAME_W32_WINDOW (f), &client_rect);
> +
> + if (status != FALSE)
> + {
> + left_right_borders_width =
> + (wp.rcNormalPosition.right - wp.rcNormalPosition.left) -
> + (client_rect.right - client_rect.left);
> +
> + top_bottom_borders_height =
> + (wp.rcNormalPosition.bottom - wp.rcNormalPosition.top) -
> + (client_rect.bottom - client_rect.top);
> + }
> + }
> +
> + /* Treat negative positions as relative to the rightmost bottommost
> position that fits on the screen. */
> if (flags & XNegative)
> f->left_pos = (FRAME_W32_DISPLAY_INFO (f)->width
> - FRAME_PIXEL_WIDTH (f)
> - + f->left_pos);
> + + f->left_pos
> + - (left_right_borders_width - 1));
>
> if (flags & YNegative)
> f->top_pos = (FRAME_W32_DISPLAY_INFO (f)->height
> - FRAME_PIXEL_HEIGHT (f)
> - + f->top_pos);
> + + f->top_pos
> + - (top_bottom_borders_height - 1));
> +
> /* The left_pos and top_pos
> are now relative to the top and left screen edges,
> so the flags should correspond. */
>
>
>
> _______________________________________________
> Emacs-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-devel
>
>