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