]> Pileus Git - ~andy/gtk/blob - TODO
563a52c89a3b23bc761929ea1d6bb0a26dc332a8
[~andy/gtk] / TODO
1 For 1.2.0 release:
2 -       remove deprecated functions from *.[hc] files, especially the
3         non-functional ones.
4         
5 Bugs:
6  * Widget redrawing when the window resizes sometimes messes up.
7    GtkLabels sometimes redraw without clearing up the underlying background on
8    window resizes.
9
10  * Change bitfields to guints from enums, or vice versa?
11
12  * MappingNotify events produce warnings.
13
14  * gtk_widget_set_uposition can't handle negative x,y coordinates!
15  
16  * the type system (gtktypeutils.c) has to handle creations of fundamental
17    types seperatedly from derived types, so we don't screw foreign
18    fundamental types with an already extensively increased seqno.
19  
20  * Expose events aren't being generated correctly for DND demo
21
22  * delay dnd settings to take effect once a widget is realized, this is
23    to avoid force realizations. i think this goes along with owens dnd
24    changes?
25     -timj
26    The way DND data types are set in GtkWidget really needs to be fixed.
27    This is pretty high on my priority list, and I'll get to it as soon as
28    the column list widget is done.  The correct way dnd data needs to be set
29    is to have a additional keyed data type with GtkWidget, which is applied to
30    the widget's window upon realize.
31    There also needs to be a way to set dnd-data on widget windows which are
32    not the main window (for widgets that create more than one window).
33     -Jay Painter
34    DnD seems to work for me, but yes, there needs to be some sort of
35    gtk_widget layer that makes it easier... Also, adding support for drop
36    zones might be nice.
37     -Elliot
38    This one is reproducabel for me:
39    testgtk --sync
40    popup colorselection
41    drag/drop works
42    start up preview color
43    drag works but not dropping
44    end preview color
45    drag/drop works
46    start up prewiev color
47    segfault in malloc
48     -timj
49
50 Additions:
51  * implement keyboard navigation in menus
52
53  * focus handling for GtkOptionMenu (needs the previous)
54
55  * GScanner: it might be good to ues stdio and getch() instead of 1-character
56    reads. so one can take advantage of buffering. Currently each read() takes
57    a separate syscall.
58    
59  * implement gtk_default_draw_oval and other missing things in gtkstyle.c.
60  
61  * Lists should scroll to center the recently selected item if it isn't
62    visible.
63
64  * enforce invariants on *_RESIZE* and *_REDRAW* flags.
65
66  * asure that child widgets are really get gtk_widget_destroy()ed in their
67    parents destroy handler, and not just unparented or somesuch.
68
69  * GtkToolTips:
70    allocate GtkTooltipsData from memchunks
71    look into incorporation of outdated/gtk-dairiki-971208-[01].patch.gz
72                           
73  * Change gtk_widget_propagate_default_style() mechanism to
74    void gtk_rc_string_export (const gchar *rc_additions,
75                               gboolean     override_rc_styles);
76
77  * Make all widget attributes configurable after the widget is created (timj).
78  
79  * Widgets dervied from GtkButton need to be able to override
80    GtkButtonClass.paint. e.g. redrawing of GtkToggleButton with CAN_DEFAULT
81    is messed up otheriwse. This does in fact not only apply to (toggle)buttons,
82    we should introduce a common paint member for the GtkWidgetClass.
83  
84  * Radio buttons need to display CAN/HAS_DEFAULT correctly.
85
86  * GtkCList improvements. (Jay Painter)
87
88  * Seperate GtkObject, type and signaling system from Gdk dependancies,
89    by moving them into a seperate libgtkobj.
90  * move *_input_add (wrappers for select(2)) mechanism into glib.
91
92  * Make sure a widget added to a list is a list item and a widget added
93    to a menu is a menu item, etc. GTK_BASIC was a first attempt at this,
94    but it fails with subsequent container_add()s. maybe have another
95    GTK_PARENT_BASIC (similar to GTK_PARENT_SENSITIVE) flag, to prevent
96    tree iterations upon every container addition.
97
98  * gdk_expose_compress: ala-Xt, this would really help for opaque moves and
99    such
100
101  * Entry should have a password mode (and it should show stars
102    for user feedback).
103
104  * Entry should allow set_usize to work better, and should compute
105    a different width when a maximum length is used.
106
107  * More dialogs: Print, GtkFontSelector, maybe others...
108
109  * Multiple document interface (MDI)?
110
111  * Support another widget style? Should be possible using GtkStyle's, but
112    there may be some work needed to remove any style dependencies in widget
113    code. Maybe GtkStyle's should have 'draw_push_button', 'draw_check_button',
114    etc, functions to draw the various widgets.
115    This will be covered by upcoming themability, raster is working on it.
116  
117  * make the gtk_main callbacks consistent in their add/remove behaviour.
118  
119  * More work on Documentation
120
121  * Check return values on all calls to XIC[Get/Set]Values
122
123  * Rewrite the interface to the i18n stuff so GTK widgets don't need to
124    retrieve X values, and so they don't have to know the value of the
125    XNxxx character constants.
126
127  * The "--geometry" option should be supported
128
129   - Having gdk_init() parse the geometry option. (putting it into
130     GDK means you can use XParseGeometry() without wrapping it)
131
132   - Add a call gdk_get_geometry() that retrieves the results 
133     in a form like that returned by XParseGeometry()
134
135   - The application then can modify the results (as would gemvt)
136     then call a routine gtk_window_set_geometry() on whatever
137     it considers to be its main window.
138
139   - Then in some manner GtkWindow takes that into account when
140     setting its hints. (Probably it uses the size and position
141     as the current uposition and usize, and modulates that
142     be the equivalents of the X flags
143
144      XValue, YValue, WidthValue, HeightValue, XNegative, or YNegative
145
146     ( You'd have to extend gdk_window_set_hints to accept the
147       window gravity option to get it right. )
148
149  ? Allow moving the separator for paned widgets by dragging 
150    it directly instead of using the handle. 
151
152  ? Mark public use of gtk_tree_remove_item as deprecated - it should be used
153    as:
154          gtk_container_remove (GTK_CONTAINER(tree), widget);
155
156  * Standardize that all strings should be passed as gchar *, not 
157    guchar *. But what about non-string data? (gdk_property_change,
158    gtk_selection_data_set) X makes these sort of things guchar...
159
160  * Check into XAddConnectionWatch - is this needed for XIM?
161
162  * Places where a _full variant is needed:
163
164     gtk_clist_set_row_data
165     gtk_init_add
166     gtk_menu_popup
167     gtk_toolbar_prepend_element
168     gtk_toolbar_insert_element
169     gtk_widget_dnd_data_set (should be guchar * with a copy?
170                              shouldn't be there at all...)
171     ??? GtkDrawingarea.draw_data
172  
173  * gtk_rc_add_[name/class]_style are broken for bg pixmaps, because
174    styles are broken for bg pixmaps, and RC styles only hack around
175    that.
176
177  * Try to rationally deal with someone else deleting one of our
178    windows??? This would mean keeping track of our window heirarchy
179    ourselves, for one thing, and will never be safe, because of
180    race conditions.
181
182  * --g-fatal-warnings flag that does 
183         g_set_warning_handler ((GWarningHandler)g_error);
184
185  * If a window spontaneously resizes itself N times before any
186    ConfigureNotify events are received, then due to the interaction
187    of the ConfigureNotify compression code in GDK and the resize
188    count used for the window, the window will be size_allocated
189    the next N-1 times it is moved.
190
191    Fix: Only send GDK_EVENT_CONFIGURE when the window is resized,
192    create a new event type for toplevel motion. (GDK_EVENT_REPOSITION?)
193    and eliminate the resize count in GtkWindow.
194
195  * Generic ScrolledWindow interface, which provide automatic scrollbar
196    capability to Viewport, Text, and CList widgets.
197
198  * GTK_POLICY_NEVER for scrolled windows.
199
200  * Consider caching more state in GdkWindowPrivate. Currently, 
201    every widget realization involves a XGetGeometry and a
202    XGetWindowAttributes. And every GdkWindow destruction
203    involves a XQueryTree.
204
205  * Should all the default handlers really return FALSE? This can
206    cause confusing presses to be sent to containers that actually
207    want to get events on themselves.
208
209  * New signals to handle accelerators: accel_before and accel_after (or
210    somesuch) to pre and post process accelerator calls. [Yosh]
211
212 Text/Edit widget:
213
214   Bugs:
215
216   - Really big font (150 pt), plus lots of editing caused segfault
217
218   Improvements:
219
220   - Unify the key binding support in some fashion between the
221     Entry and Text widget widgets (???)
222
223   - Figure out a way not to recompute the geometry on insertions/deletions
224     which are large, but not a significant fraction of the
225     entire text. (e.g., compute the changes as when the widget
226     is not frozen, but without the actual scrolling)
227
228   - Prune the line start cache. But since it is only 68 bytes
229     per line, and it is a lot faster when lines are in the cache,
230     it may be better not to, at least for now.
231
232   - Show the non-editable state by changing colors. (Use the
233     style entries for insensitive?)
234
235   - Multibyte support for the Text widget.
236
237   - Unicode support to do the multi-byte right.
238
239   - Support an .inputrc. (The readline one doesn't really work,
240     unless it is extended because it can't represent X keysyms,
241     just terminal type input)
242
243   - A vi mode
244
245   - Word wrap, instead of line folding. (Should the continuation
246     characters be shown?)
247
248   - Horizontal scrolling
249
250   - Disable pasting compound text
251
252   - When showing background pixmap (not editable) actually set
253     the background pixmap as the windows bg pixmap, to improve
254     appearance on exposes. But this would require using another
255     window to get the origins.
256
257   - In word wrap mode, break:
258
259      aaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
260
261      as:
262                             | Maximum column
263      aaaaaaaaaaa bbbbbbbbbbb|
264      bbbbbbbbbbbbbbbbbbbbbbb|
265      bbbbbbbbb              |
266
267      Instead of:
268                             | 
269      aaaaaaaaaaa            |
270      bbbbbbbbbbbbbbbbbbbbbbb|
271      bbbbbbbbbbbbbbbbbbbb   |
272
273   - Blinking cursor
274
275   - API's : gtk_text_clear, gtk_text_delete_lines (gint start, gint end),
276     gtk_text_append/prepend, gtk_text_insert_at (gint row, gint column),
277     some function to get the row/column from the x/y-coordinates of a 
278     mouse click, some function to get the word/line under the mouse pointer 
279     [ From: Stefan Jeske <jeske@braunschweig.netsurf.de> ]
280
281   - "changed" emitted when doing deletes on empty Text widget.
282
283   - Delete IC in editable->unrealize, not editable->finalize?
284
285 Calendar Widget:
286
287  - The widget should be nicely resizeable vertical to.
288
289  - CALENDAR_MARGIN should be removed, uses INNER_BORDER and
290    style->class->[xy]thickness insted.
291
292  - Flag to choose between using standard three letter abbreviated
293    weekday name or just the first character from it. It looks like
294    that is what most other calendar-widgets do.
295
296  - Arrows should resize with the header-font.
297
298  - The keyboard support has to be finished.
299