GTK+ Hackfest Spring 2013

Cambridge, MA, April 19 - 24, 2013

Primary contact: Matthias Clasen <mclasen@redhat.com>
Secondary contact: Alexander Larsson <alexl@redhat.com>

Relevant GNOME teams

The GTK+ team and designers

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.

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:

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.

Accommodation

Some people have rooms at the Hampton Inn Boston/Cambridge which seems reasonably cheap. Crashing on somebody's couch is also a possibility.

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

-

FedericoMenaQuintero

Neanderthal

-

Need crash space

April 18, 19:00-ish

April 24, 14:19

Y

Needed

TristanVanBerkom

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

-

Open Issues

Listing some open issue that we can discuss at the hackfest, please add more if you have any ideas:

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)

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.

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.

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

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

Blog posts

Here we will link all the blog posts published during or after the hackfest, including information about the work done.

Hackfests/GTK2013 (last edited 2013-04-25 23:52:03 by JuanjoMarin)