Fresh stuff for download: GLib 2.0.7, GTK+ 2.0.9, Pango 1.0.5
Tor Lillqvist <[email protected]>
| Newsgroups | gmane.comp.video.gimp.windows.devel |
|---|---|
| Message-ID | <[email protected]> |
At the usual place, www.gimp.org/win32/downloads.html . The Win32-related entries from the ChangeLogs are included below. *Lots* of improvement has been done to GTK+ 2.0 (and important stuff to Pango 1.0, too). All test and demo program features seem to work, at least on NT/2K, except "big windows" (> 32K coordinates). GLib 2.0: 2002-11-18 Tor Lillqvist <[email protected]> * glib/gspawn-win32.c (do_spawn_with_pipes): Do handle G_SPAWN_DO_NOT_REAP_CHILD after all, similarily as on Unix. If the flag is not set, don't call DuplicateHandle() on the handle returned by the helper process, and set the "child pid" as returned to the caller to zero. Close the handle to the helper process in all cases. 2002-11-18 Tor Lillqvist <[email protected]> [Win32] Fix the asynchronous g_spawn* to return the process handle of the started program properly. (Note: not the process id. The spawn*() functions in the C runtime return the created process's handle. There doesn't seem to be any way to get the process id of a child process if you have the handle. But then, the process handle usually is more useful anyway.) 2002-10-27 Tor Lillqvist <[email protected]> * glib/gmain.c (g_poll): Fix for bug reported by Herman Bloggs (http://mail.gnome.org/archives/gtk-devel-list/2002-October/msg00101.html) and others. We waited for events only for GPollFDs whose events field had G_IO_IN set. We need to wait also for events for GPollFDs that have just G_IO_OUT set. Non-blocking sockets in the process of being connect()ed are one such case. Also silence a couple of gcc warnings. GTK+ 2.0: 2002-11-29 Tor Lillqvist <[email protected]> * gdk/win32/gdkwindow-win32.c (gdk_window_set_transient_for): Rewrite. Just call SetWindowLong() with GWL_HWNDPARENT, which despite its name sets the *owner* window, which should be exactly what we want. The PSDK documentation is said to be misleading. testgtk's modal window test now works much better. (#50586) 2002-11-24 Tor Lillqvist <[email protected]> * gdk/win32/gdkgc-win32.c: Remove ifdeffed-out code. (predraw_set_foreground, gdk_win32_hdc_get): Some code moved around. Call SetROP2() only if necessary. Call SetTextColor() only if GDK_GC_FOREGROUND flag present. Remove background color handling from here. The background color of a GdkGC is supposed to affect only GDK_OPAQUE_STIPPLED fill style, which it is already handled in generic_draw(), and GDK_LINE_DOUBLE_DASH lines, which aren't implemented properly anyway. Calling SetBkColor() is unnecessary. (gdk_win32_hdc_get, gdk_win32_hdc_release): Add doc comments, as these are public functions. 2002-11-23 Tor Lillqvist <[email protected]> * gdk/win32/gdkdrawable-win32.c (draw_polygon, gdk_win32_draw_polygon, draw_segments, gdk_win32_draw_segments): Use generic_draw() also for polygons and segments, thus adding support for tiled and stippled polygons and segments. (gdk_win32_draw_points): Use Rectangle() instead of SetPixel(). Rectangle() uses the function (raster op) set for the HDC, SetPixel() doesn't. (widen_bounds): New function, refactoring. * gdk/win32/gdkgc-win32.c (predraw_set_foreground): Ifdef out the GDK_OPAQUE_STIPPLED handling here, has been superseded by the code in generic_draw(). Always create a solid brush. 2002-11-22 Tor Lillqvist <[email protected]> * gdk/win32/gdkdrawable-win32.c (draw_arc, gdk_win32_draw_arc): Use generic_draw() also for arcs, thus adding support for tiled and stippled arcs. * gdk/win32/gdkevents-win32.c (synthesize_expose_events): Don't synthesize expose events for GDK_INPUT_ONLY windows. (gdk_event_translate): On WM_SIZE, call gdk_synthesize_window_state() if window was iconified, restored or maximized. (#98983, Arnaud Charlet) * gdk/win32/gdkmain-win32.c * gdk/win32/gdkpixmap-win32.c: Minor debugging output changes. 2002-11-20 Tor Lillqvist <[email protected]> Fix by Arnaud Charlet (#98983): * gtk+/gdk/win32/gdkwindow-win32.c (gdk_window_get_frame_extents): Fix typo in setting y. 2002-11-14 Tor Lillqvist <[email protected]> Start implementing all fill styles (i.e. tiled, stippled, and opaque stippled in addition to the plain solid style) in the Win32 backend in an elegant and generic way. For now only did the draw_rectangle() and draw_glyphs() methods. The rest will follow. Previously some of the drawing methods implemented opaque stippling, but not tiles or non-opaque stippling. Seems to work fine, now the check marks show up in check buttons, the stippled background and stippled text in gtk-demo's Text Widget look as they should, and GtkText's line wrap arrow shows correctly instead of an ugly rectangle. The implementation does do a lot of pixmap handling and blitting back and forth, especially on Win9x. But performance is hopefully not an issue. I don't think many applications do a lot of tiled or stippled drawing. * gdk/win32/gdkprivate-win32.h: Define a new macro, GDI_CALL, that calls a GDI function and prints a warning if it failed. Also API_CALL for non-GDI calls. Cleans all the the if (!BlaBla()) WIN32_GDI_FAILED ("BlaBla") snippets, these can now be written GDI_CALL (BlaBla, ()). * gdk/win32/gdkdrawable-win32.c: Use GDI_CALL macro in lots of places. (generic_draw): New function that handles all the blitting necessary to implement tiles and stipples. A function that actually draws stuff is passed as a parameter to generic_draw(). If the fill style is solid, it is called directly, to draw on the destination drawable. Otherwise it is called to draw on a temporary mask bitmap, which then is used in blitting operations. The tiles and/or stipples are rendered into another temporary pixmap. If MaskBlt() is available (on NT/2k/XP), it is used, otherwise a sequence of BitBlt() is used to do the final composition onto the destination drawable. (draw_tiles_lowlevel, draw_tiles): Some renaming and code reorg. Use BitBlt() to blit each tile, not gdk_draw_drawable(). (rop2_to_rop3): Instead of bitblt_wrapper, this function does the binary->ternary rop mapping. (draw_rectangle, gdk_win32_draw_rectangle, draw_glyphs, gdk_win32_draw_glyphs): Split functionality into two functions, with generic_draw() doing its magic inbetween. * gdk/win32/gdkevents-win32.c: Remove the TrackMouseEvent code, it was ifdeffed out and wouldn't have done anything even if enabled. Remove the GDK_EVENT_FUNC_FROM_WINDOW_PROC code, didn't have any effect any more anyway after all the changes GTK+ has gone through in the last years. Remove some #if 0 code. * gdk/win32/gdkgc-win32.c (gdk_gc_copy): Set the copy's hdc field to NULL in case a GC is copied while it has a Windows DC active. * gdk/win32/gdkprivate-win32.h * gdk/win32/gdkglobals-win32.c: Remove gdk_event_func_from_window_proc. Add mask_blt that points to MaskBlt() if available. * gdk/win32/gdkmain-win32.c: Remove -event-func-from-window-proc option.If there is a PRETEND_WIN9X envvar, set windows_version as if on Win9x. * gdk/win32/gdkpixmap-win32.c (_gdk_win32_pixmap_new, gdk_pixmap_new): Combine these two, _gdk_win32_pixmap_new() wasn't used or exported. Make a bit more like the X11 version. Hopefully I didn't break the fragile palettized display ("pseudocolor") code. 2002-11-13 Tor Lillqvist <[email protected]> * gdk/win32/gdkdrawable-win32.c (bitblt_wrapper): New function. Translates the GC's current binary raster op (rop2) to the appropriate ternary raster op and calls BitBlt(). Previously used SRCCOPY always. (blit_from_pixmap, blit_inside_window, blit_from_window): Use bitblt_wrapper(). * gdk/win32/gdkgc-win32.c * gdk/win32/gdkmain-win32.c:: Various debugging output improvements. * gdk/win32/gdkgc-win32.c (predraw_set_foreground): Check whether tile/stipple origins are valid when calling SetBrushOrgEx(). (gdk_win32_hdc_get): Ifdef out code that tries to handle the stipple by converting it into a region, and combining the clip region with that. A stipple shouldn't work like that, it should replicate in x and y directions. Stipples will have to be handled elsewhere. * gdk/win32/gdkmain-win32.c: (gdk_win32_gcvalues_mask_to_string, gdk_win32_rop2_to_string): New debugging functions. (gdk_win32_print_dc): Print also DC's rop2 and text color. * gdk/win32/gdkprivate-win32.h: Declare new functions. 2002-11-12 Tor Lillqvist <[email protected]> More work on the Win32 backend. The scrolling problem diagnosis from 2002-11-07 was wrong, even if the cure happened to work. The problems were not caused by a lack of WM_PAINT messages while scrolling. The real issue was that SetWindowPos() and ScrollWindowEx() don't blit those parts of the window they think are invalid. As we didn't keep Windows's update region in synch with GDK's, Windows thought those areas that in fact had been updated were invalid. Calling ValidateRgn() in _gdk_windowing_window_queue_antiexpose() seems to be an elegant and efficient solution, removing from Windows's update region those areas we are about to repaint proactively. In some cases garbage leftover values were used for the clip origin in GdkGCWin32. This showed up as odd blank areas around the pixmaps included in the Text Widget in gtk-demo. Having the clip region either as a GdkRegion or a HRGN in GdkGCWin32 was unnecessary, it's better to just use a HRGN. The translation and antiexpose queue handling in gdkgeometry-win32.c seems unnecessary (and not implementable in the same way as on X11 anyway, no serial numbers) on Windows, ifdeffed out. All of testgtk and gtk-demo except "big windows" now seem to work pretty well. Bug #79720 should be fixed now. * gdk/win32/gdkevents-win32.c (gdk_event_translate) In WM_PAINT handler: Don't check for empty update rect. When we get a WM_PAINT, the update region isn't empty. And if it for some strange reason is, that will be handled later anyway. Don't leak hrgn. * gdk/win32/gdkgc-win32.c: Set clip origins to zero when appropriate. (gdk_gc_copy): Increase refcount on colormap if present. (gdk_win32_hdc_get): Handle just hcliprgn. If we have a stipple, combine it with clip region after selecting into the DC. (_gdk_win32_bitmap_to_hrgn): Rename from _gdk_win32_bitmap_to_region. (_gdk_win3_gdkregion_to_hrgn): New function, code snippet extracted from gdk_win32_hdc_get(). * gdk/win32/gdkgeometry-win32.c: Ifdef out the translate_queue handling. (gdk_window_copy_area_scroll): Increase clipRect to avoid ScrollWindowEx() not scrolling pixels it thinks are invalid. Don't call UpdateWindow(). (_gdk_window_move_resize_child): Don't call UpdateWindow(). (gdk_window_premove, gdk_window_postmove, gdk_window_clip_changed): Add debugging output. (_gdk_windowing_window_queue_antiexpose): Just call ValidateRgn() on the region. (_gdk_window_process_expose): No use for the serial number parameter now. Instead of a rectangle, take a region parameter, as Windows gives us one in WM_PAINT. * gdk/win32/gdkmain-win32.c (gdk_win32_rect_to_string, gdk_win32_gdkrectangle_to_string, gdk_win32_gdkregion_to_string): New debugging functions. * gdk/win32/*.c: Use above functions. * gdk/win32/gdkwindow-win32.c (gdk_propagate_shapes): Plug memory leak, free list after use. * gdk/win32/gdkprivate-win32.h: Drop the clip_region field from GdkGCWin32. Only use the HRGN hcliprgn. Declare new functions. 2002-11-03 Tor Lillqvist <[email protected]> Lots of changes to the Win32 backend: One big improvement is that scrolling of windows with background pixmaps now works much better. (This can be seen in for instance testgtk's "text" test.) Blitting inside a window (gdk_draw_drawable) also works much better now (can also seen in the "text" test). Another major change is we don't (try to) do guffaw scrolling as there is no static window gravity on Windows. Guffaw scrolling would be unnecessary anyway, as there is the ScrollWindow() API. This improves the behaviour of the Text Widget demo in gtk-demo a lot. But I have no idea how the lack of static win gravity should be handled in other places where the X11 code uses it. Especially _gdk_window_move_resize_child(). Big windows still don't work correctly, I assume. Another vague area is the translate_queue. I don't think the queue items actually ever gets used, at least not in the code as of now. There is still some problem in expose handling. By moving an obscuring window back and forth over testgtk's main window, for instance, every now and then you typically get narrow vertical or horizontal strips of pixels that haven't been properly redrawn after being exposed. A fencepost error somewhere? * gdk/win32/gdkevents-win32.c: Cast known GdkWindowObjects directly instead of using GDK_WINDOW_OBJECT(). Remove unused latin_locale_loaded variable. (_gdk_win32_get_next_tick): New function. Used to make sure timestamps of events are always increasing, both in events generated from the window procedure and in events gotten via PeekMessage(). Not sure whether this is actually useful, but it seemed as a good idea. (real_window_procedure): Don't use a local GdkEventPrivate variable. Don't attempt any compression of configure or expose events here, handled elsewhere. (erase_background): Accumulate window offsets when traversing up the parent chain for GDK_PARENT_RELATIVE_BG, in order to get correct alignment of background pixmaps. Don't fill with BLACK_BRUSH if GDK_NO_BG. (gdk_event_get_graphics_expose): A bit more verbose debugging output. (gdk_event_translate): Use _gdk_win32_get_next_tick(). In the WM_PAINT handler, call GetUpdateRgn() before calling BeginPaint() and EndPaint() (which empty the update region). * gdk/win32/gdkdnd-win32.c * gdk/win32/gdkinput-win32.c: Use _gdk_win32_get_next_tick(). * gdk/win32/gdkfont-win32.c: Use %p to print HFONTs. (gdk_text_size): Remove, unused. * gdk/win32/gdkgeometry-win32.c (_gdk_windowing_window_queue_antiexpose): Always return FALSE for now, until figured out whether antiexposes actually can work on Win32. (gdk_window_copy_area_scroll): Scroll also children with the ScrollWindowEx() call. No need to call gdk_window_move() on the children. (gdk_window_scroll): Don't do guffaw scrolling. (gdk_window_compute_position): Fix typo, used win32_y where x was intended. (gdk_window_queue_append): Use GetTickCount() for serial number, not GetMessageTime(), which can be very far back. * gdk/win32/gdkwindow-win32.c (gdk_window_gravity_works): Remove, we know that there is no such thing on Windows. (gdk_window_set_static_bit_gravity, gdk_window_set_static_win_gravity): Ditto, remove, they didn't do anything anyway. (_gdk_windowing_window_init, gdk_window_foreign_new): Call _gdk_window_init_position() like in the X11 backend. (gdk_window_reparent): Don't call the now nonexistent gdk_window_set_static_win_gravity(). No idea what should be done instead. (gdk_window_get_geometry): The returned x and y should be relative to parent. Used to be always zero.. (gdk_window_set_static_gravities): Return FALSE if trying to set static gravity. * gdk/win32/gdkdrawable-win32.c (_gdk_win32_draw_tiles): Rewrite. Make static. Must take tile origin parameters, too. (gdk_win32_draw_rectangle): Pass the tile/stipple origin to _gdk_win32_draw_tiles(). Remove #if 0 code. (blit_inside_window): Don't call ScrollDC(), that didn't work at all like I thought. A simple call to BitBlt() is enough. * gdk/win32/gdkcolor-win32.c (gdk_win32_color_to_string, gdk_win32_print_paletteentries, gdk_win32_print_system_palette, gdk_win32_print_hpalette) * gdk/win32/gdkdrawable-win32.c (gdk_win32_drawable_description) * gdk/win32/gdkevents-win32.c (gdk_win32_message_name): Move all debugging helper functions to gdkmain-win32.c. * gdk/win32/gdkmain-win32.c: (gdk_win32_lbstyle_to_string, gdk_win32_pstype_to_string, gdk_win32_psstyle_to_string, gdk_win32_psendcap_to_string, gdk_win32_psjoin_to_string): New debugging functions. (static_printf): Helper function for the above. sprintfs into a static circular buffer, return value should be used "soon". * gdk/win32/gdkgc-win32.c: Use above debugging functions. * gdk/win32/gdkprivate-win32.h: Declare new functions, remove obsoleted ones. 2002-10-28 Tor Lillqvist <[email protected]> * gdk/win32/gdkwindow-win32.c (gdk_window_set_decorations, gdk_window_set_functions): Don't call GetWindowLong for GWL_EXSTYLE, the extended window style wasn't used or changed. After setting the window style with SetWindowLong, call SetWindowPos with the SWP_FRAMECHANGED flag for the window to actually be updated, as Platform SDK docs say one should. (#95812, huzheng) Pango 1.0: 2002-11-12 Tor Lillqvist <[email protected]> * pango/pangowin32-fontcache.c (free_cache_entry, cache_entry_unref, pango_win32_font_cache_load): Add more debugging output. * modules/basic/basic-win32.c (uniscribe_shape): Plug memory leak: Free return value from pango_win32_font_logfont(). Call pango_win32_font_cache_unload() for the hfont returned from pango_win32_font_cache_load() after using it. 2002-10-24 Tor Lillqvist <[email protected]> * modules/basic/basic-win32.c: Update the non-Uniscribe ranges to cover some more simple scripts. (itemize_shape_and_place): Handle unknown glyphs. (script_engine_list): Only return the "everything" range if Uniscribe is available. It would be nice to build up a more specific range list based on the information ScriptGetProperties() returns. That function lists information about each script the Uniscribe version used can handle. Unfortunately, though, the information is severely limited. It doesn't tell what Unicode blocks a script covers. It only gives one language that uses that script, and sometimes an charset number, but for most scripts just the totally useless DEFAULT_CHARSET. 2002-10-22 Tor Lillqvist <[email protected]> * configure.in: Add --with-usp10 flag to indicate where to find the usp10.h header, for using Uniscribe on Win32. Set USP10_H autoconf variable, HAVE_USP10_H config.h macro and HAVE_USP10_H automake conditional. * acconfig.h: Add HAVE_USP10_H. * pango/pangowin32-private.h (PANGO_WIN32_DEBUGGING): Change semantics of this flag. If defined, also need to set env var PANGO_WIN32_DEBUG to get the copious debugging output. Change PING() macro accordingly. Add variable pango_win32_debug. * pango/pangowin32.c (pango_win32_get_dc): New function. Code factored out from pango_win32_font_class_init() and pango_win32_font_map_class_init(). (pango_win32_get_debug_flag): New function. (pango_win32_render): Handle y offsets, too. Potentially need to call ExtTextOutW several times, one for each run of sequential glyphs with the same y offset. * pango/pangowin32.h: Declare above new functions, in the part only for shaper engine use. * pango/pangowin32.def: Export above new functions. * pango/pangowin32-fontmap.c (pango_win32_font_map_class_init): Call pango_win32_get_dc() as mentioned above. * modules/basic/Makefile.am: If HAVE_USP10_H, let basic-win32.lo depend on usp10.h. * modules/basic/basic-win32.c: If HAVE_USP10_H, and the Uniscribe DLL usp10.dll is present, use Uniscribe. (uniscribe_shape, itemize_shape_and_place, set_up_pango_log_clusters, convert_log_clusters_to_byte_offsets, make_langid, init_uniscribe): New functions. (dump_glyphs_and_log_clusters, lang_name, charset_name): Debugging functions.