]> Pileus Git - ~andy/gtk/blob - TODO.xml
FAQ Update: - Minor cleanups (Emmanuel, me) - New questions: I need to add
[~andy/gtk] / TODO.xml
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:
6
7      $ docs/make-todo TODO.xml > /dev/null
8
9      before committing, or you may screw up the online version --> 
10 <todo logourl="gtk-logo-rgb.gif">
11   <title>GTK+ TODO list</title>
12   <section>
13     <title>GDK</title>
14     
15     <entry size="medium" status="70%" target="1.4">
16       <title>Add backing store support</title>
17       <description>
18         <p>
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
25           window. 
26         </p>
27         <p>
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
35           GTK+.
36         </p>
37       </description>
38       <url>http://www.gtk.org/~otaylor/gtk/1.4/gdk-drawing.html</url>
39       <contact>Owen Taylor &lt;otaylor@redhat.com&gt;</contact>
40     </entry>
41
42     <entry size="medium" status="70%" target="1.4">
43       <title>32 Bit Coordinates</title>
44       <description>
45         <p>
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.
51         </p>
52         <p>
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.  
57         </p>
58       </description>
59       <url>http://www.gtk.org/~otaylor/gtk/1.4/gdk-drawing.html</url>
60       <contact>Owen Taylor &lt;otaylor@redhat.com&gt;</contact>
61     </entry>
62
63     <entry size="small" status="0%" target="1.4">
64       <title>Customizable double-click timeout</title>
65       <description>
66         <p>
67           The current fixed double-click timeout in GTK+
68           is too small for some users. This needs to be
69           customizable
70         </p>
71       </description>
72       <contact>gtk-devel-list@redhat.com</contact>
73       <bugs>#3958</bugs>
74     </entry>
75   </section>
76
77   <section>
78     <title>Internationalization</title>
79     
80     <entry size="big" status="0%" target="1.4">
81       <title>Integrate Pango</title>
82       <description>
83         <p>
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 
87         </p>
88       </description>
89       <url>http://www.pango.org</url>
90       <contact>gtk-i18n-list@redhat.com</contact>
91     </entry>
92
93     <entry size="medium" status="20%" target="1.4">
94       <title>Switch to using UTF-8</title>
95       <description>
96         <p>
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.
102         </p>
103         <p>
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.
110         </p>
111       </description>
112       <contact>gtk-i18n-list@redhat.com</contact>
113     </entry>
114
115     <entry size="big" status="0%" target="1.4">
116       <title>Rewrite Input Method Support</title>
117       <description>
118         <p>
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.
127         </p>
128         <p>
129           While adding the above support, it may be desirable to
130           generalize the input-method support to the point where 
131         </p>
132       </description>
133       <contact>gtk-i18n-list@redhat.com</contact>
134     </entry>
135   </section>
136
137   <section>
138     <title>GTK+ Core</title>
139
140     <entry size="big" status="5%" target="1.4">
141       <title>GLib based object and type system</title>
142       <description>
143         <p>
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.
148         </p>
149       </description>
150       <contact>Tim Janik &lt;timj@gtk.org&gt;</contact>
151     </entry>
152
153     <entry size="big" status="1%" target="1.4">
154       <title>Overall callback improvements</title>
155       <description>
156         <p>
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 &lt;kenelson@ece.ucdavis.edu&gt;, but this also
162           requires a GLib based type and parameter system (ties in with
163           "GLib based object and type system").
164         </p>
165       </description>
166       <contact>gtk-devel-list@redhat.com</contact>
167     </entry>
168
169     <entry size="big" status="0%" target="1.4">
170       <title>State change notification</title>
171       <description>
172         <p>
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.
184         </p>
185       </description>
186       <contact>Tim Janik &lt;timj@gtk.org&gt;</contact>
187     </entry>
188
189     <entry size="big" status="5%" target="1.4">
190       <title>Widget as sensitivity/grab state machine</title>
191       <description>
192         <p>
193           Maintenance of pointer and keybnoard grabs is currently very
194           tedious and error-prone, most widget's cook up their own stuff
195           in this regard.
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.
204         </p>
205       </description>
206       <contact>Tim Janik &lt;timj@gtk.org&gt;</contact>
207     </entry>
208
209     <entry size="big" status="0%" target="1.4">
210       <title>Allow argument customization</title>
211       <description>
212         <p>
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.
217         </p>
218         <p>
219           There needs to be a mechanism for themes to be able to
220           control these arguments from the RC file. 
221         </p>
222       </description>
223     </entry>
224
225     <entry size="medium" status="0%" target="1.4">
226       <title>Allow global customization</title>
227       <description>
228         <p>
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. 
232         </p>
233         <p>
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.
238         </p>
239       </description>
240     </entry>
241
242     <entry size="small" status="0%" target="1.4">
243       <title>Gtk+ Modules installation directory</title>
244       <description>
245         <p>
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).
251         </p>
252       </description>
253       <contact>gtk-devel-list@redhat.com</contact>
254     </entry>
255
256   </section>
257
258   <section>
259     <title>GTK+ Widgets</title>
260
261     <entry size="small" status="0%" target="1.4">
262       <title>Make GtkFrame use a label</title>
263       <description>
264         <p>
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
270           in that slot.)
271         </p>
272       </description>
273       <contact>gtk-devel-list@redhat.com</contact>
274     </entry>
275
276     <entry size="big" status="50%" target="1.4">
277       <title>Replace GtkText Widget</title>
278       <description>
279         <p>
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.
285         </p>
286         <p>
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.
292         </p>
293       </description>
294       <contact>gtk-devel-list@redhat.com</contact>
295     </entry>
296
297     <entry size="small" status="0%" target="1.4">
298       <title>Improve Radio/Checkbutton Look</title>
299       <description>
300         <p>
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.
307         </p>
308       </description>
309       <contact>gtk-devel-list@redhat.com</contact>
310     </entry>
311
312     <entry size="small" status="0%" target="1.4">
313       <title>Improve Submenu Navigation</title>
314       <description>
315         <p>
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
322           side of the submenu.
323         </p>
324       </description>
325       <contact>gtk-devel-list@redhat.com</contact>
326     </entry>
327
328     <entry size="small" status="0%" target="1.4 ?">
329       <title>Improve Spinbutton Look</title>
330       <description>
331         <p>
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
343           windowing systems.
344         </p>
345       </description>
346       <contact>gtk-devel-list@redhat.com</contact>
347     </entry>
348
349     <entry size="big" status="90%" target="1.4">
350       <title>Supply horizontable/vertical wrapping boxes</title>
351       <description>
352         <p>
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.
357         </p>
358       </description>
359       <contact>Tim Janik &lt;timj@gtk.org&gt;</contact>
360     </entry>
361
362     <entry size="medium" status="90%" target="1.4">
363       <title>Improved generic combo support</title>
364       <description>
365         <p>
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".
370         </p>
371       </description>
372       <contact>Tim Janik &lt;timj@gtk.org&gt;</contact>
373     </entry>
374
375     <entry size="big" status="0%" target="> 1.4">
376       <title>Add unified set of List/Tree/Grid widgets</title>
377       <description>
378         <p>
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.
387         </p>
388         <p>
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.
395         </p>
396       </description>
397       <contact>gtk-devel-list@redhat.com</contact>
398     </entry>
399   </section>
400 </todo>