From: "Fran Litterio" <flitterio@gmail.com>
Cc: Drew Adams <drew.adams@oracle.com>
Subject: Re: Patch to fix frame positioning with negative top/left values onWindows
Date: Sat, 1 Apr 2006 11:22:09 -0500 [thread overview]
Message-ID: <a5b589a70604010822y20016dc1hc955a0bed9cfe889@mail.gmail.com> (raw)
In-Reply-To: <DNEMKBNJBGPAOPIJOOICMEEPDEAA.drew.adams@oracle.com>
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 <drew.adams@oracle.com> 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: emacs-devel-bounces+drew.adams=oracle.com@gnu.org
> [mailto:emacs-devel-bounces+drew.adams=oracle.com@gnu.org]On Behalf Of
> Francis Litterio
> Sent: Thursday, July 07, 2005 9:24 AM
> To: emacs-devel@gnu.org
> Cc: help-emacs-windows@gnu.org
> 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
> Emacs-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-devel
>
>
next prev parent reply other threads:[~2006-04-01 16:22 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-07 16:23 Patch to fix frame positioning with negative top/left values on Windows Francis Litterio
2005-07-09 0:30 ` Francis Litterio
2005-07-09 8:07 ` Jason Rumney
2005-07-09 15:16 ` Re: Patch to fix frame positioning with negative top/leftvalues " Drew Adams
2005-07-09 19:38 ` Jason Rumney
2005-07-10 1:17 ` Francis Litterio
2005-07-10 5:19 ` Richard M. Stallman
2006-04-01 7:44 ` Patch to fix frame positioning with negative top/left values onWindows Drew Adams
2006-04-01 16:22 ` Fran Litterio [this message]
2006-04-02 20:38 ` Richard Stallman
2006-04-03 1:23 ` Fran Litterio
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a5b589a70604010822y20016dc1hc955a0bed9cfe889@mail.gmail.com \
--to=flitterio@gmail.com \
--cc=drew.adams@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).