Commit Graph

41 Commits

Author SHA1 Message Date
Matthias Clasen
13d69e552d Fix a compatibility problem
It turns out that my attempt at handling Super, Hyper and Meta better
is causing problems, mostly because Alt and Meta are commonly colocated
in the modmap, and apps do a check for the Alt modifier regularly.

See e.g bug 607697.
2010-02-12 18:55:42 -05:00
Tor Lillqvist
8daf770a73 Add gdk_keymap_map_virtual_modifiers() implementation 2009-12-21 22:43:44 +02:00
Tor Lillqvist
139965125b Implement trivially on Windows. Not sure if something more complex is
2008-10-01  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (gdk_keymap_get_caps_lock_state):
	Implement trivially on Windows. Not sure if something more complex
	is actually needed, more specifically whether the function needs
	to differentiate between "Caps Lock" and "Shift Lock" semantics?


svn path=/trunk/; revision=21558
2008-10-01 11:02:22 +00:00
Tor Lillqvist
d6ab77ea70 Bug 544684 - Win64 issue, window handles are assumed to be 32-bit
2008-08-05  Tor Lillqvist  <tml@novell.com>

	Bug 544684 - Win64 issue, window handles are assumed to be 32-bit

	* gdk/win32/gdkcursor-win32.c
	* gdk/win32/xcursors.h: Change some gchar* to guchar* and vice
	versa to avoid gcc 4.4 signedness warnings.

	* gdk/win32/gdkevents-win32.c: Add some guchar and char pointer
	casts to get rid of gcc 4.4 signedness warnings. Print GdkAtom
	values in debugging output using the %p format.
	
	* gdk/win32/gdkkeys-win32.c
	* gdk/win32/gdkfont-win32.c
	* gdk/win32/gdkmain-win32.c: Add some casts to avoid gcc warnings.
 
	* gdk/win32/gdkwindow-win32.c: Use SetWindowLongPtr() instead of
	SetWindowLong().

	* gdk/win32/gdkwin32id.c (gdk_handle_hash): Use all 64 bits of a
	HANDLE on Win64.


svn path=/trunk/; revision=20994
2008-08-04 23:21:36 +00:00
Cody Russell
e7b024c6b7 Bug 541305 – [Win32] Scrolling was broken after GdkWindow refactoring
2008-07-02  Cody Russell  <bratsche@gnome.org>

        Bug 541305 – [Win32] Scrolling was broken after GdkWindow refactoring

        * gdk/win32/gdkwindow-win32.c:	Reverted	some logic so that scrolling
	works again.

        * gdk/win32/gdkgeometry-win32.c: Removed some more unnecessary	checks.
        * gdk/win32/gdkkeys-win32.c: Removed unused variable to fix compile-time
        warnings.


svn path=/trunk/; revision=20737
2008-07-02 20:22:30 +00:00
Johan Dahlin
d97cdbdf53 Include "config.h" instead of <config.h> Command used: find -name
2008-06-21  Johan Dahlin  <jdahlin@async.com.br>

    * *.[ch]: Include "config.h" instead of <config.h>
    Command used:
    find -name \*.[ch]|xargs perl -p -i -e 's/^#include <config.h>/#include "config.h"/g'
    Rubberstamped by Mitch and Tim


svn path=/trunk/; revision=20669
2008-06-22 14:28:52 +00:00
Tor Lillqvist
441f048426 Cosmetic changes.
2007-07-24  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (update_keymap): Cosmetic changes.


svn path=/trunk/; revision=18538
2007-07-24 14:40:21 +00:00
Tor Lillqvist
92421f96f6 Implement. Just return FALSE for now. What should this function actually
2007-07-03  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (gdk_keymap_have_bidi_layouts):
	Implement. Just return FALSE for now. What should this function
	actually do? Does keyboards layouts being "in use" mean that such
	layouts can be switched to on the fly? If so we need to actually
	check that.


svn path=/trunk/; revision=18359
2007-07-03 16:53:17 +00:00
Tor Lillqvist
1ff434a681 Remove support for Windows 9x/ME. GTK+ hasn't worked on Win9x since 2.6 or
2006-08-29  Tor Lillqvist  <tml@novell.com>

	Remove support for Windows 9x/ME. GTK+ hasn't worked on Win9x
	since 2.6 or 2.8. It's pointless to keep the Win9x code in here as
	it isn't being maintained anyway. If somebody is interested, it
	can always be found in older GTK+ versions, and in CVS.

	* gdk/win32/gdkcursor-win32.c
	* gdk/win32/gdkdnd-win32.c
	* gdk/win32/gdkdrawable-win32.c
	* gdk/win32/gdkgc-win32.c
	* gdk/win32/gdkglobals-win32.c
	* gdk/win32/gdkkeys-win32.c
	* gdk/win32/gdkmain-win32.c
	* gdk/win32/gdkproperty-win32.c
	* gdk/win32/gdkselection-win32.c: Remove the G_WIN32_IS_NT_BASED()
	and G_WIN32_HAVE_WIDECHAR_API() tests and their false (Win9x)
	branches, and any variables or static functions used only by the
	Win9x branches.

	* gdk/win32/gdkprivate-win32.h: Remove backup definitions for
	constants that aren't missing from current mingw and MSVC6
	headers.

	* gdk/win32/gdkmain-win32.c
	* gdk/win32/gdkprivate-win32.h: Remove the _gdk_win32_gdi_failed()
	function. On NT-based Windows GetLastError() returns error codes
	also for failed GDI calls, so we can use _gdk_win32_api_failed()
	always.
2006-08-29 23:01:53 +00:00
Tor Lillqvist
8ae3fade37 Map VK_NUMPAD[0-9] to GDK_KP_[0-9]. (#337562)
2006-04-19  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (handle_special): Map VK_NUMPAD[0-9]
	to GDK_KP_[0-9]. (#337562)
2006-04-19 09:42:06 +00:00
Tor Lillqvist
7f2ad4a885 Map VK_APPS to GDK_Menu. (#172383, Ivan Wong)
2005-05-23  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (handle_special): Map VK_APPS to
	GDK_Menu. (#172383, Ivan Wong)
2005-05-22 22:28:39 +00:00
Tor Lillqvist
1abd7f7999 If the keysym isn't one of the special cases this function takes care of,
2005-05-23  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (handle_dead): If the keysym isn't one
	of the special cases this function takes care of, us it as
	such. This takes care of for instance the Bengali Virama, see bug
	#165723.
2005-05-22 21:23:45 +00:00
Tor Lillqvist
ba7ee2270a gdk/win32/gdkevents-win32.c gdk/win32/gdkkeys-win32.c Check the
2005-05-18  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkevents-win32.c
	* gdk/win32/gdkkeys-win32.c
	* gdk/win32/gdkprivate-win32.h: Check the KF_EXTENDED bit in
	lParam of WM_KEY* messages to distinguish between left and right
	Control and Alt keys. Unfortunately, the right Shift key doesnt
	set KF_EXTENDED, so to distinguish between left and right Shift
	keys, check the scan code. (#304584)
2005-05-18 14:53:00 +00:00
Tor Lillqvist
df9768cf3a Print debugging output only if asked for, not always.
2005-03-16  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkdisplay-win32.c (_win32_on_clipboard_change): Print
	debugging output only if asked for, not always.

	* gdk/win32/*.c: Use the %+d%+d format for coordinate pairs in
	debugging printout instead of +%d+%d. Misc other additions and
	cosmetic improvements to debugging printouts. Use API_CALL() and
	GDI_CALL() macros in more places.

	* gdk/win32/gdkwindow-win32.c (gdk_window_move, gdk_window_resize,
	gdk_window_move_resize): To detect child windows, check whether
	the real parent is not the desktop window, instead of relying on
	the GDK window type being GDK_WINDOW_CHILD. Foreign GtkPlug
	windows have a GDK window type GDK_WINDOW_FOREIGN, but are still
	de facto child windows.
2005-03-16 01:38:57 +00:00
Tor Lillqvist
2fd6edba8d Workaround for bug in MapVirtualKey(VK_DIVIDE, 0) in some Windows
2005-02-23  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (update_keymap): Workaround for bug in
	MapVirtualKey(VK_DIVIDE, 0) in some Windows versions. (#142998)
2005-02-23 22:06:38 +00:00
Tor Lillqvist
c4d19dfa21 Remove superfluous blank line. 2005-02-01 11:31:24 +00:00
Tor Lillqvist
7a2e34562c New functions, code blocks refactored out of update_keymap(). No
2005-02-01  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (handle_special, set_shift_vks,
	reset_after_dead, handle_dead): New functions, code blocks
	refactored out of update_keymap(). No functionality change.

	(update_keymap): Use ToUnicodeEx() when available (on NT-based
	Windows) instead of ToAsciiEx(). Makes keyboard input work in
	Unicode-only input locales that don't have any ANSI codepage, for
	instance Hindi and Bengali. Use _gdk_input_codepage only on
	Win9x. (#165723)

	* gdk/win32/gdkevents-win32.c (gdk_event_translate): On
	WM_INPUTLANGCHANGE, use GetLocaleInfo() instead of
	TranslateCharsetInfo() to get the input locale's corresponding
	codepage, if any.
2005-02-01 11:26:05 +00:00
Tor Lillqvist
26629f7a93 Handle Greek tonos dead accent key. (#164859, reported and fix verified by
2005-01-23  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (update_keymap): Handle Greek tonos
	dead accent key. (#164859, reported and fix verified by Daniel
	Atallah.)

	* gtk/gtkimcontextsimple.c (gtk_compose_seqs): Handle
	GDK_Greek_accentdieresis (tonos and dialytika) combining with iota
	and upsilon.
2005-01-23 00:20:12 +00:00
Tor Lillqvist
d2b62140cd Handle keyboards with ShiftLock (and not CapsLock) correctly. (#161814)
2005-01-19  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (update_keymap,
	gdk_keymap_translate_keyboard_state): Handle keyboards with
	ShiftLock (and not CapsLock) correctly. (#161814)
2005-01-19 22:48:30 +00:00
Tor Lillqvist
2fdbd4e878 Don't hardcode mapping of VK_DECIMAL to GDK_KP_Decimal. Instead, let
2004-08-07  Tor Lillqvist  <tml@iki.fi>

	* gdk/win32/gdkkeys-win32.c (update_keymap): Don't hardcode
	mapping of VK_DECIMAL to GDK_KP_Decimal. Instead, let ToAsciiEx()
	map it to what's printed on the keypad decimal key for the current
	input locale (keyboard layout). (#149404)
2004-08-07 23:35:41 +00:00
Tor Lillqvist
47b6f521d2 If both Shift and CapsLock pressed, ignore the shift only for letters
2004-04-10  Tor Lillqvist  <tml@iki.fi>

	* gdk/win32/gdkkeys-win32.c (gdk_keymap_translate_keyboard_state):
	If both Shift and CapsLock pressed, ignore the shift only for
	letters (that would have been affected by the CapsLock). (#139095)

	* gdk/win32/gdkglobals-win32.c: Disable tablet support by default,
	seems to be even buggier now than it used to be. (#138341)
	Initialize _gdk_input_ignore_wintab to TRUE.

	* gdk/win32/gdkmain-win32.c: Add --use-wintab switch and
	GDK_USE_WINTAB environment variable to turn on tablet support.
2004-04-10 08:43:36 +00:00
Federico Mena Quintero
80581c3011 Fixes #136082 and #135265, patch by Morten Welinder.
2004-03-05  Federico Mena Quintero  <federico@ximian.com>

	Fixes #136082 and #135265, patch by Morten Welinder.

	* configure.in: Use AC_SYS_LARGEFILE.

	* */*.c: #include <config.h>
2004-03-06 03:38:59 +00:00
Tor Lillqvist
5cd59c1cbc Merge from stable:
2003-12-14  Tor Lillqvist  <tml@iki.fi>

	Merge from stable:

	* gdk/gdkdisplaymanager.c: Mark default_display static.

	* gdk/win32/gdkdnd-win32.c: Mark current_dest_drag static.

	* gdk/win32/gdkkeys-win32.c: Disable some overly verbose debugging
	output.

	* gdk/win32/gdkevents-win32.c: Clean up the debugging output from
	--gdk-debug=events. In general, output just one line of debugging
	output for each Windows message, plus one line for each GDK event
	generated. Indent all lines according to window procedure nesting
	level.

	(inner_window_procedure): Rename from real_window_procedure.

	(find_real_window_for_grabbed_mouse_event): Don't get misled when
	the point is in the non-client (decoration) area of the window
	returned by WindowFromPoint(). Return the root window in that
	case.

	(build_pointer_event_state): Test also MK_XBUTTON1 and
	MK_XBUTTON2 (buttons 4 and 5).

	(synthesize_enter_event): Track the mouse leaving the window in
	the event being generated, not the one mentioned in the Windows
	message.

	(propagate): Test for NULL parent earlier. Improves event
	generation from a grabbed pointer. Part of fix for #107320.

	(handle_stuff_while_moving_or_resizing): New function, to
	dispatch the main loop (once).

	(resize_timer_proc): New function, set to be called by an inerval
	timer during resizes/moves. Calls handle_stuff_while_moving_or_resizing().

	(gdk_event_translate): Drop unused return_exposes parameter.

	Handle WM_XBUTTONDOWN and UP messages (buttons 4 and 5).

	On WM_SYSKEYUP, generate a key release event also for just the Alt
	key.

	On WM_MOUSELEAVE, generate a leave event of type
	GDK_NOTIFY_ANCESTOR (and not UNKNOWN) if the mouse left a
	top-level window, and left the app completely.

	On WM_ENTERSIZEMOVE, set a flag, and start an interval timer that
	calls resize_timer_proc() at regular intervals. On
	WM_EXITSIZEMOVE, kill the timer.

	On WM_WINDOWPOSCHANGED, generate a configure event if necessary,
	and dispatch the main loop (by calling
	handle_stuff_while_moving_or_resizing()). Fixes #99540, idea by
	Herman Bloggs.

	* gdk/win32/gdkmain-win32.c (_gdk_win32_message_to_string): Handle
	also wintab messages.

	* gdk/win32/gdkwindow-win32.c (gdk_window_set_skip_taskbar_hint):
	Instead of using WS_EX_TOOLWINDOW, implement by setting/unsetting
	the window's owner. Fixes #118093, reported by Maxime Romano.
2003-12-14 01:57:54 +00:00
Tor Lillqvist
c1aa7651b4 Handle dead keysyms present on the US-International keyboard. For clarity,
2003-09-19  Tor Lillqvist  <tml@iki.fi>

	* gdk/win32/gdkkeys-win32.c (update_keymap): Handle dead keysyms
	present on the US-International keyboard. For clarity, order
	keysyms in case statement according to numeric value.

	(gdk_keymap_translate_keyboard_state): Handle Caps Lock
	correctly. (#120176, Ken Rastatter and Owen Taylor)
2003-09-19 00:30:35 +00:00
Tor Lillqvist
63f745738d gdk/win32/gdkprivate-win32.h New flags _gdk_input_locale_is_ime and
2003-07-25  Tor Lillqvist  <tml@iki.fi>

	* gdk/win32/gdkprivate-win32.h
	* gdk/win32/gdkglobals-win32.c: New flags _gdk_input_locale_is_ime
	and _gdk_keyboard_has_altgr.

	* gdk/win32/gdkevents-win32.c: Lots of changes. Most important
	ones detailled here.

	Code that has been ifdeffed out for a long time removed. Remove
	some really old doc comments that were left behind for some public
	functions, the official ones are in the X11 backend anyway. Change
	GDK_WINDOW_OBJECT() calls to GdkWindowObject casts. Reformat
	multi-line boolean expressions to have the operators at ends of
	lines.

	As mouse capture with SetCapture() indeed seems to work OK, no
	need to have the correspoinding macro USE_SETCAPTURE and ifdefs.

	Ifdef out the gdk-ping-msg stuff. I don't remember why it was
	needed at some time, and things seem to work fine now without
	(knock on wood).

	Ifdef out the search for some Latin locale keyboard layout being
	loaded. Not used currently, but might be needed after all, if we
	decide that we want to be able to generate ASCII control character
	events with a non-Latin keyboard.

	(assign_object): New helper function, handles the g_object_ref()
	and unref() calls when assigning GObject pointers.

	(generate_crossing_events): Also generate the GDK_NOTIFY_INTERIOR
	enter event when the pointer has moved to an ancestor window. Was
	left out by mistake.

	(gdk_window_is_ancestor): Renamed from gdk_window_is_child().

	(gdk_pointer_grab, gdk_pointer_ungrab): Implement the confine_to
	functionality, using ClipCursor().

	(find_window_for_mouse_event): Splice part of code into new
	function find_real_window_for_grabbed_mouse_event().

	(fixup_event, append_event, apply_filters): New functions, code
	refactored out from elsewhere.

	(synthesize_enter_or_leave_event, synthesize_leave_event,
	synthesize_enter_event,
	synthesize_leave_events,synthesize_enter_events): Also take a
	GdkCrossingMode parameter, in preparation to generating
	GDK_CROSSING_GRAB and GDK_CROSSING_UNGRAB events.

	(fixup_event, append_event, fill_key_event_string): New functions,
	code refactoring.

	(vk_from_char, build_keypress_event, build_keyrelease_event):
	Removed as part of dropping WM_CHAR handling.

	(build_key_event_state,gdk_event_translate): Call
	GetKeyboardState(), once, for each keyboard message, instead of
	several calls to GetKeyState() here and there.

	(gdk_event_translate): Fix bugs #104516, #104662, #115902. While
	at it, do some major refactoring, and some fixes for potential
	problems noticed while going through the code.

	Don't handle WM_CHAR at all. Only handle WM_KEYDOWN and
	WM_KEYUP. Don't need the state variables related to whether to
	wait for WM_CHAR or not, and whether the current key is
	AltGr. Remove lots of complexity. Thus don't need the
	use_ime_composition flag.

	Not handling WM_CHAR means dead key handling will have to be taken
	care of by GTK, but that seems to work fine, so no worry.

	Another side-effect is that Alt+keypad digits don't work any
	longer, but it's better to learn to use GTK's ISO14755 support is
	anyway.

	Be more careful in checking whether AltGr is involved. Only
	attempt to handle it if the keyboard actually has it. And
	explicitly check for *left* Control plus *right* Alt being
	pressed. Still, allow (left) Alt and/or (right) Control with AltGr
	chars.

	Handle keys using similar code as in the X11 backend. As we have
	built a keymap in gdkkeys-win32.c anyway, use it by calling
	gdk_keymap_translate_keyboard_state() to look up the keysym from
	the virtual key code and keyboard state. Build the key event
	string in exactly the same way as the X11 backend.

	If an IME is being used, don't generate GDK events for keys
	between receiving WM_IME_STARTCOMPOSITION and
	WM_IME_ENDCOMPOSITION, as those keys are for the IME.

	For WM_IME_COMPOSITION, handle all the Unicode chars returned from
	the IME, not just the first one.

	gdk_event_translate() is still quite complex, could split the
	message handler cases out into separate functions.

	On mouse events, when the mouse is grabbed, use
	find_real_window_for_grabbed_mouse_event() in order to be able to
	generate correct crossing events.

	No longer take a pre-allocated GdkEvent as parameter. Instead,
	allocate events as needed and append them to the queue. (This is
	different from how gdk_event_translate() in the X11 backend
	works.) This change made the code much clearer, especially in the
	cases where we have to generate several GDK events for one Windows
	message.  Return FALSE if DefWindowProc() should be called, TRUE
	if not. If DefWindowProc() should not be called, also return the
	value to be returned from the window procedure.

	(Previously, the interaction with gdk_event_translate()'s caller
	was much more complex, when we had to indicate whether the
	already-queued event should be left in the queue or removed, and
	in addition also had to indicate whether to call DefWindowProc()
	or not, and what value to return from the window procedure if
	not.)

	Don't use a separate "private" variable required to be pointing to
	the GdkWindowObject of the "window" variable at all times. Just
	use casts, even if looks a bit uglier.

	Notice destroyed windows as early as possible, and break out of
	the messsage switch.

	Use _gdk_pointer_root as current_window when the pointer is
	outside GDK's top-level windows.

	On WM_INPUTLANGCHANGE, set _gdk_input_locale_is_ime as
	appropriate, based on ImmIsIME().

	(gdk_event_translate, gdk_event_send_client_message_for_display,
	gdk_screen_broadcast_client_message): Implement client messages.
	Use a registered Windows message to pass GDK client messages. Note
	that the amount of user data is restricted to four bytes, as it is
	carried in the LPARAM. (The WPARAM is used for the message type
	"atom".)

	(real_window_procedure): Adapt for new gdk_event_translate()
	interface.

	* gdk/win32/gdkmain-win32.c (_gdk_windowing_init): Set
	_gdk_input_locale_is_ime initially.

	* gdk/win32/gdkwindow-win32.c: Use g_object_ref()/unref() instead
	of g_colormap_ref()/unref().

	(gdk_window_new): Made code a bit more like the X11 one, pretend
	to handle screens (although we just have one for now).

	* gdk/x11/gdkevents-x11.c
	(gdk_event_send_client_message_for_display,
	gdk_screen_broadcast_client_message): Document the user data
	limitation on Win32.

	* gdk/win32/gdkevents-win32.c (print_event): More complete enter
	and leave notify detail output.

	* gdk/win32/gdkkeys-win32.c (update_keymap): Make dead keys
	visible to GDK and GTK. Store the corresponding GDK_dead_* keysym
	for those, so that the GtkIMContextCimple compose tables will
	work. Deduce if the keyboard layout has the AltGr key, and set the
	above flag accordingly.
2003-07-26 01:54:59 +00:00
Matthias Clasen
5cc215cddf Remove redundant doc comments. 2002-10-23 21:03:35 +00:00
Eric Warmenhoven
393ad7381e Move gdk_keval_name and gdk_keyval_from_name to new gdkkeynames.c, share
Fri Sep 27 14:30:34 2002 Eric Warmenhoven <eric@warmenhoven.org>

	* gdk/Makefile.am gdk/gdkkeynames.c gdk/linux-fb/gdkmain-fb.c
	gdk/win32/gdkkeys-win32.c: Move gdk_keval_name and
	gdk_keyval_from_name to new gdkkeynames.c, share implementation for
	linux-fb and win32 (#94123)

	* gdk/linux-fb/Makefile.am gdk/linux-fb/gdkkeyboard-fb.c
	gdk/linux-fb/gdkmain-fb.c gdk/linux-fb/gdkmouse-fb.c: add
	-DG_DISABLE_DEPRECATED and -DGDK_PIXBUF_DISABLE_DEPRECATED to compile
	flags

	* gdk/linux-fb/gdkdisplay-fb.c: prevent segfault if display can't
	initialize

	* gdk/linux-fb/gdkkeyboard-fb.c: better parsing of keycodes

	* gdk/linux-fb/gdkwindow-fb.c: add stubs for new functions
2002-09-27 21:36:11 +00:00
Tor Lillqvist
3e58667f6b Merge from gtk-2-0:
2002-09-12  Tor Lillqvist  <tml@iki.fi>

	Merge from gtk-2-0:

	* gdk/win32/gdkkeys-win32.c (print_keysym_tab): Factor out
	debugging output to new function.
2002-09-11 21:55:48 +00:00
Owen Taylor
28c2b0a31f Renames:
Thu Jun 20 19:41:09 2002  Owen Taylor  <otaylor@redhat.com>

        * gdk/gdkdisplay.h gdk/gdkscreen.h gdk/**.c gtk/*.c
        tests/*.c: Renames:

         gdk_get_default_display => gdk_display_get_default
         gdk_get_default_screen  => gdk_screen_get_default
         gdk_open_display        => gdk_display_open
2002-06-20 23:59:27 +00:00
Owen Taylor
aeaaae04ac Changes multihead reorganizing code for win32 support, mostly from a patch
Wed Jun  5 18:34:47 2002  Owen Taylor  <otaylor@redhat.com>

	Changes multihead reorganizing code for win32 support,
	mostly from a patch by Hans Breuer.

	* gdk/gdkcolor.c gdk/x11/gdkcolor-x11.c gdk/gdkcursor.c
	  gdk/x11/gdkcursor-x11.c gdk/gdkevents.c gdk/x11/gdkevents-x11.c
	  gdk/gdkfont.c gdk/x11/gdkfont-x11.c gdk/gdkkeys.c
	  gdk/x11/gdkkeys-x11.c gdk/gdkimage.c gdk/x11/gdkimage-x11.c
	  gdk/gdkscreen.c gdk/x11/gdkmain-x11.c
	  gdk/gdkdisplay.c gdk/gdkevents-x11.c gdk/gdkpango.c
	  gdk/x11/gdkpango-x11.c gdk/gdkselection.c
	  gdk/x11/gdkselection-x11.c gdk/gdkwindow.c
	  gdk/x11/gdkwindow-x11.c gdk/gdkvisual.c gdk/x11/gdkvisual-x11.c:
	  Move port-independent singlehead wrapper functions into
	  port-independent part of GDK. (#80009)

	* gdk/win32/gdkcolor-win32.c gdk/win32/gdkcursor-win32.c
	  gdk/win32/gdkevents-win32.c gdk/win32/gdkfont-win32.c
	  gdk/win32/gdkimage-win32.c gdk/win32/gdkkeys-win32.c
	  gdk/win32/gdkmain-win32.c gdk/win32/gdkproperty-win32.c
	  gdk/win32/gdkselection-win32.c gdk/win32/gkwindow-win32.c:
	Turn singlehead functions into "multihead" functions that ignore
	their GdkDisplay or GdkScreen arguments.

	* gdk/win32/gdkdrawable-win32.c gdk/win32/gdkevents-win32.c
	gdk/win32/gdkinput-win32.c gdk/win32/gdkprivate-win32.h:
	Misc multihead-compatibility changes.

	* gtk/gtk.def gdk/gdk.def: Update for multihead functions.

	* gdk/gdkcolormap.h gdk/gdkvisual.h gdk/x11/gdkcolormap-x11.c
	gdk/x11/gdkvisual-x11.c: Remove the screen fields
	from the public parts of the colormap/visual structures, add accessors
	instead.

	* gdk/gdkpixbuf-render.c gdk/gdkpixmap.c gdk/gdkrgb.c
	  gdk/x11/gdkcolormap-x11.c gdk/x11/gdkimage-x11.c
	  gdk/x11/gdkimage-x11.c gdk/x11/gdkprivate-x11.h gtk/gtkgc.c
	  gtk/gtkstyle.c gtk/gtkwidget.c: Use accessors to get the screen
	for colormaps, visuals; move the fields into the private
	structures for the x11 backend.

	* gdk/gdkdisplay.[ch] gdk/x11/gdkdisplay-x11.[ch]
	  gdk/gdkscreen.[ch] gdk/x11/gdkscreen-x11.c:
	Remove virtualization of screen and display functions.
	(#79990, patch from Erwann Chenede)

	* gdk/win32/gdkdisplay-x11.c gdk/win32/gdkscreen-win32.c
	gdk/win32/{Makefile.am, makefile.msc, makefile.mingw}:
	New files containing stub implementations of Display,
	Screen functions.

	* gdk/x11/gdkscreen-x11.[ch] gdk/x11/gdkdisplay-x11.[ch]
	gdk/x11/gdkx.h: Clean up function exports and what
	headers they are in. (#79954)

	* gdk/x11/gdkx.h: Fix macro that was referring to a non-existant
	screen->screen_num. (In the patch for #79972, Erwann Chenede)

	* gdk/gdkscreen.c gdk/gdkwindow.c gdk/x11/gdkinternals.h
	 gdk/x11/gdkscreen-x11.c: Fix gdk_screen_get_window_at_pointer()
	to use window hooks. (#79972, patch partly from Erwann Chenede)

	* gdk/x11/gdkdisplay-x11.c gdk/x11/gdkevents-x11.c: Fix
	some warnings.
2002-06-06 00:26:42 +00:00
Hans Breuer
fe60d43a26 Fixed dashed line issues (#74441) to an IMO reasonable extend. That is:
2002-03-29  Hans Breuer  <hans@breuer.org>

	Fixed dashed line issues (#74441) to an IMO reasonable extend.
	That is: use PS_USERSTYLE on WinNT (the next GDI limit appears
	to be with lines width > 50); Render horizontal and vertical
	dashed lines on Win9x 'by hand'. Dotted selection rectangles
	and Dia look nice ...

	* gdk/win32/gdkprivate-win32.h : add pen_dashes pointer and
	num_pen_dashes to _GdkGCWin32
	* gdk/win32/gdkgc-win32.c : initialize pen_dashes and remove
	the guesses from dashes to windoze line styles.
	(predraw_set_forground) : always ExtCreatePen (PS_SOLID) on
	Win9x, which does not support PS_USERSTYLE.
	* gdk/win32/gdkdrawable-win32.c : new functions render_line_
	<horizontal|vertical>. Use them if not running on NT in
	gdk_win32_draw_<rectangle|segments|lines> ()

	* gdk/win32/gdkkeys-win32.c (gdk_keyval_name) : return NULL
	for keyval == 0 to avoid to have zeros in all menu entries
	without accelerator.
2002-03-28 23:25:33 +00:00
Tor Lillqvist
d0ebbe9d77 Bypass calls to the grab/ungrab functions in gdkinput-win32.c, as they
2002-03-06  Tor Lillqvist  <tml@iki.fi>

	* gdk/win32/gdkevents-win32.c (gdk_pointer_grab,
	gdk_pointer_ungrab): Bypass calls to the grab/ungrab functions in
	gdkinput-win32.c, as they don't effectively do anything anyway.
	(build_key_event_state): Set MOD2 bit if key is in AltGr group.
	(gdk_event_translate): Call _gdk_windowing_window_get_offsets()
	each time the offsets are used, on the window they refer to,
	instead of once in the beginning. The window in question might
	change due to event propagation.
	(gdk_event_translate): Set key event group to 0 for non-AltGr
	keys. Do set the SHIFT bit in the key event state also for
	ISO_Left_Tab. Now backtabbing finally works again.

	* gdk/win32/gdkunput-win32.c: Minor debugging output change.

	* gdk/win32/gdkkeys-win32.c (update_keymap): Set VK_TAB mapping to
	Gdk_Tab and GDK_ISO_Left_Tab, like on X11.
	(gdk_keymap_translate_keyboard_state): Add similar code as in the
	non-XKB case on X11 to generate a more correct
	consumed_modifiers. Add debugging output.
	(gdk_keyval_name): Use the U+xxxx format for UCS characters
	encoded as keyvals. Never return NULL, but hex number
	representation if keyval not in table.

	* gdk/win32/gdkwindow-win32.c (gdk_window_focus): Call
	SetFocus(). Doesn't seem to have any harmful effect, and probably
	is close to what this function is supposed to do. But it didn't
	fix GtkCombo as I had hoped.
	(gdk_window_set_type_hint): Don't intern the _NET_WM_* atoms that
	weren't used and wouldn't have any meaning on Win32 anyway.
2002-03-06 00:36:08 +00:00
Tor Lillqvist
8beceb3846 Remove the event_mask, it is now in GdkWindowObject.
2002-03-01  Tor Lillqvist  <tml@iki.fi>

	* gdk/win32/gdkwindow-win32.h (struct _GdkWindowImplWin32): Remove
	the event_mask, it is now in GdkWindowObject.

	* gdk/win32/gdkwindow-win32.c: Change accordingly. Set the
	GDK_STRUCTURE_MASK in gdk_window_set_events(), as it is always set
	in gdk_window_new(), too. (Bug#72921)

	* gdk/win32/gdkevents-win32.c: Change accordingly here, too.
	(vk_from_char): New function, calculates the virtual keycode
	corresponding to the char in a WM_CHAR message.
	(build_keypress_event, build_keyrelease_event): Use it.
	(build_keypress_event): Call ImmReleaseContext() after using the
	input context. This might plug a memory or resource leak.
	(build_key_event_state): Remove #if 0 code.
	(gdk_event_translate): Actually, it would be preferrable to always
	handle just the WM_KEYDOWN and WM_KEYUP messages, not WM_CHAR at
	all, and thus drop the contorted logic with ignore_wm_char etc.

	* gdk/win32/gdkkeys-win32.c: (gdk_keymap_get_entries_for_keyval):
	Debugging output.
	(gdk_keymap_translate_keyboard_state): Return correct value. (But
	_gtk_key_hash_lookup() doesn't check the return value...)
2002-02-28 23:38:55 +00:00
Hans Breuer
bc94033dd3 new file
2002-02-27  Hans Breuer  <hans@breuer.org>

	* demos/gtk-demo/makefile.msc.in : new file

	* gdk-pixbuf/gtk-pixbuf.rc.in : new file to include
	  version resource
	* gdk-pixbuf/makefile.msc : create and use gdk-pixbuf.res

	* gdk/win32/gdkkeys-win32.c : handle undefined LANG_URDU,
	(gdk_keyval_name) : fix endless looping

	* gtk/gtkfilesel.c : translate_win32_path() static
	* gtk/queryimmodules : print_escaped(), query_module() static

	* gtk/makefile.msc.in : added gtkkeyhash, build gtk-win32.res

	* gtk/stock-icons/makefile.msc : regenerated from directory
	listing (almost all filenames changed)
2002-02-27 16:37:04 +00:00
Owen Taylor
0fd671aed5 Make sure Page_Up, Page_Down get those names, not Prior, Next.
Tue Feb 26 19:16:28 2002  Owen Taylor  <otaylor@redhat.com>

        * gdk/win32/gdkkeys-win32.c (gdk_keyval_name):
        * gdk/x11/gdkkeys-x11.c (gdk_keyval_name):
        Make sure Page_Up, Page_Down get those names, not Prior,
        Next.
2002-02-27 00:24:11 +00:00
Tor Lillqvist
93fa867e14 Implement the functions that until now just were non-functional stubs. For
2002-02-26  Tor Lillqvist  <tml@iki.fi>

	* gdk/win32/gdkkeys-win32.c: Implement the functions that until
	now just were non-functional stubs. For "hardware keycodes", we
	use Windows virtual keycodes. Not scancodes, although that at
	first might seem more low-level and a better match to X11
	keycodes.

	The Windows API is really mixed up and confused with respect to
	scancodes and virtual keycodes. (Surprised?) Some scancodes are
	generated by two keys on the keyboard (!), and although the
	keyboard messages do have a flag to indicate which key the user
	pressed, other API that take a scan code as input don't let you
	specify which actual key you mean.

	(update_keymap): Function to build a X11-like representation of
	the keyboard. Each key has four keysyms: two levels (nonshifted
	and shifted) and two groups (normal and with AltGr).

	(gdk_keymap_get_direction): Use the codepage corresponding to the
	thread's input locale, not the system codepage.

	* gdk/win32/gdkglobals-win32.c
	* gdk/win32/gdkmain-win32.c
	* gdk/win32/gdkprivate-win32.h
	* gdk/win32/gdkwindow-win32.h
	* gdk/win32/gdkwindow-win32.c: Remove the input_locale and
	charset_info fields from GdkWindowImplWin32. Input locale is
	per-thread in Windows, and as GDK on Windows really only works
	when the GDI interaction all happens in just one thread anyway,
	this state can be global. Use globals _gdk_input_locale and
	_gdk_input_codepage instead. Set these based on the thread's input
	locale (keyboard layout, or which IME is active).

	* gdk/win32/gdkevents-win32.c: Set the group and hardware_keycode
	fields in GDK key events. On input locale change messages, set
	the global state variables, and inform update_keymap() that it
	has to rebuild the keymap.
2002-02-26 01:18:27 +00:00
Owen Taylor
708e1a9574 Implement "fuzzy" key binding lookups; allow matches on key and level but
Wed Feb 20 14:26:47 2002  Owen Taylor  <otaylor@redhat.com>

        * gtk/gtkkeyhash.[ch]: Implement "fuzzy" key binding lookups;
        allow matches on key and level but not group. Also, implement
        ignoring "consumed modifiers correctly."

        * gtk/gtkaccelgroup.c gtk/gtkbindings.c: Convert to using
        GtkKeyHash.

        * gtk/gtkdebug.h gtk/gtkmain.c: Support GTK_DEBUG=keybindings

        * gdk/x11/gdkevents-x11.c (gdk_event_translate): Fill in
        the group for key release events as well as key press events.

        * gdk/gdkkeys.h gdk/x11/gdkkeys-x11.c (gdk_keymap_translate_keyboard_state):
        Rename unused_modifiers to consumed_modifiers, make the docs and
        non-Xkb implementation match the Xkb implementation.

        * gdk/linux-fb/gdkkeyboard-fb.c gdk/win32/gdkkeys-win32.c: Propagate
        doc and parameter name changes.

        * gdk/x11/gdkkeys-x11.c (gdk_keymap_translate_keyboard_state):
        XkbTranslateKeyCode doesn't handle LockMask, we need to handle
        it ourselves.

        * gdk/x11/gdkkeys-x11.c (gdk_keymap_translate_keyboard_state): Force
        <Shift>Tab to give GDK_ISO_Left_Tab, since we need consistency
        to allow dealing with ISO_Left_Tab.

        * gtk/gtkwindow.c gtk/gtktextview.c gtk/gtkscrolledwindow.c
        gtk/gtkpaned.c gtk/gtkcombo.c  gtk/gtknotebook.c:
        Remove inappropriate uses of GDK_ISO_Left_Tab. (GDK_ISO_Left_Tab
        or <Shift>Tab both are equivalent as a binding specifier.)

        * gtk/gtkbutton.c (gtk_button_class_init): Make ::activate
        GTK_RUN_ACTION, so you can bind an accelerator to it.

        * gtk/gtklabel.c (gtk_label_set_uline_text_internal): Call
        gdk_unicode_to_keyval on the mnemonic character.

        * tests/testgtk.c: Add a test for the new fuzzy key binding matching.
2002-02-21 17:14:10 +00:00
Tor Lillqvist
bc1ec5c14a Massive changes. Too many to list here, but I'll try a summary:
2002-02-17  Tor Lillqvist  <tml@iki.fi>

	* gdk/win32/*.c: Massive changes. Too many to list here, but I'll
	try a summary:

	1) Unify GdkPixmap and GdkImage implementation: For each
	GdkPixmap, allocate a GdkImage, and vice versa.
	GdkPixmapImplWin32Data has a pointer to the GdkImage.
	GdkImage::windowing_data is a pointer to the GdkPixmap.

	This simplifies many pixmap and image related functions a lot, and
	reduces duplicated code snippets. For instance, there is only one
	place in gdk/win32 where CreateDIBSection() is called, in the
	function _gdk_win32_new_pixmap(). Converting a bitmap (GdkPixmap)
	to a Windows region is almost trivial, with the bitmap bits being
	readily accessible in the associated GdkImage.

	All blitting between GdkPixmaps, GdkWindows and GdkImages goes
	through handled the _gdk_win32_blit() function, which calls
	different functions to handle the cases of blitting from pixmaps,
	inside windows (scrolling), or from windows, which all require
	somewhat different handling.

	2) Support 256-color mode. This has long been very broken, now it
	works more or less OK. Keep the logical palette for each colormap
	as small as possible while allocating and freeing colors. Select
	and realize the logical palette associated with a GdkColormap into
	a DC before drawing or blitting.

	When the display is in 256-color mode, make it possible for the
	user to override the size of the palette(s) used with either the
	GDK_WIN32_MAX_COLORS environment variable, or a -max-colors
	command line option. It is possible to reduce the palette size all
	the way down to using just the 16 static colors (which causes the
	system visual to be of type GDK_VISUAL_STATIC_COLOR. This could
	possibly be useful if one desperately wants to avoid color
	flashing. (Note that in order for this to work properly, an as of
	yet not commited fix to gdkrgb.c is needed.)

	Handle the palette messages. On WM_PALETTECHANGED, call
	UpdateColors() for the given window hierarchy. Do this only if a
	window in some other top-level window hierarchy caused the palette
	change (realized a palette). Do this max five times in a row (an
	arbitrarily chosen limit), though, otherwise redraw by generating
	expose events. On WM_QUERYNEWPALETTE, cause a redraw of the whole
	window hierarchy by generating GDK_EXPOSE events.

	3) Code cleanup in general. For instance, remove the "emulated"
	X11 structs ColormapStruct, Visual and XStandardColormap. Use the
	new GDK_DEBUG_* flags for debugging output in the relevant source
	files. Remove the unused colormap hash table in gdkcolor-win32.c

	4) Plug some resource leaks.

2002-02-14  Tor Lillqvist  <tml@iki.fi>

	* gdk/win32/gdkdnd-win32.c (gdk_dropfiles_filter): Use
	g_filename_to_uri() to actually create legal URIs in the
	text/uri-list data.
2002-02-17 00:25:05 +00:00
Hans Breuer
f0ee2996e1 updated externals
2001-06-22  Hans Breuer  <hans@breuer.org>

	* gdk/gdk.def : updated externals

	* gdk/win32/gdkdrawable-win32.c : corrected some casts
	in GDK_NOTEs

	* gdk/win32/gdkevents-win32.c : use _gdk_windowing_window_get_offsets
	to translate coordinates to the internal > 16 bit system
	Try to handle WM_WINDOWPOSCHANGED to get better performance for
	when moving/resizing

	* gdk/win32/gdkkeys-win32.c : implement gdk_keymap_get_default ()
	and gdk_keymap_get_direction (). The latter is untested for
	the RTL case

	* gtk/gtk.def : updated externals

	* gtk/gtkmain.c : gtk_get_default_language () should reurn the result
	from pango_language_from_string (), not an already freed pointer

	* gtk/stock-icons/stock_menu_sort_ascending.png : PNGs need to be
	binary (-kb) to be useable on windoze
2001-06-22 14:08:51 +00:00
Hans Breuer
6fb6363e30 updated for win32 msvc build (forgot this before) 2001-02-19 22:02:23 +00:00
Tor Lillqvist
2e70f892cc Add gdkkeys.
2000-12-15  Tor Lillqvist  <tml@iki.fi>

	* gdk/makefile.{mingw.in,msc} (gdk_OBJECTS): Add gdkkeys.

	* gtk/gtk.def
	* gdk/gdk.def: Update.

	* gdk/win32/gdkmain-win32.c
	* gdk/win32/gdkkeys-win32.c: New file. Move some functions from
	gdkmain-win32.c here.

	* gdk/win32/makefile.mingw.in (all): No need to make
	gdk-win32res.o here, the makefile one step up will call us to make
	it.

	* gdk/win32/makefile.{mingw.in,msc} (gdk_win32_OBJECTS): Add
	gdkkeys-win32.

	* gdk/win32/gdkcolor-win32.c: Silence gcc -Wall.

	* gdk/win32/gdkevents-win32.c (gdk_events_init): Remove leftover
	call to g_source_add().

	* gdk/win32/gdkgc-win32.c (BitmapToRegion): Plug memory
	leak. Thanks to Andreas Kemnade.
2000-12-14 23:14:18 +00:00