2005-11-09 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkwindow-win32.c: Remove unnecessary includes.
(_gdk_win32_get_adjusted_client_rect): Remove this two-line
function which was used only in one place.
(get_outer_rect): Use _gdk_win32_adjust_client_rect().
(gdk_window_set_geometry_hints): If we have identical minimum and
maximum size hints, remove the resize and maximize
decorations/functions. (#104514)
If we have a maximum size hint, remove the maximize
decoration/function but ensure the resize decoration/function is
available. Otherwise ensure both resize and maximize
decorations/functions are there.
(set_or_clear_style_bits): Factored out common code from
gdk_window_set_decorations() and gdk_window_set_functions().
Hack the window style setting once more: Only touch the window
style bits corresponding to the GdkWMDecoration or GdkWMFunction
parameter bitmasks. Hopefully this finally is the correct thing to
do. We used to clear all other bits than those that were being
set, or set all other bits than those that were being cleared.
Take into account that adding or removing decorations leaves the
window's outer size unchanged, i.e., the client area's size and
position change. This is apparently not what we want, so change
also the window's (outer) position and size appropriately so that
the client area's position and size stay constant.
gtk-demo's color selector dialog is now non-resizable like on X11
(I tested with metacity in GNOME). Torn off menus are shrinkable
vertically but have a maximum size, and are not maximizable or
minimizable, like on X11.
(gdk_window_set_decorations, gdk_window_set_functions): Let
set_or_clear_decorations() do most of the job.
* gdk/win32/gdkprivate-win32.h: Remove declaration of
_gdk_win32_get_adjusted_client_rect().
2005-11-09 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkwindow-win32.h (struct _GdkWindowImplWin32)
* gdk/win32/gdkwindow-win32.c (gdk_window_impl_win32_init,
gdk_window_get_type_hint, gdk_window_get_type_hint): Store the
type hint. Implement gdk_window_get_type_hint() by just returning
the hint stored.
2005-11-09 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkwindow-win32.c (gdk_window_set_geometry_hints):
Remove code that has been permanently ifdeffed out for two years.
2005-11-08 Matthias Clasen <mclasen@redhat.com>
* gdk/gdkgc.c (gdk_gc_finalize): Unref tile and stipple when
finalizing a gc. (#320789, Nickolay V. Shmyrev)
2005-11-08 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Ignore
icons if they would make the request large enough to cause
Xlib to loose the connection. (#320909, Claudio Saavedra)
2005-11-07 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkcursor-win32.c (pixbuf_to_hbitmaps_normal):
Correct the calculation of maskstride. (#320152, Peter Zelezny)
2005-11-06 Tor Lillqvist <tml@novell.com>
(pixbuf_to_hbitmaps_alpha_winxp): Use an 1-bit mask bitmap,
like pixbuf_to_hbitmaps_normal().
(_gdk_win32_pixbuf_to_hicon_supports_alpha): Check
G_WIN32_IS_NT_BASED() first, so we can pretend being on Win9x by
setting the G_WIN32_PRETEND_WIN9X environment variable.
2005-11-06 Tor Lillqvist <tml@novell.com>
Make icon masks work on Win98 (#320152, Peter Zelezny)
* gdk/win32/gdkcursor-win32.c (create_color_bitmap): Take also a
parameter for the depth of the bitmap, so that this function can
be used to create 1-bit bitmaps, too.
(pixbuf_to_hbitmaps_normal): Create an 1-bit bitmap for the mask,
and initialize it properly.
2005-11-03 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkcursor-win32.c: As there is only one GdkDisplay in
the Win32 backend, check that GdkDisplay* parameters are equal to
_gdk_display instead of using the unnecessarily general
GDK_IS_DISPLAY().
2005-11-03 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkcursor-win32.c (pixbuf_to_hbitmaps_alpha_winxp):
Rename the variables for the color bitmap to have "color" in their
name, for similarity with pixbuf_to_hbitmaps_normal(). Create a
color bitmap for the mask, too, instead of creating a b&w bitmap
with CreateBitmap(). Set up the mask bitmap's contents, ones for
those pixels in the color bitmap where the alpha is zero, zero for
other pixels. We used to use an unitialized mask bitmap! This
meant that icons and cursors created presumably worked more or
less by accident. Totally blank icons with zero alpha everywhere
(as used by gtktrayicon.c) definitely did not work as expected.
2005-11-02 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkcolor-win32.c
* gdk/win32/gdkscreen-win32.c
* gdk/win32/gdkwindow-win32.c: Whitespace consistency
fixes. Remove superfluous test for GdkWindow* parameters being
non-NULL. Testing GDK_IS_WINDOW() is enough. As there is only one
GdkScreen and one GdkDisplay in the Win32 backend, use those
variables instead of the getter functions. For GdkDisplay* and
GdkScreen* parameters, check that they are equal to the
corresponding singleton variables instead of the more general
GDK_IS_DISPLAY() or GDK_IS_SCREEN().
2005-11-01 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkprivate-win32.h
* gdk/win32/gdkglobals-win32.c
* gdk/win32/gdkmain-win32.c (_gdk_windowing_init): Add more
pre-interned GdkAtoms and pre-registered clipboard formats. Sort
their declarations, definitions and assignments into a more
logical and consistent order.
* gdk/win32/gdkmain-win32.c (_gdk_win32_cf_to_string): Include the
CF_ prefix for the predefined clipboard format names. Put quotes
around registered format names to distinguish them.
* gdk/win32/gdkproperty-win32.c (gdk_property_change): Return
immediately with a warning if the property type is STRING, TEXT,
COMPOUND_TEXT or SAVE_TARGETS, as these are X11-specific that we
should never pretend to handle on Win32. Handle only UTF8_STRING
here, other formats with delayed rendering. Use \uc1 instead of
\uc0 when generating Rich Text Format for easier testability on
XP, where WordPad misinterprets \uc0 encoded characters. Add more
GDK_NOTE debugging output for Clipboard operations.
* gdk/win32/gdkselection-win32.c: Debugging printout improvements.
(gdk_selection_convert): Don't pretent to handle STRING, just
UTF8_STRING. Streamline error handling, don't unnecessarily have a
GError which then isn't used for anything anyway if it gets set.
(gdk_win32_selection_add_targets): Skip also STRING, TEXT,
COMPOUND_TEXT and SAVE_TARGETS in addition to UTF8_STRING.
2005-10-25 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkxftdefaults.c (init_xft_settings): Make the
initialization of screen_x11->xft_rgba more explicit. (#319627,
Bogdan Nicula)
2005-10-24 Matthias Clasen <mclasen@redhat.com>
Add settings to hide the input method and Unicode control character
submenus in the context menus of GtkEntry and GtkTextView.
* gdk/x11/gdkevents-x11.c: Map GTK+ settings to X settings.
* gtk/gtksettings.c (gtk_settings_class_init): Declare GTK+ settings here.
* gtk/gtktextview.c (popup_targets_received):
* gtk/gtkentry.c (popup_targets_received): Use the settings here.
2005-10-14 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkdisplay-win32.c: Remove the clipboard viewer code.
It didn't really do anything useful, and was just confusing and
incomplete. Comments claimed we don't do delayed rendering, but in
fact we do, for images. (The delayed rendering code has other
problems, though, see #168173.) The clipboard viewer code was
probably even buggy (the WM_CHANGECBCHAIN handled didn't propagate
the message when necessary). It was just test code, it said so in
a comment. Add something similar back later if necessary.
(_win32_on_clipboard_change,
_gdk_win32_register_clipboard_notification): Remove.
(gdk_display_supports_selection_notification,
gdk_display_request_selection_notification): Always just return
FALSE. We didn't generate any GDK_OWNER_CHANGE events anywhere.
2005-10-13 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkevents-win32.c (gdk_event_translate): Don't treat
Alt-Enter specially. It does not have any special meaning and
should be passed on to the application. (#318378, Tim Evans)
2005-10-13 Tor Lillqvist <tml@novell.com>
Set visual depth to 24 for 32 bits-per-pixel devices on
Win32. This allows gdk_drawable_real_draw_pixbuf() to use the
optimized composite_0888() function rather than the slower image
dithering functions to draw pixbufs (#313993, John Ehresman)
* gdk/win32/gdkimage-win32.c (_gdk_win32_new_image): Use
_gdk_windowing_get_bits_for_depth() to initialize
GdkImage::bits_per_pixel.
(_gdk_windowing_get_bits_for_depth): Return 32 bits for depth 24.
* gdk/win32/gdkpixmap-win32.c (gdk_pixmap_new): Use
_gdk_windowing_get_bits_for_depth() to initialize
BITMAPINFOHEADER::biBitCount.
* gdk/win32/gdkvisual-win32.c (_gdk_visual_init): Set
GdkVisual::depth to 24 even if GetDeviceCaps(BITSPIXEL) returns
32.
2005-10-01 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkdrawable-win32.c (blit_from_pixmap): In case
BitBlt() fails with ERROR_INVALID_HANDLE, the most probable cause
is that the the desktop isn't visible because the session has been
switched, the screen is locked, or a terminal server session
disconnected, so no error message necessary. (#137796)
It is of course remotely possible that BitBlt() failing with
ERROR_INVALID_HANDLE might also be caused by some other
problem. We could strive for perfection and track whether the
desktop is visible by using WTSRegisterSessionNotification() and
handling WM_WTSESSION_CHANGE. I think that's overdoing it just for
this issue, though. If we would track desktop visibility, we
should then avoid even trying to update the display at all while
the desktop isn't visible.
2005-09-26 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkwindow-win32.c (gdk_window_shape_combine_mask): Set
the shaped flag here, too. (#316871)
(gdk_window_shape_combine_region): Currently unimplemented, so
don't do anything to the shaped flag here.
2005-09-26 Matthias Clasen <mclasen@redhat.com>
Fix#316871, reported by Dan Winship:
* gdk/gdkwindow.h (struct _GdkWindowObject): Add a shaped flag.
* gdk/x11/gdkwindow-x11.c (gdk_window_shape_combine_mask)
(gdk_window_shape_combine_region): Set it here.
* gdk/gdkwindow.c (gdk_window_invalidate_maybe_recurse): Don't
remove the child area for shaped windows.
2005-09-21 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkselection-win32.c (gdk_selection_convert,
gdk_text_property_to_text_list_for_display,
gdk_text_property_to_utf8_list_for_display,
gdk_win32_selection_add_targets,
_gdk_win32_selection_convert_to_dib): Free return value from
gdk_atom_name().
(gdk_text_property_to_text_list_for_display): Drop GError variable
that isn't actually used after being set.
2005-09-20 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkselection-win32.c
(gdk_selection_owner_get_for_display): Do return the correct owner
for CLIPBOARD (i.e., the owner of the Windows Clipboard, if it is
a window GDK knows about). The reason to return NULL seems to have
gone when in the fix for bug #163702 the artificial
GDK_SELECTION_CLEAR event generation was removed from
gdk_selection_send_notify_for_display(). Fixes bug #316552.
2005-09-18 Hans Breuer <hans@breuer.org>
* gdk/gdk.symbols gdk/win32/gdkwin32.h gdk/win32/gdkcursorwin32.c : export
_gdk_win32_pixbuf_to_hicon() as gdk_win32_pixbuf_to_hicon_libgtk_only()
* gtk/gtktrayicon-win32.c : a lot of debug spew but it has started to show
the icon and is blinking with teststatusicon. More to come ...
2005-09-18 Hans Breuer <hans@breuer.org>
* gtk/makefile.msc.in : fix typo for GTK_VER; define HAVE_CONFIG_H
cause gtkprogressbar.c has #include <config.h> conditionally; less
noise from generated gtk.def
* gtk/stock-icons/makefile.msc gdk/makefile.msc tests/makefile.msc : updated
* gtk/gtktrayicon-win32.c : dummy implmentation to make gtk compile.
For me it works as well as the *NIX implemenation, that is not at all.
* gdk/win32/gdkproperty-win32.c : implement gdk_atom_intern_static_string()
* gdk/win32/gdkwindow-win32.c(gdk_window_set_urgency_hint) : only use
only use (WINVER >= 0x0500) when available from the SDK. Otherwise fall
back to true dynamic linking of FlashWindowEx. Makes gtk+ work on NT4.0
again - if compiled properly.
* tests/teststatusicon.c : don't use GNOME icons for testing, but icons
already coming with Gtk+. Makes it compile on win32.
2005-09-09 Matthias Clasen <mclasen@redhat.com>
Make it possible to determine if a key event is for a
modifier key:
* gdk/x11/gdkprivate-x11.h:
* gdk/x11/gdkkeys-x11.c (_gdk_keymap_key_is_modifier):
New function to determine if a keycode is mapped to a modifier.
(get_xkb): Get the modmap.
* gdk/x11/gdkevents-x11.c (translate_key_event): Set the
is_modifier bit by calling _gdk_keymap_key_is_modifier().
* gdk/gdkevents.h (struct _GdkEventKey): Add an is_modifier
bit.
2005-09-09 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkdisplay-win32.c (gdk_display_get_name): Cache the
display name. There is only one GdkDisplay on Win32, and
constructing the display name isn't entirely trivial, so cacheing
is probably worth it. For instance GIMP calls this function a lot.
(gdk_display_open): Call gdk_display_get_name() to prime the
cached name.
(gdk_display_get_n_screens, gdk_display_get_screen,
gdk_display_get_default_screen): Verify parameter correctness like
the X11 backend does.
* gdk/win32/gdkscreen-win32.c (gdk_screen_make_display_name):
Return a freshly allocated string, as the API specifies. Fixes a
heap corruption problem that caused random errors and crashes in
GIMP, for instance.
2005-09-06 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkkeys-x11.c (update_modmap): Make the modmap reflexive.
(_gdk_keymap_add_virtual_modifiers): Don't add both Alt and Meta
if they are mapped to the same modifier.
2005-09-06 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaccelgroup.c (gtk_accelerator_parse):
* gtk/gtkaccellabel.c (_gtk_accel_label_class_get_accelerator_label):
Don't use GDK_ALT_MASK.
* gdk/gdktypes.h: No need to introduce GDK_ALT_MASK
2005-09-06 Matthias Clasen <mclasen@redhat.com>
Add support for extra virtual modifiers: (#85780, Owen Taylor)
* gdk/x11/gdkkeys-x11.c (struct _GdkKeymapX11): Add a
modmap to maintain the information which X modifiers map to
virtual modifiers.
(get_xkb): Set up the modmap from the XKB tables.
(update_keymaps): Set up the modmap from the information returned
by XGetModifierMapping in the non-XKB case.
* gdk/x11/gdkprivate-x11.h:
* gdk/x11/gdkkeys-x11.c (_gdk_keymap_add_virtual_modifiers): New
function to set the virtual modifiers in the state.
* gdk/x11/gdkevents-x11.c (translate_key_event): Call
_gdk_keymap_add_virtual_modifiers here.
* gdk/gdktypes.h (GdkModifierType): Add bits for virtual Super,
Hyper and Meta modifiers. Also add GDK_ALT_MASK as an alias
for GDK_MOD1_MASK.
2005-09-02 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkevents-win32.c (gdk_event_translate): Keep track of
cursor position also in root window coordinates. Prune out
superfluous WM_MOUSEMOVE messages even earlier, based on root window
coordinates. Windows sends WM_MOUSEMOVE messages after a new
window has ben mapped below the cursor even if the mouse doesn't
move. We used to generate GDK_MOTION_NOTIFY in these cases. This
confused at least gtk_menu_motion_notify(). (#314995)
* gtk/gtkintl.h: No need to include config.h here. It caused
warnings about GTK_LOCALEDIR being redefined on Win32 when
compiling files where gtkintl.h is included after gtkprivate.h
(which #undefines and re-#defines GTK_LOCALEDIR on Win32).
* gtk/gtkplug.c: Include config.h.
2005-09-01 Matthias Clasen <mclasen@redhat.com>
* gdk/*.c: Intern some more strings.
* gtk/gtkintl.h:
* gtk/*.c: Define an I_() macro and use it instead of the
bulky g_intern_static_string().
2005-08-31 Matthias Clasen <mclasen@redhat.com>
* gdk/Makefile.am:
* gtk/Makefile.am: Intern type names in code generated by
glib-mkenums, too.
* gtk/*.c:
* gdk/x11/*.c:
* gdk/*.c: Intern type names before registering the type to avoid
unnecessary copies.
2005-08-26 Matthias Clasen <mclasen@redhat.com>
* gdk/gdk.symbols:
* gdk/gdkscreen.h:
* gdk/gdkscreen.c: Make the GdkScreen font options api
public, and add properties GdkScreen::font-options and
GdkScreen::resolution. (#314004)
* gdk/gdkpango.c:
* gtk/gtksettings.c:
* gtk/gtkwidget.c: Adjust all callers.
* gdk/gdkintl.h: Simplify and use glib/gi18n-lib.h.
* gdk/gdkpango.c: Include gdkintl.h, not gtkintl.h.
* gdk/gdkscreen.c: Include gdkintl.h.
2005-08-25 Owen Taylor <otaylor@redhat.com>
* gdk/gdkscreen.c (gdk_screen_get_type): Use gdk_screen_init
as instance_init, not base_init! (Fix from Frederic Crozat,
reported by Joe Marcus Clarke). Trivial cleanup: use -1.
rather than -1 for a negative flag value.
2005-08-23 Owen Taylor <otaylor@redhat.com>
Fix for #314004, reported by Michael Reinsch:
* gdk/gdk.symbols:
* gdk/gdkscreen.[ch]: Add gdk_screen_get/set_font_options_libgtk_only()
Add gdk_screen_get/set_resolution_libgtk_only()
* gdk/gdkpango.c (gdk_pango_context_get_for_screen): Set
the options for the screen on the newly created context.
* gtk/gtksettings.c (settings_update_font_options/dpi) gtkwidget.c:
Move font options and dpi code from gtkwidget.c to gtksettings.c, set
the font options on the screen.
* gtk/gtkwidget.c (gtk_widget_update_pango_context): Just get
the font options from the screen and set them on the context.
2005-08-19 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkdnd-x11.c (_gdk_drag_get_protocol_for_display)
(xdnd_read_actions, get_client_window_at_coords_recurse):
Free data returned from XGetWindowProperty.
* gdk/x11/gdkevents-x11.c (fetch_net_wm_check_window)
Free data returned from XGetWindowProperty. (313867, Kjartan
Maraas)
* gdk/x11/gdkdnd-x11.c (get_client_window_at_coords_recurse): Free
children in all cases. (#313862, Kjartan Maraas)