Hi,

On 11.03.2013 06:50, Campbell Barton wrote:
[...]
> However from looking through the awesome codebase I couldn't see what
> determines when a new window is floating,
> Since from what I can tell this isnt a 1:1 mapping with a NETWM
> property or something blender may have set incorrectly.

If nothing is set explicitly, awful.client.floating.get() applies some sane
defaults:

        if c.type ~= "normal"
            or c.fullscreen
            or c.maximized_vertical
            or c.maximized_horizontal
            or client.isfixed(c) then
            return true
        end
        return false

So blender is being floated because it is maximized. Having a window maximized
means that it should cover most of the screen and that pretty much conflicts
with being tiled. Thus it has to be "un-tiled" aka made floating.

> I would hope this is something that can be resolved without a custom
> configuration or setting hints in a configuration file, since opening
> a maximized window is not such a strange thing to want to do.

Well, this bug reports boils down to "blender is started in fullscreen mode" and
awesome obeys.

> Bug report here;
> http://projects.blender.org/tracker/index.php?func=detail&aid=34580&group_id=9&atid=498

I planned to look into this issue myself, but Sebastian Parborg (bug reporter)
pinged me on IRC first. Thanks to him I noticed the obvious.

Together, we also figured out the following sub-issue:

  So for example if I launch the pref window in blender I have to minimize
  blender before I can see it because blender is floating and maximized and
  thus the pref window is spawned behind the main blender window.

In Sebastian's config, floating windows get "ontop = true" and thus the pref
window is forced to be behind Blender's main window. (Main window is ontop, the
pref window isn't)

The following rule should work around this (if the WM_TRANSIENT_FOR of a new
window has _NET_WM_STATE_ONTOP set, also set the new window ontop):

 { rule = {}, callback = function(c)
        if c.transient_for and c.transient_for.ontop then
            c.ontop = true
        end
   end }

(However, this is untested)

Cheers,
Uli
-- 
"Why make things difficult, when it is possible to make them cryptic
and totally illogical, with just a little bit more effort?" -- A. P. J.

-- 
To unsubscribe, send mail to [email protected].

Reply via email to