TODO 9.2 KB
Newer Older
1
For 1.2.0 release:
2 3 4
-	remove deprecated functions from *.[hc] files.
-	finish composite child stuff.
-	implement constructor functionality for all widgets.
Tim Janik's avatar
Tim Janik committed
5 6
-	fix enum generation code which still puts out
	GTK_TYPE_C_TREE_POS instead of GTK_TYPE_CTREE_POS
7
	
Tim Janik's avatar
Tim Janik committed
8
Bugs:
9 10 11 12 13 14 15
 * Change bitfields to guints from enums, or vice versa?

 * MappingNotify events produce warnings.

 * the type system (gtktypeutils.c) has to handle creations of fundamental
   types seperatedly from derived types, so we don't screw foreign
   fundamental types with an already extensively increased seqno.
Tim Janik's avatar
Tim Janik committed
16
 
17 18
 * A filter function which destroys the GDK window it is filtering
   events on is bad news.
Tim Janik's avatar
Tim Janik committed
19 20

Additions:
Stefan Jeske's avatar
Stefan Jeske committed
21 22
 * focus handling for GtkOptionMenu (needs the previous)

Tim Janik's avatar
Tim Janik committed
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
Elliot Lee's avatar
Elliot Lee committed
26 27
   visible.

Tim Janik's avatar
Tim Janik committed
28
 * enforce invariants on *_RESIZE* and *_REDRAW* flags.
29

Tim Janik's avatar
Tim Janik committed
30 31
 * GtkToolTips:
   allocate GtkTooltipsData from memchunks
32
   look into incorporation of outdated/gtk-dairiki-971208-[01].patch.gz
Tim Janik's avatar
Tim Janik committed
33 34
                          
 * Make all widget attributes configurable after the widget is created (timj).
35 36 37 38 39 40 41
 
 * Widgets dervied from GtkButton need to be able to override
   GtkButtonClass.paint. e.g. redrawing of GtkToggleButton with CAN_DEFAULT
   is messed up otheriwse. This does in fact not only apply to (toggle)buttons,
   we should introduce a common paint member for the GtkWidgetClass.
 
 * Radio buttons need to display CAN/HAS_DEFAULT correctly.
Tim Janik's avatar
Tim Janik committed
42

Tim Janik's avatar
Tim Janik committed
43 44
 * Seperate GtkObject, type and signaling system from Gdk dependancies,
   by moving them into a seperate libgtkobj.
Tim Janik's avatar
Tim Janik committed
45 46
 * move *_input_add (wrappers for select(2)) mechanism into glib.

47 48 49 50
 * gdk_expose_compress: ala-Xt, this would really help for opaque moves and
   such

 * Entry should have a password mode (and it should show stars
Tim Janik's avatar
Tim Janik committed
51 52
   for user feedback).

53 54 55
 * Entry should allow set_usize to work better, and should compute
   a different width when a maximum length is used.

56
 * More dialogs: Print, GtkFontSelector, maybe others...
Tim Janik's avatar
Tim Janik committed
57

Tim Janik's avatar
Tim Janik committed
58 59
 * make the gtk_main callbacks consistent in their add/remove behaviour.
 
Tim Janik's avatar
Tim Janik committed
60
 * More work on Documentation
61 62 63 64 65 66 67

 * Check return values on all calls to XIC[Get/Set]Values

 * Rewrite the interface to the i18n stuff so GTK widgets don't need to
   retrieve X values, and so they don't have to know the value of the
   XNxxx character constants.

Tim Janik's avatar
Tim Janik committed
68
 * The "--geometry" option should be supported
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

  - Having gdk_init() parse the geometry option. (putting it into
    GDK means you can use XParseGeometry() without wrapping it)

  - Add a call gdk_get_geometry() that retrieves the results 
    in a form like that returned by XParseGeometry()

  - The application then can modify the results (as would gemvt)
    then call a routine gtk_window_set_geometry() on whatever
    it considers to be its main window.

  - Then in some manner GtkWindow takes that into account when
    setting its hints. (Probably it uses the size and position
    as the current uposition and usize, and modulates that
    be the equivalents of the X flags

     XValue, YValue, WidthValue, HeightValue, XNegative, or YNegative

    ( You'd have to extend gdk_window_set_hints to accept the
      window gravity option to get it right. )

90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
 ? Allow moving the separator for paned widgets by dragging 
   it directly instead of using the handle. 

 ? Mark public use of gtk_tree_remove_item as deprecated - it should be used
   as:
         gtk_container_remove (GTK_CONTAINER(tree), widget);

 * Standardize that all strings should be passed as gchar *, not 
   guchar *. But what about non-string data? (gdk_property_change,
   gtk_selection_data_set) X makes these sort of things guchar...

 * Check into XAddConnectionWatch - is this needed for XIM?

 * Places where a _full variant is needed:

    gtk_clist_set_row_data
    gtk_init_add
    gtk_menu_popup
    gtk_toolbar_prepend_element
    gtk_toolbar_insert_element
    gtk_widget_dnd_data_set (should be guchar * with a copy?
                             shouldn't be there at all...)
 
 * Try to rationally deal with someone else deleting one of our
   windows??? This would mean keeping track of our window heirarchy
   ourselves, for one thing, and will never be safe, because of
   race conditions.

 * If a window spontaneously resizes itself N times before any
   ConfigureNotify events are received, then due to the interaction
   of the ConfigureNotify compression code in GDK and the resize
   count used for the window, the window will be size_allocated
   the next N-1 times it is moved.

   Fix: Only send GDK_EVENT_CONFIGURE when the window is resized,
   create a new event type for toplevel motion. (GDK_EVENT_REPOSITION?)
   and eliminate the resize count in GtkWindow.

 * Generic ScrolledWindow interface, which provide automatic scrollbar
   capability to Viewport, Text, and CList widgets.

Tim Janik's avatar
Tim Janik committed
131
 * GTK_POLICY_NEVER for scrolled windows.
132 133 134 135 136 137

 * Consider caching more state in GdkWindowPrivate. Currently, 
   every widget realization involves a XGetGeometry and a
   XGetWindowAttributes. And every GdkWindow destruction
   involves a XQueryTree.

138 139 140 141
 * Should all the default handlers really return FALSE? This can
   cause confusing presses to be sent to containers that actually
   want to get events on themselves.

142
Text/Edit widget:
143 144 145

  Bugs:

146
  - Really big font (150 pt), plus lots of editing caused segfault
147 148 149 150

  Improvements:

  - Unify the key binding support in some fashion between the
151
    Entry and Text widget widgets (???)
152

153 154 155 156
  - Figure out a way not to recompute the geometry on insertions/deletions
    which are large, but not a significant fraction of the
    entire text. (e.g., compute the changes as when the widget
    is not frozen, but without the actual scrolling)
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178

  - Prune the line start cache. But since it is only 68 bytes
    per line, and it is a lot faster when lines are in the cache,
    it may be better not to, at least for now.

  - Show the non-editable state by changing colors. (Use the
    style entries for insensitive?)

  - Multibyte support for the Text widget.

  - Unicode support to do the multi-byte right.

  - Support an .inputrc. (The readline one doesn't really work,
    unless it is extended because it can't represent X keysyms,
    just terminal type input)

  - A vi mode

  - Word wrap, instead of line folding. (Should the continuation
    characters be shown?)

  - Horizontal scrolling
179 180 181

  - Disable pasting compound text

182 183 184 185 186
  - When showing background pixmap (not editable) actually set
    the background pixmap as the windows bg pixmap, to improve
    appearance on exposes. But this would require using another
    window to get the origins.

187 188
  - In word wrap mode, break:

189 190 191
     aaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

     as:
192
                            | Maximum column
193 194 195 196 197
     aaaaaaaaaaa bbbbbbbbbbb|
     bbbbbbbbbbbbbbbbbbbbbbb|
     bbbbbbbbb              |

     Instead of:
198
                            | 
199 200 201 202 203 204 205 206 207 208 209
     aaaaaaaaaaa            |
     bbbbbbbbbbbbbbbbbbbbbbb|
     bbbbbbbbbbbbbbbbbbbb   |

  - Blinking cursor

  - API's : gtk_text_clear, gtk_text_delete_lines (gint start, gint end),
    gtk_text_append/prepend, gtk_text_insert_at (gint row, gint column),
    some function to get the row/column from the x/y-coordinates of a 
    mouse click, some function to get the word/line under the mouse pointer 
    [ 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 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
Themes
======

 - When a scale gets shown/hidden only queue a redraw on the
   non-window portion, not the whole area.

 - In various places, to avoid shaping windows excessively,
   we set parent relative backgrounds. This is an ugly
   hack and needs a better solution. Plus, I don't think
   these parent-relative backgrounds always persist to
   when they are actually needed.

   Such calls exist in: GtkButton, GtkHandeBox, GtkItem,
   GtkListItem, GtkMenu, GtkMenuItem, GtkMisc, 
   GtkNoteBook, GtkOptionMenu, GtkPaned, GtkPreview,
   GtkSpinButton and GtkTreeItem.

 - For menus and for GtkWindow's, the realize() function
   calls paint(), so that background pixmaps can be set
   ahead of time, and prevent flashing when the window is
   shown. This is an ugly hack and needs a better solution.

=======

239 240
Calendar Widget:

241
 - The widget should be nicely resizeable vertical too.
242 243 244 245 246 247 248 249 250 251 252 253

 - CALENDAR_MARGIN should be removed, uses INNER_BORDER and
   style->class->[xy]thickness insted.

 - Flag to choose between using standard three letter abbreviated
   weekday name or just the first character from it. It looks like
   that is what most other calendar-widgets do.

 - Arrows should resize with the header-font.

 - The keyboard support has to be finished.

254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271
DND
===

 - Use a cursor instead of an ICON when over Motif windows,
   to get rid of the current junk that Motif leaves because
   of it's XCopyArea stupidity for doing highlighting.

 - Add a GTK_DRAG_VERIFY target flag and a "drag_data_verify"   
   signal so that apps can easily check if a, say, 
   text/uri-list URL looks OK during the drop.

 - Check more for memory leaks.

 - Drag and drop for Entry and Text widgets.

 - Send synthetic motion events on structure changes so 
   drag_enter/leave get sent properly. (See the popup
   in testdnd)
272