Changes between Version 11 and Version 12 of BuildingGtk


Ignore:
Timestamp:
Nov 23, 2007 4:11:35 PM (14 years ago)
Author:
alp@atoker.com
Comment:

Fix the link, split out the hacking guide

Legend:

Unmodified
Added
Removed
Modified
  • BuildingGtk

    v11 v12  
    6464= Hacking =
    6565
    66 See [HackingGtk the hacker's guide to WebKit/GTK+].
    67 
    68 == Code layout ==
    69 
    70 The GTK+ port targets the cross-platform GLib and GTK+ APIs. This means that it can be built against any of the windowing systems supported by GTK+ and Cairo without modification -- those tested so far are X11 and DirectFB. Windows should work too, possibly needing a couple of tweaks.
    71 
    72 This means that developers adding code specific to a certain windowing system should make sure their changes are conditionally compiled only when that windowing system is available. This might be done at configure time or with a switch passed to the build system, or even just using the definitions provided by the gdk headers.
    73 
    74 The main components of the port:
    75 
    76 === Gtk+-specific modules ===
    77 
    78  * Gtk+/Gtk UI platform: [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/platform/gtk WebCore/platform/gtk]
    79 
    80  * "Page/Gtk": [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/page/gtk WebCore/page/gtk]
    81 
    82  * "Loader/Gtk": [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/loader/gtk WebCore/loader/gtk]
    83 
    84  * Public API: [http://trac.webkit.org/projects/webkit/browser/trunk/WebKit/gtk WebKit/gtk]
    85 
    86  * GtkLauncher (example application): [http://trac.webkit.org/projects/webkit/browser/trunk/WebKitTools/GtkLauncher WebKitTools/GtkLauncher]
    87 
    88 There may be other gtk-port related directories which have yet to be listed here.
    89 
    90 === Shared code modules ===
    91 
    92 While the Gtk+ port is the primary consumer of these backends, we aim to keep them portable, avoiding even ifdef'd sections specific to the Gtk+ port:
    93 
    94  * curl http backend: [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/platform/network/curl WebCore/platform/network/curl]
    95 
    96  * cairo graphics backend: [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/platform/graphics/cairo WebCore/platform/graphics/cairo]
    97 
    98  * cairo graphics SVG backend: [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/platform/graphics/svg/cairo WebCore/platform/graphics/svg/cairo]
    99 
    100 == Current tasks (July '07) ==
    101 
    102  * Make things work with debugging enabled (when NDEBUG is removed, assertions are triggered right now)
    103  * Fix animated GIF images -- consider using GdkPixbuf?
    104  * Continue to fix the curl backend
    105  * Start to consider consolidating the widget into a single place as the Qt port has done, and look into implementing eg. createFrame()
    106  * Look into supporting the canvas
    107  * Attempt to merge the Cairo code in the Win32 port -- the equivalent code is copy-and-pasted into the "Gdk" port in some places. This will help reduce code duplication but also help towards getting WebKit/Gdk/Gtk+ working on Windows
     66See [wiki:"HackingGtk" the hacker's guide to WebKit/GTK+].
    10867
    10968
    110 == Issues known ==
    111 
    112 === CURL ===
    113  * Review and possibly integrate the [http://www.sand-labs.org/svn/trunk/BAL/Implementations/Network/CURL/ sand-labs CURL backend] code. It has a slightly different API, so needs to be back-ported, but looks like it may be more feature-complete, able to handle redirects properly etc.
    114  * The non zero select timeout feels bad. Make it possible to write a GSourceFunc to not poll the sockets and have a timeout: This can probably be done by integrating code from MIT/X11 licensed [http://atterer.net/glibcurl/ glibcurl].
    115  * Cookie handling is completely lacking as pointed out on the mailing list
    116  * Errors of curl need to be properly populated
    117 
    118 === Gtk ===
    119  * A lot of classes are not yet implemented
    120  * For painting we have some issues in regard to Expose Events and when WebKit will call paint.
    121 
    122 === Theming ===
    123  * Consider taking code directly from Mozilla's LGPL licensed Gtk+ theming backend. They deal with a lot of corner cases which don't look fun to re-implement.
    124  * Focus ring drawing
    125  * Scrollbars for PlatformScrollbar will be terrible as we need to implement a HitTest but don't know where the elements of the scrollbar hide
    126  * Native theming for text entries
    127  * Find a way to draw a GtkComboBox, at least the button part.  This is needed to implement theming of the <select> element properly.
    12869
    12970=== Building ===