Previous Entry | Next Entry

GTK 3.0 and CSD

(sorry if there's typo's--cranking these out as fast as I can)





Mattias Clasen talked about the plans for intentionally breaking the GTK API for 3.0 in order to make it possible to achieve new features: XInput2, the drawing API, and changing theme engines without breaking applications. Emmanuaele Bassi jumped in to help Mattias Clasen with explanations. A goal is to make it harder for people to do deep hacks like the current string of abusive theme engines that will break from release to release and provide a feature-rich foundation for doing work correctly upstream.



The discussion moved on to client-side-decorations with Cody Russell which are already being developed on a side-branch. The work has a goal of being merged for GTK 3. This will enable GTK-support for things like Google Chrome's tab-in-window decorator and (finally!) GTK rendering the theme rather than being drawn by the window manager.

Cody said that he has be communicating with Trolltech to ensure that Qt does it in a sufficiently similar way in Qt that there won't be compatibility issues between Qt and GTK applications that provide their own CSD.

The issue was raise of what happens when an application freezes--how do you close it if the decoration is frozen in the same thread? Cody said that some discussion about extending the EHWM spec. to specify the area of the window where the close button is so that even when the application is locked, it's still click-able.

Another issue was raise regarding resizing the windows: there's a "jarring" experience in which the WM performs a resize of the buffer and then GTK CSD lags behind before the border is redraw to the size of the new edge. A solution would be to handle resize ourselves.

The rest of the discussion revolved around various use-cases and a discussion for application-specific API's for CSD: how to provide API's for a status bar at the bottom of the window that is drawn by CSD and provides the drag handle that is--perhaps--hidden on a netbook when maximized. Also, themes that attempt to make the transition from the toolkit to the border "borderless" may want to make regions of the menu area cause window dragging.

A question was asked about Glib 3.0. No plans are in the cards for Glib 3; there could be some fundamental design problems addressed but there doesn't seem to be anyone asking for it.

The discussion transitioned to performance with regard to animations and whether GTK could be made to provide high performance animations. There was some thinking that it's possible to extend GTK but the challenges that have been met and overcome in Clutter would have to be completely redone for GTK and it would be non-trivial.

Comments

( 7 comments — Leave a comment )
(Anonymous)
Oct. 10th, 2009 05:01 pm (UTC)
"client-side decorations with Cody Russell" sounds like some sort of interior decorating TV show. :)
(Anonymous)
Oct. 10th, 2009 05:20 pm (UTC)
can gtk3 render widgets using opengl?
(Anonymous)
Oct. 10th, 2009 05:43 pm (UTC)
Corners
As an end user, much of this went over my head, but please, please give me true rounded corners on windows. Those jagged bits on curved windows make me want to run and hide under my Mac.
(Anonymous)
Oct. 10th, 2009 09:01 pm (UTC)
Re: Corners
+1
(Anonymous)
Oct. 14th, 2009 02:38 pm (UTC)
Re: Corners
Hi, this is Cody.. for some reason I don't have an OpenID so I'm posting anonymously. :)

Anyway, yeah.. this should be supported in c-s-d because we're planning to pull in RGBA window support since translucency is common in window decorations. This should make it easy to do smooth round corners in the window decorations, and I think anywhere else.
(Anonymous)
Oct. 13th, 2009 06:56 pm (UTC)
Client-side decorations
On Windows, window borders are drawn by an application (even if DWM is enabled, application itself sends messages to DWM to process related messages). If the application stops responding, windows replaces the frame with "ghost window" so that it can still be moved and/or closed. The result looks the same (only the text "Not responding" is added to the title) as WinAPI/DWM is called - this can be quite tricky in GTK as it would have to be possible to say window manager "hey, my border is {2,2,26,2}" and window manager would be supposed to draw the frame in the same way - it cannot be made as I dobt that e.g. openbox would like to call gtk theme functions to draw the window frame. Gnome's default WM could draw it though.
(Anonymous)
Oct. 16th, 2009 05:29 pm (UTC)
No one is asking for GLib/Gobject design problems resolution ?
"A question was asked about Glib 3.0. No plans are in the cards for Glib 3; there could be some fundamental design problems addressed but there doesn't seem to be anyone asking for it."

That's funny. I do not hear the same chime everywhere... Some people of the GLib team are deaf, for sure!
( 7 comments — Leave a comment )

Profile

color, uphair, smile
jasondclinton
Jason D. Clinton

Latest Month

September 2011
S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 

Tags

Page Summary

Powered by LiveJournal.com
Designed by Tiffany Chow