* Re: Same frame-positioning bug as before: negative top/left values on Windows
[not found] <MEEKKIABFKKDFJMPIOEBKEHDDDAA.drew.adams@oracle.com>
@ 2006-07-18 13:09 ` Fran Litterio
2006-07-18 13:32 ` Drew Adams
[not found] ` <m3vepvkq2g.fsf@kfs-l.imdomain.dk>
0 siblings, 2 replies; 5+ messages in thread
From: Fran Litterio @ 2006-07-18 13:09 UTC (permalink / raw)
Drew,
You are seeing this bug because my patch to fix frame positioning with
negative X/Y values on Windows has not been applied. Now that the FSF
has my copyright assignment papers, they should be able to apply my
patch (below).
--
Fran Litterio
On 7/18/06, Drew Adams <drew.adams@oracle.com> wrote:
> This is an old bug. I thought this was going to be fixed by Fran's bug
> fix, but I see that it is not. See my bug report of May 3, 2005, below.
>
> emacs -q
>
> In scratch buffer evaluate: (make-frame '((top . -1) (left . -1)))
>
> The new frame does not have its bottom at the display bottom. The
> frame bottom is below the frame bottom.
>
> I've been waiting for this fix for a year and a half. I use a
> standalone minibuffer frame, and I have code that positions it at the
> display bottom, no matter the size of the display. The code works
> perfectly in Emacs 20, but this bug causes the frame to be too low on
> the display in Emacs 22(and since the frame is only two rows high,
> it is essentially off the bottom of the display).
>
> Can someone please fix this bug? Emacs should be able to correctly handle
> negative `top' frame parameter values.
>
> Thanks.
--- w32term.c 5 Jun 2006 21:20:59 -0000 1.246
+++ w32term.c 18 Jul 2006 13:03:33 -0000
@@ -5312,17 +5312,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. */
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: Same frame-positioning bug as before: negative top/left values on Windows
2006-07-18 13:09 ` Same frame-positioning bug as before: negative top/left values on Windows Fran Litterio
@ 2006-07-18 13:32 ` Drew Adams
[not found] ` <m3vepvkq2g.fsf@kfs-l.imdomain.dk>
1 sibling, 0 replies; 5+ messages in thread
From: Drew Adams @ 2006-07-18 13:32 UTC (permalink / raw)
You are seeing this bug because my patch to fix frame positioning with
negative X/Y values on Windows has not been applied. Now that the FSF
has my copyright assignment papers, they should be able to apply my
patch (below).
Thanks Fran. Good to hear. I thought it had already been applied. - Drew
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Same frame-positioning bug as before: negative top/left values on Windows
[not found] ` <m3vepvkq2g.fsf@kfs-l.imdomain.dk>
@ 2006-07-18 16:14 ` Fran Litterio
2006-07-18 23:05 ` Kim F. Storm
0 siblings, 1 reply; 5+ messages in thread
From: Fran Litterio @ 2006-07-18 16:14 UTC (permalink / raw)
Cc: Drew Adams
> > You are seeing this bug because my patch to fix frame positioning with
> > negative X/Y values on Windows has not been applied. Now that the FSF
> > has my copyright assignment papers, they should be able to apply my
> > patch (below).
>
> I will install it if you send me a ChangeLog entry for it.
Kim,
Thanks. Here's the full patch, including the src/Changelog patch.
Let me know if you need anything else. This patch fixes the problem
where
(set-frame-position (selected-frame) -1 -1)
fails to position the selected frame exactly in the lower right corner
of the display.
--
Fran Litterio
Index: src/ChangeLog
===================================================================
RCS file: /cvsroot/emacs/emacs/src/ChangeLog,v
retrieving revision 1.5194
diff -w -u -r1.5194 ChangeLog
--- src/ChangeLog 18 Jul 2006 13:25:28 -0000 1.5194
+++ src/ChangeLog 18 Jul 2006 16:11:19 -0000
@@ -1,3 +1,8 @@
+2006-07-18 Francis Litterio <franl@world.std.com>
+
+ * w32term.c (x_calc_absolute_position): Fix frame positioning on
+ Windows with negative X/Y coordinates.
+
2006-07-18 Kim F. Storm <storm@cua.dk>
Cleanup Fsignal calls that never returns; now only use it for Qquit.
Index: src/w32term.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/w32term.c,v
retrieving revision 1.247
diff -w -u -r1.247 w32term.c
--- src/w32term.c 30 Jun 2006 13:41:15 -0000 1.247
+++ src/w32term.c 18 Jul 2006 16:11:28 -0000
@@ -5312,17 +5312,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. */
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Same frame-positioning bug as before: negative top/left values on Windows
2006-07-18 16:14 ` Fran Litterio
@ 2006-07-18 23:05 ` Kim F. Storm
2006-07-19 14:23 ` Fran Litterio
0 siblings, 1 reply; 5+ messages in thread
From: Kim F. Storm @ 2006-07-18 23:05 UTC (permalink / raw)
Cc: Drew Adams, emacs-devel
"Fran Litterio" <flitterio@gmail.com> writes:
> Thanks. Here's the full patch, including the src/Changelog patch.
> Let me know if you need anything else.
I have installed the patch -- in a slightly edited version, as the
original patch didn't install cleanly (it seems your mailer has
messed up whitespace and line wrapping.)
Pls. verify that it still works.
--
Kim F. Storm <storm@cua.dk> http://www.cua.dk
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Same frame-positioning bug as before: negative top/left values on Windows
2006-07-18 23:05 ` Kim F. Storm
@ 2006-07-19 14:23 ` Fran Litterio
0 siblings, 0 replies; 5+ messages in thread
From: Fran Litterio @ 2006-07-19 14:23 UTC (permalink / raw)
Cc: Drew Adams, emacs-devel
Kim,
Yes, it still works. Thanks for installing this patch.
--
Fran Litterio
On 7/18/06, Kim F. Storm <storm@cua.dk> wrote:
> "Fran Litterio" <flitterio@gmail.com> writes:
>
> > Thanks. Here's the full patch, including the src/Changelog patch.
> > Let me know if you need anything else.
>
> I have installed the patch -- in a slightly edited version, as the
> original patch didn't install cleanly (it seems your mailer has
> messed up whitespace and line wrapping.)
>
> Pls. verify that it still works.
>
> --
> Kim F. Storm <storm@cua.dk> http://www.cua.dk
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-07-19 14:23 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <MEEKKIABFKKDFJMPIOEBKEHDDDAA.drew.adams@oracle.com>
2006-07-18 13:09 ` Same frame-positioning bug as before: negative top/left values on Windows Fran Litterio
2006-07-18 13:32 ` Drew Adams
[not found] ` <m3vepvkq2g.fsf@kfs-l.imdomain.dk>
2006-07-18 16:14 ` Fran Litterio
2006-07-18 23:05 ` Kim F. Storm
2006-07-19 14:23 ` Fran Litterio
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.