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