2002-12-21 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkwindow-win32.c (gdk_window_new): Move the code that
sets the window style and extended window style, and adjusts the
width and height to take the window decorations into account
earlier. The adjusted width and height used to be ignored. Remove
the local x, y, width and height variables, no need to further
confuse the code by having local copies. (Partial fix, I hope, for
#101588)
(gdk_window_move): When moving top-level windows, take title bar
and border width into account, offsetting the coordinates before
calling SetWindowPos().
(gdk_window_set_decorations, gdk_window_set_functions):
Reimplement, taking into account the peculiar semantics of
GDK_DECOR_ALL and GDK_FUNC_ALL. (#79036)
(gdk_window_set_type_hint): When setting
GDK_WINDOW_TYPE_HINT_MENU, call gdk_window_set_decorations().
Sat Dec 14 20:36:31 2002 Owen Taylor <otaylor@redhat.com>
* po/Makefile.in.in: Fix problem from recent commit where
non GNU-format message catalogs would be installed in
datadir.
Fri Dec 13 23:10:21 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkclist.c: Fix a problem with the focus row
ending up off the list when rows were deleted
(#94812, Christian Reis, Jon Nelson).
Thu Dec 12 19:51:45 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkfilesel.c (open_new_dir): Include "."
and ".." in the list of entries; they are needed for
correct handling of .<TAB>, ..<TAB>; were lost
with the GDir conversion. (Francisco Bustamante,
#89972)
* gtk/gtkfilesel.c (open_new_dir): If we hit
EOF unexpectedly, that's OK... a file was just
deleted while we were reading the directory.
Tue Dec 10 14:37:41 2002 Owen Taylor <otaylor@redhat.com>
* gdk/x11/gdkevents-x11.c (gdk_event_translate)
gdk/x11/gdkwindow-x11.h: Separate out tracking of the X server
focus window from tracking our idea of what the focus window is,
because the PointerRoot code needs to know the real pointer
window.
Tue Dec 10 12:57:00 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkclist.c (adjust_adjustments): Fix typo with
hadjustment/vadjustment introduce prior to 2.0.0.
(#84621, Charles Kerr)
2002-12-08 Tor Lillqvist <tml@iki.fi>
Fix bug #10557:
* gdk/win32/gdkevents-win32.c: Minor debugging output changes.
(gdk_event_translate): Ignore the WM_SHOWWINDOW/SW_OTHERUNZOOM or
SW_OTHERZOOM messages. Do not generate a GDK_UNMAP event for
WM_SIZE/SIZE_MINIMIZED messages, they do not really corrspond to
unmapping on X11. Set window state correctly for all three of
SIZE_{MINIMIZED,MAXIMIZED,RESTORED}. A maximized and then iconified
("minimized" in Windows terminology) window still has the
"maximized" property, i.e. when deiconified, it will reappear as
maximized.
* gdk/win32/gdkprivate-win32.h
* gdk/win32/gdkmain-win32.c (gdk_win32_window_state_to_string):
New debugging output helper function.
* gdk/win32/gdkwindow-win32.c (show_window_internal): Handle more
situations. Add parameter to tell whether deiconifying. Code
reorg: Return early when appropriate instead of using nested if
statements. If just deiconifying without raising, restore active
window.
(gdk_window_hide, gdk_window_withdraw, gdk_window_iconify,
gdk_window_deiconify, gdk_window_maximize, gdk_window_unmaximize,
gdk_window_focus): Use gdk_win32_window_state_to_string() in
debugging output.
(gdk_window_iconify): Restore active window after calling
ShowWindow(). Otherwise the "next" window gets activated.
(gdk_window_stick, gdk_window_unstick): Don't output any warnings.
Fri Dec 6 17:50:57 2002 Owen Taylor <otaylor@redhat.com>
* gdk/gdkpixmap.c (PACKED_COLOR): Fix incorrect
masks in PACKED_COLOR definition. (#99795,
John Finlay)
2002-12-04 Bastien Nocera <hadess@hadess.net>
* io-tiff.c: (tiff_image_parse): use G_BIG_ENDIAN instead of
WORDS_BIGENDIAN which isn't set by configure.in
Tue Dec 3 17:47:24 2002 Owen Taylor <otaylor@redhat.com>
* gdk/x11/gdkgeometry-x11.c (gdk_window_guffaw_scroll): Fix wrong
sign for queued translation. (Found by Chris Blizzard,
#100274)
2002-12-01 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkdrawable-win32.c (generic_draw): Don't leak
stipple_gc. Some more checks for errors. Use correct ternary ROP
when blitting the foreground into the tile pixmap where the
stipple is set. (I didn't notice that I had used the wrong one, as
it didn't matter on Win2k, where DIB sections apparently are
zeroed upon creation. But on Win98 they have random initial
contents. Thanks to Hans Breuer for reporting this.)
(gdk_win32_draw_rectangle, gdk_win32_draw_arc,
gdk_win32_draw_polygon): Don't pass the LINE_ATTRIBUTES bits to
generic_draw() if drawing a filled figure.
* gdk/win32/gdkmain-win32.c (gdk_win32_print_dc): Minor cosmetics.
(gdk_win32_gcvalues_mask_to_string): Initialize buffer as empty.
2002-12-01 Gustavo Maciel Dias Vieira <gdvieira@zaz.com.br>
* pt_BR.po: Updated Brazilian Portuguese translation by Alexandre
Folle de Menezes <afmenez@terra.com.br>.
2002-11-29 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkprivate-win32.h (WIN32_API_FAILED,
WIN32_GDI_FAILED, OTHER_API_FAILED): Don't use __PRETTY_FUNCTION__
if __GNUC__ >= 3, to avoid warning message.
* gdk/win32/gdkwindow-win32.c (show_window_internal): Only call
SetWindowPos() with HWND_TOPMOST if the raise flag is on.
(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-25 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (print_event_state,
print_window_state, print_event): Enclose in #ifdef
G_ENABLE_DEBUG, as they use functions only available with
G_ENABLE_DEBUG, and are called only when G_ENABLE_DEBUG.
2002-11-24 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkdrawable-win32.c: Remove the already ifdeffed-out
code that didn't use generic_draw.
(generic_draw): When drawing into the mask (for tiled/stippled
fill styles), copy the line attributes from the actual GC. Also
ask for text drawing setup if needed. Use differently set up HDCs
in the normal and tiled/stippled cases.
(draw_segments) Slight code reorg.
(draw_lines, gdk_win32_draw_lines): Use generic_draw() also for
lines.
* 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 <tml@iki.fi>
* 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 <tml@iki.fi>
* 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.
* gdk/win32/gdkwindow-win32.c (gdk_window_new): Revert change from
2002-11-19: Don't need to set depth of GDK_INPUT_ONLY windows to
nonzero. It was synthesize_expose_events() (see above) that was
causing the trouble with them in 256-colour mode.
2002-11-21 15:48:13 2002 Dan Mills <thunder@ximian.com>
* configure.in: replace gtk-doc version check with an all-sh
version that works better (#99216).
Wed Nov 20 20:35:14 2002 Kristian Rietveld <kris@gtk.org>
* ==== Released 2.0.9 ====
* configure.in: Version 2.0.9, interface, binary age 9.
* NEWS: updated.
Wed Nov 20 19:42:57 2002 Kristian Rietveld <kris@gtk.org>
Merged treeview fixes from HEAD.
* gtk/gtkrbtree.c (gtk_rbtree_reorder_sort_func): return a value
in the range of [-1, 1] instead [0, 1],
(gtk_rbtree_reorder_invert_func): ditto,
This makes treeview reordering working on platforms as FreeBSD and
solaris, thanks go to Heiner Eichmann for finding this out and
sending in a patch (#98251).
* gtk/gtktreestore.c (node_free): only free the data list if
node->data is not NULL,
(gtk_tree_store_remove): free the data list from the node if
needed. (#94728, pointed out by Peter Bloomfield).
* gtk/gtktreeview.c (gtk_tree_view_remove_column): stop editing
and set the edited_column to NULL if edited_column is set.
(#91288, modified patch from Josh Parsons).
* gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_start_editing):
only _set_text if celltext->text is not NULL. (#97815, reported
and testcase provided by Vitaly Tishkov).
* gtk/gtktreeselection.c (gtk_tree_selection_real_modify_range):
also update the anchor_path, makes behaviour consistent with the
other selection modification functions. (#96801, reported and
testcase provided by Vitaly Tishkov).
2002-11-20 Tor Lillqvist <tml@iki.fi>
Fix by Arnaud Charlet (#98983):
* gtk+/gdk/win32/gdkwindow-win32.c
(gdk_window_get_frame_extents): Fix typo in setting y.
2002-11-19 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkwindow-win32.c (gdk_window_new): Yes, my change
on 2002-11-14 to gdkpixmap-win32.c:gdk_pixmap_new() broke
palettized (256-colour) display slightly: For some reason
GdkWindowObject::depth of GDK_INPUT_ONLY windows now needs to
be set to the visual's depth, even if the X11 backend sets it
to zero. Otherwise, on a palettized display, gdk_pixmap_new()
when called from gdk_window_begin_paint_region() would get
zero from gdk_drawable_get_depth(), and fail.
2002-11-15 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkprivate-win32.h
* gdk/win32/gdkglobals-win32.c
* gdk/win32/gdkmain-win32.c
* gdk/win32/gdkdrawable-win32.c (generic_draw): Don't check if
MaskBlt() is present in gdi32.dll, it is, even on Win9x. It just
always returns failure on Win9x. Instead, call MaskBlt() only if
we are on NT/2k/XP.
2002-11-14 Tor Lillqvist <tml@iki.fi>
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. Check if MaskBlt() is available. 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 Christopher James Lahey <clahey@ximian.com>
* gdk/x11/gdkwindow-x11.c (gdk_window_impl_x11_get_colormap): Ref
the colormap returned from gdk_colormap_lookup.
2002-11-13 Tor Lillqvist <tml@iki.fi>
* 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 <tml@iki.fi>
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.
* gdk/win32/rc/gdk.rc.in: Update copyright year.