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