Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dialog pop-ups are no longer decorated. #766

Closed
totaam opened this issue Dec 22, 2014 · 14 comments
Closed

Dialog pop-ups are no longer decorated. #766

totaam opened this issue Dec 22, 2014 · 14 comments

Comments

@totaam
Copy link
Collaborator

totaam commented Dec 22, 2014

Issue migrated from trac ticket # 766

component: core | priority: critical | resolution: fixed | keywords: X11 popup

2014-12-22 20:01:57: pedalling.philosopher created the issue


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
@totaam
Copy link
Collaborator Author

totaam commented Dec 22, 2014

2014-12-22 21:23:00: pedalling.philosopher changed component from android to core

@totaam
Copy link
Collaborator Author

totaam commented Dec 23, 2014

2014-12-23 01:49:20: totaam changed priority from major to critical

@totaam
Copy link
Collaborator Author

totaam commented Dec 23, 2014

2014-12-23 01:49:20: totaam changed status from new to assigned

@totaam
Copy link
Collaborator Author

totaam commented Dec 23, 2014

2014-12-23 01:49:20: totaam changed owner from antoine to totaam

@totaam
Copy link
Collaborator Author

totaam commented Dec 23, 2014

2014-12-23 01:49:20: totaam commented


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

Will test a better fix.

@totaam
Copy link
Collaborator Author

totaam commented Dec 23, 2014

2014-12-23 04:27:25: totaam commented


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.

@totaam
Copy link
Collaborator Author

totaam commented Dec 23, 2014

2014-12-23 06:32:30: totaam commented


See also #765

@totaam
Copy link
Collaborator Author

totaam commented Dec 23, 2014

2014-12-23 16:47:07: pedalling.philosopher commented


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.

@totaam
Copy link
Collaborator Author

totaam commented Dec 25, 2014

2014-12-25 11:38:39: antoine changed status from assigned to closed

@totaam
Copy link
Collaborator Author

totaam commented Dec 25, 2014

2014-12-25 11:38:39: antoine changed resolution from ** to fixed

@totaam
Copy link
Collaborator Author

totaam commented Dec 25, 2014

2014-12-25 11:38:39: antoine commented


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

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

@totaam totaam closed this as completed Dec 25, 2014
@totaam
Copy link
Collaborator Author

totaam commented Dec 30, 2014

2014-12-30 07:03:54: totaam commented


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

@totaam
Copy link
Collaborator Author

totaam commented Dec 30, 2014

2014-12-30 17:09:10: totaam commented


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.

@totaam
Copy link
Collaborator Author

totaam commented May 8, 2015

2015-05-08 02:11:34: afarr commented


Wanted to confirm no regressions... but trying to test with an osx 0.15.0 9202 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 (?).

@totaam totaam added the v0.14.x label Jan 22, 2021
This was referenced Jan 22, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant