[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: first impressions on gaf v1.2.0



On Sat, 2007-10-06 at 17:47 +0000, Kai-Martin Knaak wrote:
> On Sat, 06 Oct 2007 17:39:51 +0100, Peter Clifton wrote:
> 
> > Pragmatically moving windows isn't always honoured by window managers,
> > and we've found that the code which works on one doesn't always work on
> > the other. Ideally you want to set the position before showing the
> > dialog before its visible, but it appears this works less frequently
> > than we'd like.
> > 
> > Can you report what OS and Window manager you're using please?
> 
> My desktop box is Debian/testing with window manager metacity v2.18.5 
> On my laptop the OS is Debian/etch with metacity v2.14.5
> Dialog positions are always in the middle of the screen with both of 
> them. 
> I can use the utility alacarte to force the dialogs to some fixed off 
> center place. Still it would be nice to have them atomagically remember 
> their position.

I think I see what the problem might be. Window managers tend to reject
positioning requests made before the window is visible. We would quite
like to to that, however..

It works on my box because I have the "disable_workarounds" gconf key
for metacity unset:

To view its status:
gconftool-2 -g /apps/metacity/general/disable_workarounds
false

As a workaround, you could try setting:
gconftool-2 --type boolean -s /apps/metacity/general/disable_workarounds
false

Perhaps I'll have to revisit this, and see if there is any
spec-compilant way to do what we want here. I think strictly, its the
window manager's prerogative to position windows.

In metacity, the following code:
 
  if (meta_prefs_get_disable_workarounds ())
    {
      if (window->type == META_WINDOW_DIALOG ||
          window->type == META_WINDOW_MODAL_DIALOG ||
          window->type == META_WINDOW_SPLASHSCREEN)
        ; /* No position change for these */
      else if ((window->size_hints.flags & PPosition) ||
               /* USPosition is just stale if window is placed;
                * no --geometry involved here.
                */
               ((window->size_hints.flags & USPosition) &&
                !window->placed))
        allow_position_change = TRUE;
    }
  else
    {
      allow_position_change = TRUE;
    }

Suggests we'd have to use a TOPLEVEL window, rather than a DIALOG -
which I don't think we can do whilst using GtkDialog as a parent. We may
just have to resign ourselves to seeing a jump as the window is first
shown, then moved.

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)



_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user