xpra icon
Bug tracker and wiki

Opened 6 years ago

Closed 6 years ago

Last modified 5 years ago

#766 closed defect (fixed)

Dialog pop-ups are no longer decorated.

Reported by: Marc St-Amand Owned by: Antoine Martin
Priority: critical Milestone:
Component: core Version: 0.14.x
Keywords: X11 popup Cc:

Description

Xpra-0.14.14 has introduced a problem with dialog pop-up windows on the X11 client.

For example, in firefox the "File -> Save As" dialog is no longer taken in charge by the window manager, and it is impossible to assign keyboard focus to the text box.

I am unsure what is the ideal solution for this. But this change in gtk_client_windows_base.py works for X11:

        #skip decorations for any non-normal window that is transient for another window:
        # if "NORMAL" not in window_types and metadata.intget("transient-for", -1)>0:
        if ("NORMAL" and "DIALOG") not in window_types and metadata.intget("transient-for", -1)>0:
            return True

Change History (10)

comment:1 Changed 6 years ago by Marc St-Amand

Component: androidcore

comment:2 Changed 6 years ago by Marc St-Amand

Version: trunk0.14.x

comment:3 Changed 6 years ago by Antoine Martin

Owner: changed from Antoine Martin to Antoine Martin
Priority: majorcritical
Status: newassigned

This was caused by #762 (lots of details there) - but your change would enable decorations for all window types!

Will test a better fix.

comment:4 Changed 6 years ago by Antoine Martin

The minimal fix is in r8268 and will be backported to v0.14.x

I believe that r8269 is a more proper fix, as per gtk-window-type-constants: The Window Type constants specify the type of a gtk.Window. Most things you'd consider a "window" should have type gtk.WINDOW_TOPLEVEL; windows with this type are managed by the window manager and have a frame by default (call the set_decorated() method to toggle the frame). Windows with type gtk.WINDOW_POPUP are ignored by the window manager; window manager keybindings won't work on them, the window manager won't decorate the window with a frame, many GTK+ features that rely on the window manager will not work (e.g. resize grips and maximization/minimization). gtk.WINDOW_POPUP is used to implement widgets such as gtk.Menu or tooltips that you normally don't think of as windows per se. Nearly all windows should be gtk.WINDOW_TOPLEVEL. In particular, do not use gtk.WINDOW_POPUP just to turn off the window borders; use the gtk.Window.set_decorated() method for that.

So this sounds like we want to use POPUP only for OR windows, and toggle decorations based on other attributes as before. The problem is that this change could cause yet more regressions... something I would rather avoid. So maybe I will wait a little while before backporting it.

Testing both options would help move this forward.

comment:5 Changed 6 years ago by Antoine Martin

See also #765

comment:6 Changed 6 years ago by Marc St-Amand

I am rubbish at python, sorry. Yes, r8268 is what I meant; it works.

I am using trunk @ r8272 right now, and the client decorations behave as expected. I have tried the x11 client on ubuntu 14.10 and on an old fc17 box.

comment:7 Changed 6 years ago by Antoine Martin

Resolution: fixed
Status: assignedclosed

Backport to v0.14.x in r8280. Closing.

Note: there may well be more changes in this area to handle window hints properly... hopefully without breaking too many applications. See #765.

comment:8 Changed 6 years ago by Antoine Martin

FWI: this "fix" re-broke IE7 via wine, see #762.

comment:9 Changed 6 years ago by Antoine Martin

Lots of fixes required to get this right, see 765#comment:10 for details.

Beta 0.14.16 and 0.15.0 packages with all these changes can be found here: http://xpra.org/beta/

pedalling.philosopher: any kind of testing feedback would be much appreciated.

comment:10 Changed 5 years ago by alas

Wanted to confirm no regressions... but trying to test with an osx 0.15.0 r9202 client I have been unable to figure out what I am testing exactly. I'm not sure what " ... in firefox the "File -> Save As" dialog ..." refers to, but I can't find anything in any dialog popups (running against a fedora 20 0.15.0 r9137 server) that catch my eye as looking odd.

I suppose that might mean there have been no regressions (?).

Note: See TracTickets for help on using tickets.