1 <!-- This is used to generate the online TODO list for GTK+ using
2 the script docs/make-todo. Whenever a change to this file is
3 committed to CVS,the file is run through make-todo and the online
4 version updated. If you modify this file, you should check for
5 parse errors by running:
7 $ docs/make-todo TODO.xml > /dev/null
9 before committing, or you may screw up the online version -->
10 <todo logourl="gtk-logo-rgb.gif">
11 <title>GTK+ TODO list</title>
15 <entry size="medium" status="70%" target="1.4">
16 <title>Add backing store support</title>
19 GTK+'s drawing model involves clearing to a background, and
20 then drawing widgets on top of this. Without having
21 backing-store support, this results in flickering in various
22 situations. Backing store cannot be added widget-by-widget,
23 because the drawing in a particular window is not confined
24 to a single widget. Instead it needs to be added per GDK
28 The way this is done is by having
29 <tt>gdk_window_begin_paint()</tt>
30 and <tt>gdk_window_end_paint()</tt> functions that
31 redirect all drawing to a particular window to an offscreen
32 pixmap, and then copy that offscreen pixmap back onto the
33 screen when the paint operation is done. The implementation
34 of this is mostly complete in the <tt>gtk-no-flicker</tt> branch of
38 <url>http://www.gtk.org/~otaylor/gtk/1.4/gdk-drawing.html</url>
39 <contact>Owen Taylor <otaylor@redhat.com></contact>
42 <entry size="medium" status="70%" target="1.4">
43 <title>32 Bit Coordinates</title>
46 GTK+-1.2 and earlier share X's limitation on the
47 size of coordinates and restrict all dimensions
48 to 16 bit quantities. By clever use of X it is
49 possible to lift this restriction and present a
50 full 32-bit space to the user.
53 There are some difficulties with performance in this
54 approach - mostly because scrolling can involve mapping and
55 unmapping lots of widgets, but in general, current
56 trials in this area seem to work pretty well.
59 <url>http://www.gtk.org/~otaylor/gtk/1.4/gdk-drawing.html</url>
60 <contact>Owen Taylor <otaylor@redhat.com></contact>
63 <entry size="small" status="0%" target="1.4">
64 <title>Customizable double-click timeout</title>
67 The current fixed double-click timeout in GTK+
68 is too small for some users. This needs to be
72 <contact>gtk-devel-list@redhat.com</contact>
78 <title>Internationalization</title>
80 <entry size="big" status="0%" target="1.4">
81 <title>Integrate Pango</title>
84 The purpose of the Pango project is to provide a system for
85 layout and rendering of internationalized text. It handles
86 most of the issues necessary to
89 <url>http://www.pango.org</url>
90 <contact>gtk-i18n-list@redhat.com</contact>
93 <entry size="medium" status="20%" target="1.4">
94 <title>Switch to using UTF-8</title>
97 This is closely related to Pango integration. Pango deals
98 with all strings in terms of UTF-8; by switching GTK+ over
99 to UTF-8 we make it considerably simpler for developers to
100 support multiple languages properly while still retaining
101 a large degree of compatibility with existing programs.
104 Some work has already been done on this as part of the Win32
105 port, since the Win32 port is currently using UTF-8 for all
106 strings. In general, this should be an easy job; the hardest
107 parts are places like GtkFileSelection, cut and paste, and
108 input method support where there is interaction between GTK+
109 and the operating system.
112 <contact>gtk-i18n-list@redhat.com</contact>
115 <entry size="big" status="0%" target="1.4">
116 <title>Rewrite Input Method Support</title>
119 Current support for Input Methods is done via XIM, with
120 supported styles being over-the-spot and the root-window
121 styles. However, the over-the-spot style is not going to
122 work well with the Pango integration, since it relies on the
123 text rendering in the program being done in the standard
124 Xlib style, so it will be necessary to also support
125 on-the-spot input. On-the-spot input is done by supplying a
126 set of callbacks that are invoked by the input methods.
129 While adding the above support, it may be desirable to
130 generalize the input-method support to the point where
133 <contact>gtk-i18n-list@redhat.com</contact>
138 <title>GTK+ Core</title>
140 <entry size="big" status="5%" target="1.4">
141 <title>GLib based object and type system</title>
144 The GTK+ object system is already in use in quite a few different
145 non-GUI applications; it would be desirable for these uses
146 to have the object and type systems separated from the GUI portions
147 of GTK+ and be generalized for non-GUI usage.
150 <contact>Tim Janik <timj@gtk.org></contact>
153 <entry size="big" status="1%" target="1.4">
154 <title>Overall callback improvements</title>
157 The GTK+ type and signal systems need significant improvements to
158 allow signal creation with default handlers from language bindings
159 and to aid language bindings in deriving new objects.
160 One aspect of this is the Closure support, recently suggested by
161 Karl Nelson <kenelson@ece.ucdavis.edu>, but this also
162 requires a GLib based type and parameter system (ties in with
163 "GLib based object and type system").
166 <contact>gtk-devel-list@redhat.com</contact>
169 <entry size="big" status="0%" target="1.4">
170 <title>State change notification</title>
173 GTK+ objects emit various types of signals, some to perform
174 arbitrary actions, some to allow customization from user code,
175 and some signals are emitted to notify of certain changes
176 of an object. For the latter, what really is required is a
177 gneneric signal that can be used to monitor *any* kind of object
178 changes. For that, all object changes need to be routed through
179 a central point (otherwise the signal emissions are spread all
180 over the object implementation), i.e. an object argument setter.
181 The state change notification signal doesn't need to be emitted
182 syncronously, in fact, it's probably most effective to always
183 emit this asynchronously, so subsequent changes are accumulated.
186 <contact>Tim Janik <timj@gtk.org></contact>
189 <entry size="big" status="5%" target="1.4">
190 <title>Widget as sensitivity/grab state machine</title>
193 Maintenance of pointer and keybnoard grabs is currently very
194 tedious and error-prone, most widget's cook up their own stuff
196 By moving the general concept of "Grabs" to the GTK+ level as
197 a widget state, and providing a new signal for alterations of
198 a widget's state ("visible", "visible+insensitive",
199 "visible+grab", "hidden", "hidden+insensitive", etc.), things
200 can be unified and more stabelize. A couple of bugs, such as
201 insensitive widgets still holding a grab, or buttons that
202 still think they are depressed when hidden, will be squeezed
203 automatically with that.
206 <contact>Tim Janik <timj@gtk.org></contact>
209 <entry size="big" status="0%" target="1.4">
210 <title>Allow argument customization</title>
213 Many types of object arguments (expander style in the CList,
214 default padding in button boxes, etc), conceptually go with
215 the theme, or as user preferences; they should not be set by
216 a particular program.
219 There needs to be a mechanism for themes to be able to
220 control these arguments from the RC file.
225 <entry size="medium" status="0%" target="1.4">
226 <title>Allow global customization</title>
229 There are a number of global parameters in GTK+ and GDK that should be
230 customizable by the user, such as the double-click timeout,
231 or whether widgets should be backing-stored by default.
234 If we had argument customization from an RC file, it might
235 be possible to do this simply with a global object with
236 arguments for the various global parameters that was
237 customized in the same fashion as object arguments.
242 <entry size="small" status="0%" target="1.4">
243 <title>Gtk+ Modules installation directory</title>
246 Gtk+ needs to support an extra lib/ directory, to search
247 for dynamically loadable modules, it also needs to support
248 an environment variable to specify module search paths.
249 This has quite some cross-platform issues with the GModule
250 code (especially on AIX).
253 <contact>gtk-devel-list@redhat.com</contact>
259 <title>GTK+ Widgets</title>
261 <entry size="small" status="0%" target="1.4">
262 <title>Make GtkFrame use a label</title>
265 The title of a frame should simply be another child widget
266 which, by default, holds a label widget. This will important
267 with Pango where proper text behavior will be more complex to
268 implement, but is also useful for certain user-interface
269 designs. (It can be useful, for example, to put a checkbutton
273 <contact>gtk-devel-list@redhat.com</contact>
276 <entry size="big" status="50%" target="1.4">
277 <title>Replace GtkText Widget</title>
280 The GtkText widget is badly in need of replacement, since it is
281 buggy and insufficiently feature rich. There are a number
282 of possible candidates for a replacement, with the most
283 promising at the current time being Havoc Pennington's
284 (hp@redhat.com) port of the Tk Text widget.
287 As part of this job it will be necessary to add
288 <a href="http://www.pango.org">Pango</a> support to the
289 replacement. The structure of the Tk text widget port seems
290 suited to this as it works paragraph-by-paragraph, and
291 Pango works at a sub-paragraph scale.
294 <contact>gtk-devel-list@redhat.com</contact>
297 <entry size="small" status="0%" target="1.4">
298 <title>Improve Radio/Checkbutton Look</title>
301 The default look for the radio and checkbuttons is both
302 unattractive and not friendly to the user . Motif did not
303 get this one right, and we should not keep on following the
304 Motif look. The right thing here is probably to copy the
305 Windows appearance for these controls fairly closely. This
306 will fit in with well with the rest of the GTK+ look.
309 <contact>gtk-devel-list@redhat.com</contact>
312 <entry size="small" status="0%" target="1.4">
313 <title>Improve Submenu Navigation</title>
316 Navigating through a deep menu tree in GTK+ is currently
317 quite tricky, because as soon as one leaves a menu item,
318 the submenu disappears. The way that the Macintosh is
319 reputed to handle this is that to pop down the current
320 submenu, you have to leave the triangle defined by the
321 upper left hand corner of the menu item and right
325 <contact>gtk-devel-list@redhat.com</contact>
328 <entry size="small" status="0%" target="1.4 ?">
329 <title>Improve Spinbutton Look</title>
332 Spinbuttons currently appear to have lumpy boundaries,
333 because sides of the arrows aren't at an angle that
334 meshes well with the pixel grid. However, fixing this
335 would require making the spinbuttons narrower and
336 harder to hit. This points out a general problem with
337 the spinbutton (and the arrows on the scrollbars) - the
338 target area for clicks actually the bounding box of the
339 arrows, but the user thinks that they must click on the
340 arrows themselves. It would probably be more friendly
341 to use a square button with an arrow drawn on top instead
342 of a arrow-shaped button, the approach taken by most other
346 <contact>gtk-devel-list@redhat.com</contact>
349 <entry size="big" status="90%" target="1.4">
350 <title>Supply horizontable/vertical wrapping boxes</title>
353 An often requested feature are wrapping containers, at this
354 point, gimp's development version already uses such widgets:
355 horizontable/vertical wrap boxes, that need to go into 1.4
356 proper at some point.
359 <contact>Tim Janik <timj@gtk.org></contact>
362 <entry size="medium" status="90%" target="1.4">
363 <title>Improved generic combo support</title>
366 Gtk+'s combo box has several drawbacks in design and
367 implementation. An new attempt at providing the combo box
368 functionality with improved flexibility has been made with
369 the GtkClueHunter widget, sitting in the CVS module "gle".
372 <contact>Tim Janik <timj@gtk.org></contact>
375 <entry size="big" status="0%" target="> 1.4">
376 <title>Add unified set of List/Tree/Grid widgets</title>
379 Currently, GTK+ has a large number of list and tree widgets
380 (GtkList, GtkTree, GtkCList, GtkCTree), none of which are
381 ideal. The GtkList and GtkTree widgets perform badly on large
382 number of items. (GtkTree widget is also quite buggy.) GtkCList
383 and GtkCTree mostly solve the size problem, but are quite
384 complex and, despite that, not very flexible. They are limited to
385 displaying pixmaps and text, and can neither support arbitrary
386 widgets nor custom drawing functions.
389 In addition to list and tree widgets, a closely related need
390 is a sheet widget that displays a (possibly editable) 2-D grid.
391 It would be desirable to have a complete set of widgets that
392 could be presented as the one-true-solution for these needs.
393 Model/View techniques could be used effectively to increase
394 both the simplicity and power of the interfaces.
397 <contact>gtk-devel-list@redhat.com</contact>