emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: startup frame position


From: Ralf Angeli
Subject: Re: startup frame position
Date: Sun, 25 Jun 2006 15:38:23 +0200

* Eli Zaretskii (2006-06-23) writes:

> One possible way of solving this would be to call SystemParametersInfo
> with SPI_GETWORKAREA arg in x_make_frame_visible, and fix f->left_pos
> and f->top_pos we pass to x_set_offset, if their values are inside the
> task bar.  I think this should be done for all frames, not just the
> initial frame.

The attached patch implements window position adjustment in
`x_make_frame_visible'.  Note that only the case of vertical
adjustment in case the lower part of the frame is covered by the task
bar.  I haven't seen problems with frame positioning if the task bar
is located at the top or the sides of the desktop.

I am not sure if `x_make_frame_visible' is the right place for this
adjustment.  Personally I'd rather do this in `w32_createwindow' right
after the call to `CreateWindow'.  That way `ShowWindow' will already
get a frame with its final coordinates.

Besides, the patch does not address the problem of window placement
with a changed default face mentioned before.  If you customize the
default face by giving it a smaller font size and create several new
frames with `C-x 5 2' those will get placed in a cascading manner
until the bottom of the frame relating to the original font size (not
the one in effect) hits the bottom of the usable desktop area.

> A minor catch in this is that user-defined frame parameters will be
> only approximately obeyed (if the specified position invades the
> taskbar).  I don't know if this is bad.

We could check if a `top' frame parameter is defined and don't do the
position adjustment if it is.  IIUC `w32_get_arg' would be suitable to
check such a parameter.  Unfortunately it is not available in
w32term.c (and no w32fns.h declaring it which could be sourced in
w32term.c).  That would be another reason to do the adjustment in
`w32_createwindow'.

-- 
Ralf

Attachment: window-placement.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]