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