]> Pileus Git - ~andy/gtk/blob - TODO
Include radio buttons when setting relief for button items.
[~andy/gtk] / TODO
1 For 1.2.0 release:
2 -       remove deprecated functions from *.[hc] files.
3 -       finish composite child stuff.
4 -       implement constructor functionality for all widgets.
5 -       fix enum generation code which still puts out
6         GTK_TYPE_C_TREE_POS instead of GTK_TYPE_CTREE_POS
7         
8 Bugs:
9  * Change bitfields to guints from enums, or vice versa?
10
11  * MappingNotify events produce warnings.
12
13  * the type system (gtktypeutils.c) has to handle creations of fundamental
14    types seperatedly from derived types, so we don't screw foreign
15    fundamental types with an already extensively increased seqno.
16  
17  * A filter function which destroys the GDK window it is filtering
18    events on is bad news.
19
20 Additions:
21  * focus handling for GtkOptionMenu (needs the previous)
22
23  * implement gtk_default_draw_oval and other missing things in gtkstyle.c.
24  
25  * Lists should scroll to center the recently selected item if it isn't
26    visible.
27
28  * enforce invariants on *_RESIZE* and *_REDRAW* flags.
29
30  * GtkToolTips:
31    allocate GtkTooltipsData from memchunks
32    look into incorporation of outdated/gtk-dairiki-971208-[01].patch.gz
33                           
34  * Make all widget attributes configurable after the widget is created (timj).
35  
36  * Widgets dervied from GtkButton need to be able to override
37    GtkButtonClass.paint. e.g. redrawing of GtkToggleButton with CAN_DEFAULT
38    is messed up otheriwse. This does in fact not only apply to (toggle)buttons,
39    we should introduce a common paint member for the GtkWidgetClass.
40  
41  * Radio buttons need to display CAN/HAS_DEFAULT correctly.
42
43  * Seperate GtkObject, type and signaling system from Gdk dependancies,
44    by moving them into a seperate libgtkobj.
45  * move *_input_add (wrappers for select(2)) mechanism into glib.
46
47  * gdk_expose_compress: ala-Xt, this would really help for opaque moves and
48    such
49
50  * Entry should have a password mode (and it should show stars
51    for user feedback).
52
53  * Entry should allow set_usize to work better, and should compute
54    a different width when a maximum length is used.
55
56  * More dialogs: Print, GtkFontSelector, maybe others...
57
58  * make the gtk_main callbacks consistent in their add/remove behaviour.
59  
60  * More work on Documentation
61
62  * Check return values on all calls to XIC[Get/Set]Values
63
64  * Rewrite the interface to the i18n stuff so GTK widgets don't need to
65    retrieve X values, and so they don't have to know the value of the
66    XNxxx character constants.
67
68  * The "--geometry" option should be supported
69
70   - Having gdk_init() parse the geometry option. (putting it into
71     GDK means you can use XParseGeometry() without wrapping it)
72
73   - Add a call gdk_get_geometry() that retrieves the results 
74     in a form like that returned by XParseGeometry()
75
76   - The application then can modify the results (as would gemvt)
77     then call a routine gtk_window_set_geometry() on whatever
78     it considers to be its main window.
79
80   - Then in some manner GtkWindow takes that into account when
81     setting its hints. (Probably it uses the size and position
82     as the current uposition and usize, and modulates that
83     be the equivalents of the X flags
84
85      XValue, YValue, WidthValue, HeightValue, XNegative, or YNegative
86
87     ( You'd have to extend gdk_window_set_hints to accept the
88       window gravity option to get it right. )
89
90  ? Allow moving the separator for paned widgets by dragging 
91    it directly instead of using the handle. 
92
93  ? Mark public use of gtk_tree_remove_item as deprecated - it should be used
94    as:
95          gtk_container_remove (GTK_CONTAINER(tree), widget);
96
97  * Standardize that all strings should be passed as gchar *, not 
98    guchar *. But what about non-string data? (gdk_property_change,
99    gtk_selection_data_set) X makes these sort of things guchar...
100
101  * Check into XAddConnectionWatch - is this needed for XIM?
102
103  * Places where a _full variant is needed:
104
105     gtk_clist_set_row_data
106     gtk_init_add
107     gtk_menu_popup
108     gtk_toolbar_prepend_element
109     gtk_toolbar_insert_element
110     gtk_widget_dnd_data_set (should be guchar * with a copy?
111                              shouldn't be there at all...)
112  
113  * Try to rationally deal with someone else deleting one of our
114    windows??? This would mean keeping track of our window heirarchy
115    ourselves, for one thing, and will never be safe, because of
116    race conditions.
117
118  * If a window spontaneously resizes itself N times before any
119    ConfigureNotify events are received, then due to the interaction
120    of the ConfigureNotify compression code in GDK and the resize
121    count used for the window, the window will be size_allocated
122    the next N-1 times it is moved.
123
124    Fix: Only send GDK_EVENT_CONFIGURE when the window is resized,
125    create a new event type for toplevel motion. (GDK_EVENT_REPOSITION?)
126    and eliminate the resize count in GtkWindow.
127
128  * Generic ScrolledWindow interface, which provide automatic scrollbar
129    capability to Viewport, Text, and CList widgets.
130
131  * GTK_POLICY_NEVER for scrolled windows.
132
133  * Consider caching more state in GdkWindowPrivate. Currently, 
134    every widget realization involves a XGetGeometry and a
135    XGetWindowAttributes. And every GdkWindow destruction
136    involves a XQueryTree.
137
138  * Should all the default handlers really return FALSE? This can
139    cause confusing presses to be sent to containers that actually
140    want to get events on themselves.
141
142 Text/Edit widget:
143
144   Bugs:
145
146   - Really big font (150 pt), plus lots of editing caused segfault
147
148   Improvements:
149
150   - Unify the key binding support in some fashion between the
151     Entry and Text widget widgets (???)
152
153   - Figure out a way not to recompute the geometry on insertions/deletions
154     which are large, but not a significant fraction of the
155     entire text. (e.g., compute the changes as when the widget
156     is not frozen, but without the actual scrolling)
157
158   - Prune the line start cache. But since it is only 68 bytes
159     per line, and it is a lot faster when lines are in the cache,
160     it may be better not to, at least for now.
161
162   - Show the non-editable state by changing colors. (Use the
163     style entries for insensitive?)
164
165   - Multibyte support for the Text widget.
166
167   - Unicode support to do the multi-byte right.
168
169   - Support an .inputrc. (The readline one doesn't really work,
170     unless it is extended because it can't represent X keysyms,
171     just terminal type input)
172
173   - A vi mode
174
175   - Word wrap, instead of line folding. (Should the continuation
176     characters be shown?)
177
178   - Horizontal scrolling
179
180   - Disable pasting compound text
181
182   - When showing background pixmap (not editable) actually set
183     the background pixmap as the windows bg pixmap, to improve
184     appearance on exposes. But this would require using another
185     window to get the origins.
186
187   - In word wrap mode, break:
188
189      aaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
190
191      as:
192                             | Maximum column
193      aaaaaaaaaaa bbbbbbbbbbb|
194      bbbbbbbbbbbbbbbbbbbbbbb|
195      bbbbbbbbb              |
196
197      Instead of:
198                             | 
199      aaaaaaaaaaa            |
200      bbbbbbbbbbbbbbbbbbbbbbb|
201      bbbbbbbbbbbbbbbbbbbb   |
202
203   - Blinking cursor
204
205   - API's : gtk_text_clear, gtk_text_delete_lines (gint start, gint end),
206     gtk_text_append/prepend, gtk_text_insert_at (gint row, gint column),
207     some function to get the row/column from the x/y-coordinates of a 
208     mouse click, some function to get the word/line under the mouse pointer 
209     [ From: Stefan Jeske <jeske@braunschweig.netsurf.de> ]
210
211   - "changed" emitted when doing deletes on empty Text widget.
212
213   - Delete IC in editable->unrealize, not editable->finalize?
214
215 Themes
216 ======
217
218  - When a scale gets shown/hidden only queue a redraw on the
219    non-window portion, not the whole area.
220
221  - In various places, to avoid shaping windows excessively,
222    we set parent relative backgrounds. This is an ugly
223    hack and needs a better solution. Plus, I don't think
224    these parent-relative backgrounds always persist to
225    when they are actually needed.
226
227    Such calls exist in: GtkButton, GtkHandeBox, GtkItem,
228    GtkListItem, GtkMenu, GtkMenuItem, GtkMisc, 
229    GtkNoteBook, GtkOptionMenu, GtkPaned, GtkPreview,
230    GtkSpinButton and GtkTreeItem.
231
232  - For menus and for GtkWindow's, the realize() function
233    calls paint(), so that background pixmaps can be set
234    ahead of time, and prevent flashing when the window is
235    shown. This is an ugly hack and needs a better solution.
236
237 =======
238
239 Calendar Widget:
240
241  - The widget should be nicely resizeable vertical too.
242
243  - CALENDAR_MARGIN should be removed, uses INNER_BORDER and
244    style->class->[xy]thickness insted.
245
246  - Flag to choose between using standard three letter abbreviated
247    weekday name or just the first character from it. It looks like
248    that is what most other calendar-widgets do.
249
250  - Arrows should resize with the header-font.
251
252  - The keyboard support has to be finished.
253
254 DND
255 ===
256
257  - Use a cursor instead of an ICON when over Motif windows,
258    to get rid of the current junk that Motif leaves because
259    of it's XCopyArea stupidity for doing highlighting.
260
261  - Add a GTK_DRAG_VERIFY target flag and a "drag_data_verify"   
262    signal so that apps can easily check if a, say, 
263    text/uri-list URL looks OK during the drop.
264
265  - Check more for memory leaks.
266
267  - Drag and drop for Entry and Text widgets.
268
269  - Send synthetic motion events on structure changes so 
270    drag_enter/leave get sent properly. (See the popup
271    in testdnd)
272