1. GTK+ Hackfest Spring 2013
1.1. Cambridge, MA, April 19 - 24, 2013
Primary contact: Matthias Clasen <mclasen@redhat.com>
Secondary contact: Alexander Larsson <alexl@redhat.com>
1.2. Relevant GNOME teams
The GTK+ team and designers
1.2.1. Description
The codename for this meeting has been "EggListBox hackfest". We want to work on a bunch of new widgets that have been developed for new GNOME3-style applications, and get them ready to be integrated into GTK+ proper.
The core hackfest, is Friday, April 19, and Saturday, April 20. Then we take a day "off" on sunday and have a three day followup hackfest where we look at what's left after the first few days. The final day is probably more like a half day as people need to leave and stuff.
1.2.2. Agenda
More detailed notes on some of these below
EggListBox / EggFlowBox, see https://git.gnome.org/browse/egg-list-box
- do we need a row widget ?
- templates ?
- model support
- cache and reuse rows ?
GdStack, see gd-stack.h
GdHeaderBar (has already been merged as GtkHeaderBar)
- missing styling (box padding, ...)
- styling vs custom titlebars
- do we want a header button widget ?
GdRevealer, see gd-revealer.h
Possible other topics:
Wayland integration tasks, see Wayland/GTK+
- leftover csd issues
- tiling
- css matching
- drawing issues
GdkClipboard / DND
- popup windows
- window positioning
- frame sync
- leftover csd issues
Notifications, see https://mail.gnome.org/archives/gtk-devel-list/2012-November/msg00009.html
Baseline support branch review: wip/baseline3
GtkSettings removal
GdkMonitor
High-DPI support (Proposal: https://docs.google.com/document/d/1rvtiZb_Sm9C9718IoYQgnpzkirdl-wJZBBu_qLgaYyY/edit?usp=sharing)
Clutter 2.0 and future, see Clutter/Future
Sync GtkPathBar and NautilusPathBar, make it a public widget
FedericoMenaQuintero's wild idea for the ultimate scalable theme engine
GtkFileChooser icon view - help needed to fix a silly bug
- wip/simple-draw - simplify gdk drawing model and redo how scrolling works
1.2.3. Venue
We've been allowed to use some hacking space in the OLPC office at 222 Third St., Cambridge, MA. Thanks to Walter Bender and the OLPC guys.
We are planning to start at 10am on Friday morning.
Update: Due to a city-wide 'shelter-in-place' order, the OLPC office is closed on February 19. We will try meet there again on Saturday. Be sure to bring a photo ID, so the guard can let us in based on the attendance list.
1.2.4. Accommodation
Some people have rooms at the Hampton Inn Boston/Cambridge which seems reasonably cheap. Crashing on somebody's couch is also a possibility.
1.2.5. Attendants
Name |
Role |
Travel costs |
Accommodation |
Arrival |
Departure |
Confirmed |
Roommate |
Matthias Clasen |
GTK+ maintainer |
- |
- |
- |
- |
Y |
- |
Cosimo Cecchi |
UI monkey |
- |
- |
- |
- |
Y |
- |
Emmanuele Bassi |
Sprinkler of pixie fairy dust |
550 GBP (flight), ~2000 USD (hotel) |
- |
April 18, 13:20 |
April 26, 19:10 |
Y |
- |
Alexander Larsson |
Widgeteer |
- |
- |
April 17, 21:40 |
April 24, 22:50 |
Y |
- |
William Jon McCann |
Dreamer of dreams |
- |
- |
- |
- |
Y |
- |
Benjamin Otte |
Realizer of dreams |
- |
- |
April 17, 18:10 |
April 24, 18:15 |
Y |
- |
Kristian Høgsberg Kristensen |
Don Quixote |
- |
- |
- |
Leaving April 21 |
Y |
- |
Neanderthal |
- |
Need crash space |
April 18, 19:00-ish |
April 24, 14:19 |
Y |
Needed |
|
Widget compositor |
~1500 USD (flight/bus), ~1500 USD (hotel) |
- |
April 18 |
April 24 |
N |
- |
|
Owen Taylor |
Smooth animator |
- |
- |
- |
- |
Y |
- |
Ryan Lortie |
Threat to global stability |
- |
- |
AC7686 Apr 18 19:02 |
AC363 Apr 25 17:15 |
Y |
- |
Colin Walters |
GNOME lover |
- |
- |
Monday |
- |
Y |
- |
1.2.6. Open Issues
Listing some open issue that we can discuss at the hackfest, please add more if you have any ideas:
1.2.6.1. EggListBox
- Scalability: Whats the requirements? How well do we scale now? What are the bottlenecks?
GtkStateFlags propagation: If a row is selected, how is that propagated. We want a child label in a selected row to be white to match the selected bg, but we don't want to set selected on e.g. a child checkbox because then it looks "checked".
DECISION: We think it makes sense for state to not propagate, but this is a largeish change in CSS behaviour which need theme changes. We want to test this to see how it will work out.
- Row containers: To allow proper state on a row (i.e. SELECTED or PRELIGHT) we want to have some kind of object for each row that can carry this state. We don't do this right now, and it means we can't set a SELECTED flag except in the _draw() function, and thus it will not propagate to e.g. a child label. This is also problematic for a11y. One solution is to have a custom row widget (container) type and ensure all children are instances of this, another is Benjamins work on Actors which are non-widgets that still are part of rendering hierarchy.
DECISION: There will be a public GtkWidget row/item type that will always be used as the children of a listbox.
- Allow theming of row borders
- API: Need review. The set_separator_funcs API is horrid and everyone gets it wrong.
- Infinite Scrolling: Some kind of callback when you reach the end to add more items.
Model/View: Do we want some kind of data model level that can drive a ListBox?
- Freeze/Thaw: Was requested for mass state changes
- Remove need for add_to_scrolled(): (bug 693798)
1.2.6.2. GdStack
This is being developed in the stack branch.
- Generic animation support in gtk+: default duration, easing functions
DECISION: No global default duration, no (public) easing function helpers
- Allow to specify transition in the set_visible_child call
DECISION: do this
Done in the stack branch
GdkStackSwitcher uses GdHeaderButton - do we want a similar button interface ?
DECISION: no, for now
Done in the stack branch
- What transition types are needed, theme control ?
DECISION: No theme control, add vertical slides
Done in the stack branch
- Animate size change in non-homogeneous case ?
- Are names required to be unique ?
DECISION: Warn if they are not
Done in the stack branch
- Add support for RTL mirroring of transition (left/right) direction
DECISION: Do this for the existing left/right types
Done in the stack branch
- "symbolic-icon" name for property is wrong? use "icon-name" maybe? or have both?
DECISION: Change to "icon-name"
Done in the stack branch
The branch has been merged, GtkStack and GtkStackSwitcher are in master.
1.2.6.3. GdRevealer
- Allow specifying revealing direction (slide up or down, e.g for a revealer at the bottom of the window)
Done
- Allow specifying the easing function ?
DECISION: No
- Add fade in/out animation
Done
This has been merged as GtkRevealer.
1.2.6.4. baselines
- Can we use this by default in some parts of GTK+ ? e.g. button boxes, menubars
- Would be good to go through e.g. the control-center, and identify all the places where baseline alignment would make things better
1.2.7. GtkSettings
- color-hash
- deprecated, unused
- gtk-alternative-button-order
- platform setting
move to GdkDisplay
- gtk-alternative-sort-arrows
- gtk-application-prefer-dark-theme
- gtk api
- gtk-auto-mnemonics
- should go away
- gtk-button-images
- should go away
- gtk-can-change-accels
- should go away
- gtk-color-palette
- deprecate, only use by old color chooser
- gtk-color-scheme
- deprecated and ignored
- gtk-cursor-blink
- redundant with gtk-cursor-blink-timeout
- gtk-cursor-blink-time
- gtk-cursor-blink-timeout
- hardcode
- gtk-cursor-theme-name
- gtk-cursor-theme-size
- theme settings
- gtk-dnd-drag-threshold
- gtk-double-click-distance
- gtk-double-click-time
- relevant for a11y
- maybe better per-device
- gtk-enable-accels
- may be used in gnome-terminal
- probably drop
- documentation needs clarified
- gtk-enable-animations
- capability of hardware
- used e.g. when run on virt
- may be relevant for a11y too
- gtk-enable-event-sounds
- gtk-enable-input-feedback-sounds
- gtk-error-bell
- platform setting
- gtk-enable-mnemonics
- drop
- gtk-enable-primary-paste
- turn off by default
- gtk-enable-tooltips
- drop setting
- depends on device, don't show them on touch
- gtk-entry-password-hint-timeout
- useful on some keyboards
- gtk-entry-select-on-focus
- should drop
- gtk-fallback-icon-theme
- ?
- gtk-file-chooser-backend
- unused, deprecate, drop
- gtk-font-name
- platform
- gtk-fontconfig-timestamp
- platform implementation detail
- gtk-icon-sizes
- obsolescent
- will be replaced by smarter icon size handling
- gtk-icon-theme-name
- theme setting
- gtk-im-module
- want to get rid of this, by compiling the relevant module in
- gtk-im-preedit-style
- gtk-im-status-style
- should go away
- gtk-key-theme-name
- platform integration
- mainly os x only
- gtk-keynav-cursor-only
- gtk-keynav-wrap-around
- should drop
- gtk-label-select-on-focus
- don't want it
- need to have api to set initial focus
- want to have a caret browsing mode instead which treats every label as selectable
- gtk-menu-bar-accel
- may only be used by gnome-terminal
- remove, after talking to chpe
- gtk-menu-popdown-delay
- gtk-menu-popup-delay
- gtk-menu-bar-popup-delay
- behaviour tweaks for menus
- may have some a11y value
- remove, after talking to #a11y
- gtk-menu-images
- similar to gtk-button-images
- steps to clean this up:
- deprecate stock-based apis
- add gtk_menu_item_add_icon api
- ignore the setting
- gtk-modules
- want to stop supporting modules
- need to look at existing modules:
- canberra - should have play-a-sound api
- pk install-a-font - should use d-bus, but also needs to be exposed to apps
- caribou module - should use a11y api
- gtk-primary-button-warps-slider
- platform setting
- didn't have the guts to not have this
- gtk-print-backends
- want to stop loading print backends as modules
- just compile the configured ones in
- gtk-print-preview-command
- shouldn't just be a callout
- would be nicer to have a builtin preview
- gtk-recent-files-limit
- Could just be a widget property
- gtk-recent-files-enabled
- gtk-recent-files-max-age
- Controls for how much and how long to store history
- age is enforced by the system
- enabled could just be a gsetting
- gtk-scrolled-window-placement
- Drop, should at most be app-specific
- gtk-shell-shows-app-menu
- gtk-shell-shows-menubar
- gtk-show-input-method-menu
- gtk-show-unicode-menu
- drop, never want to show these menus
- gtk-sound-theme-name
- gtk-split-cursor
- gtk-theme-name
- gtk-timeout-expand
- gtk-timeout-initial
- gtk-timeout-repeat
- gtk-toolbar-icon-size
- gtk-toolbar-style
- gtk-tooltip-browse-mode-timeout
- gtk-tooltip-browse-timeout
- gtk-tooltip-timeout
- gtk-touchscreen-mode
- gtk-visible-focus
- gtk-xft-antialias
- gtk-xft-dpi
- gtk-xft-hinting
- gtk-xft-hintstyle
- gtk-xft-rgba
1.3. Blog posts
Here we will link all the blog posts published during or after the hackfest, including information about the work done.
GTK+ Hackfest 2013/Day 1 & 2 by Emmanuele Bassi
GTK+ hackfest, days 3 and 4 by Matthias Clasen
GTK+ hackfest, wrapup and end by Matthias Clasen