1999-11-11 22:12:27 +00:00
|
|
|
/* GDK - The GIMP Drawing Kit
|
|
|
|
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
Apply the same fixes and improvements as to the gtk-1-3-win32-production
2002-01-10 Tor Lillqvist <tml@iki.fi>
Apply the same fixes and improvements as to the
gtk-1-3-win32-production branch: Bug fixes and cleanup of
selection and DND functionality. Still doesn't work as well as the
win32-production branch, though, but getting closer.
After this, need to add Archaeopteryx Software's OLE2 DND support.
* gdk/win32/gdkselection-win32.c (gdk_selection_owner_set,
gdk_selection_send_notify, generate_selection_notify): Don't use
SendMessage() to generate events for the same app, instead use
gdk_event_put().
* gdk/win32/gdkprivate-win32.h
* gdk/win32/gdkglobals-win32.c
* gdk/win32/gdkmain-win32.c
* gdk/win32/gdkevents-win32.c: Thus, remove declaration, definition,
initialisation and handling of gdk_selection_notify_msg,
gdk_selection_request_msg and gdk_selection_clear_msg.
* gdk/win32/gdkselection-win32.c (gdk_text_property_to_text_list,
gdk_free_text_list, gdk_string_to_compound_text,
gdk_free_compound_text): Implement trivially, witrh a text_list
always having a single element, and a compound text always
consisting of just a single (UTF-8!) string. Let's see how well
this works.
* gdk/win32/gdkselection-win32.c (gdk_selection_convert): Fix
non-ASCII paste from the clipboard: Try getting the same formats
from the Windows clipboard that gdk_property_change() puts there:
CF_UNICODETEXT, UTF8_STRING or CF_TEXT+CF_LOCALE.
* gdk/win32/gdkproperty-win32.c (gdk_property_change): When
storing text on the clipboard, handle non-ASCII text
correctly. The logic is as follows:
If we have only ASCII characters, use CF_TEXT.
Else, if we are on NT, use CF_UNICODETEXT.
Else (we are on Win9x), if all the characters are present in the
code page of some installed locale, use CF_TEXT and also set
CF_LOCALE to that locale.
Else (still on Win9x) store as RTF. We use a very simple RTF
string, just the text, no fonts or other crap, with the non-ASCII
characters as Unicode \uN keywords. Additionally, also store the
UTF-8 string as such, under the format "UTF8_STRING", so that GDK
can also paste from the Clipboard what it has copied there. (Thus
no need to implement any RTF parser.)
(find_common_locale): New function, implements the search for a
locale for case 3 above.
* gdk/win32/gdkglobals-win32.c: New global variables
compound_text, text_uri_list, utf8_string, cf_rtf and
cf_utf8_string.
* gdk/win32/gdkim-win32.c (_gdk_ucs2_to_utf8): New function,
converts from a wchar_t string to UTF-8.
(_gdk_utf8_to_ucs2): Rename from _gdk_win32_nmbstowchar_ts.
(_gdk_utf8_to_wcs): Rename from gdk_nmbstowchar_ts.
* gdk/win32/gdkevents-win32.c (build_keypress_event): Use
_gdk_ucs2_to_utf8().
* gdk/win32/gdkselection-win32.c: Remove some unnecessary logging.
* gdk/win32/gdkdnd-win32.c: Plug memory leaks, the
gdk_drag_context_ref() was called unnecessarily in a couple of
places, meaning drag contexts were never freed. The same memory
leaks seem to be present in gdk/linux-fb/gdkselection-fb.c, BTW.
(gdk_drop_reply): For WIN32_DROPFILES drops, free the temporarily
stored file list.
* gdk/win32/gdkselection-win32.c: Clarify the use of the
sel_prop_table. Now it is used only for storing the GDK_SELECTION
"properties".
The file names dropped with WM_DROPFILES -style DND is stored
temporarily (between the drop and the target picking them up) in a
separate place.
Have a separate hash table to map selection atoms to owner
windows. This used to be quite mixed up.
(_gdk_dropfiles_store): New function, to store the dropped file
list for the drop target to possibly fetch, and clear it
afterwards, from gdk_drop_reply().
(gdk_selection_owner_get): Much simplified now.
2002-01-10 00:53:39 +00:00
|
|
|
* Copyright (C) 1998-2002 Tor Lillqvist
|
1999-11-11 22:12:27 +00:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
2000-07-26 11:33:08 +00:00
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
1999-11-11 22:12:27 +00:00
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
2000-07-26 11:33:08 +00:00
|
|
|
* Lesser General Public License for more details.
|
1999-11-11 22:12:27 +00:00
|
|
|
*
|
2000-07-26 11:33:08 +00:00
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
2012-02-27 13:01:10 +00:00
|
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
1999-11-11 22:12:27 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
2000-07-26 11:33:08 +00:00
|
|
|
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
1999-11-11 22:12:27 +00:00
|
|
|
* file for a list of people on the GTK+ Team. See the ChangeLog
|
|
|
|
* files for a list of changes. These files are distributed with
|
2015-04-29 07:31:08 +00:00
|
|
|
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
1999-11-11 22:12:27 +00:00
|
|
|
*/
|
|
|
|
|
2008-06-22 14:28:52 +00:00
|
|
|
#include "config.h"
|
1999-11-11 22:12:27 +00:00
|
|
|
#include <string.h>
|
Apply the same fixes and improvements as to the gtk-1-3-win32-production
2002-01-10 Tor Lillqvist <tml@iki.fi>
Apply the same fixes and improvements as to the
gtk-1-3-win32-production branch: Bug fixes and cleanup of
selection and DND functionality. Still doesn't work as well as the
win32-production branch, though, but getting closer.
After this, need to add Archaeopteryx Software's OLE2 DND support.
* gdk/win32/gdkselection-win32.c (gdk_selection_owner_set,
gdk_selection_send_notify, generate_selection_notify): Don't use
SendMessage() to generate events for the same app, instead use
gdk_event_put().
* gdk/win32/gdkprivate-win32.h
* gdk/win32/gdkglobals-win32.c
* gdk/win32/gdkmain-win32.c
* gdk/win32/gdkevents-win32.c: Thus, remove declaration, definition,
initialisation and handling of gdk_selection_notify_msg,
gdk_selection_request_msg and gdk_selection_clear_msg.
* gdk/win32/gdkselection-win32.c (gdk_text_property_to_text_list,
gdk_free_text_list, gdk_string_to_compound_text,
gdk_free_compound_text): Implement trivially, witrh a text_list
always having a single element, and a compound text always
consisting of just a single (UTF-8!) string. Let's see how well
this works.
* gdk/win32/gdkselection-win32.c (gdk_selection_convert): Fix
non-ASCII paste from the clipboard: Try getting the same formats
from the Windows clipboard that gdk_property_change() puts there:
CF_UNICODETEXT, UTF8_STRING or CF_TEXT+CF_LOCALE.
* gdk/win32/gdkproperty-win32.c (gdk_property_change): When
storing text on the clipboard, handle non-ASCII text
correctly. The logic is as follows:
If we have only ASCII characters, use CF_TEXT.
Else, if we are on NT, use CF_UNICODETEXT.
Else (we are on Win9x), if all the characters are present in the
code page of some installed locale, use CF_TEXT and also set
CF_LOCALE to that locale.
Else (still on Win9x) store as RTF. We use a very simple RTF
string, just the text, no fonts or other crap, with the non-ASCII
characters as Unicode \uN keywords. Additionally, also store the
UTF-8 string as such, under the format "UTF8_STRING", so that GDK
can also paste from the Clipboard what it has copied there. (Thus
no need to implement any RTF parser.)
(find_common_locale): New function, implements the search for a
locale for case 3 above.
* gdk/win32/gdkglobals-win32.c: New global variables
compound_text, text_uri_list, utf8_string, cf_rtf and
cf_utf8_string.
* gdk/win32/gdkim-win32.c (_gdk_ucs2_to_utf8): New function,
converts from a wchar_t string to UTF-8.
(_gdk_utf8_to_ucs2): Rename from _gdk_win32_nmbstowchar_ts.
(_gdk_utf8_to_wcs): Rename from gdk_nmbstowchar_ts.
* gdk/win32/gdkevents-win32.c (build_keypress_event): Use
_gdk_ucs2_to_utf8().
* gdk/win32/gdkselection-win32.c: Remove some unnecessary logging.
* gdk/win32/gdkdnd-win32.c: Plug memory leaks, the
gdk_drag_context_ref() was called unnecessarily in a couple of
places, meaning drag contexts were never freed. The same memory
leaks seem to be present in gdk/linux-fb/gdkselection-fb.c, BTW.
(gdk_drop_reply): For WIN32_DROPFILES drops, free the temporarily
stored file list.
* gdk/win32/gdkselection-win32.c: Clarify the use of the
sel_prop_table. Now it is used only for storing the GDK_SELECTION
"properties".
The file names dropped with WM_DROPFILES -style DND is stored
temporarily (between the drop and the target picking them up) in a
separate place.
Have a separate hash table to map selection atoms to owner
windows. This used to be quite mixed up.
(_gdk_dropfiles_store): New function, to store the dropped file
list for the drop target to possibly fetch, and clear it
afterwards, from gdk_drop_reply().
(gdk_selection_owner_get): Much simplified now.
2002-01-10 00:53:39 +00:00
|
|
|
#include <stdlib.h>
|
2002-12-15 01:49:01 +00:00
|
|
|
#include <glib/gprintf.h>
|
2018-11-29 22:19:38 +00:00
|
|
|
#include <pango/pangowin32.h>
|
1999-11-11 22:12:27 +00:00
|
|
|
|
2017-11-03 08:37:18 +00:00
|
|
|
#include "gdkdisplayprivate.h"
|
Large changes to the Win32 backend, partially made necessary by the
2000-05-02 Tor Lillqvist <tml@iki.fi>
Large changes to the Win32 backend, partially made necessary by
the changes to the backend-independent internal
structures. Attempts to implement similar backing store stuff as
on X11. The current (CVS) version of the Win32 backend is *not* as
stable as it was before the no-flicker branch was merged. A
zipfile with that version is available from
http://www.gimp.org/win32/. That should be use by "production"
code until this CVS version is usable. (But note, the Win32
backend has never been claimed to be "production quality".)
* README.win32: Add the above comment about versions.
* gdk/gdkwindow.c: Don't use backing store for now on Win32.
* gdk/gdk.def: Update.
* gdk/gdkfont.h: Declare temporary Win32-only functions. Will
presumably be replaced by some more better mechanism as 1.4 gets
closer to release shape.
* gdk/makefile.{cygwin,msc}: Update.
* gdk/win32/*.c: Correct inclusions of the backend-specific and
internal headers. Change code according to changes in these. Use
gdk_drawable_*, not gdk_window_* where necessary.
* gdk/win32/gdkdnd-win32.c: Use MISC selector for GDK_NOTE, not
our old DND.
* gdk/win32/gdkdrawable-win32.c (gdk_win32_draw_text): Don't try
to interpret single characters as UTF-8. Thanks to Hans Breuer.
Use correct function name in warning messages.
* gdk/win32/gdkevents-win32.c: Use correct parameter lists for the
GSourceFuncs gdk_event_prepare and gdk_event_check.
(gdk_event_get_graphics_expose): Do implement, use
PeekMessage. Thanks to Hans Breuer.
(event_mask_string): Debugging function to print an GdkEventMask.
(gdk_pointer_grab): Use it.
* gdk/win32/gdkfont-win32.c: The Unicode subrange that the
(old) book I used claimed was Hangul actually is CJK Unified
Ideographs Extension A. Also, Hangul Syllables were missing.
Improve logging.
* gdk/win32/gdkgc-win32.c: Largish changes.
* gdk/win32/gdkim-win32.c (gdk_set_locale): Use
g_win32_getlocale() from GLib, and not setlocale() to get current
locale name.
* gdk/win32/gdkprivate-win32.h
* gdk/win32/gdkwin32.h: Move stuff from gdkprivate-win32.h to
gdkwin32.h, similarily as in the X11 backend.
* gdk/win32/gdkwindow-win32.c (gdk_propagate_shapes): Bugfix,
assignment was used instead of equals in if test. Thanks to Hans
Breuer.
* gdk/win32/makefile.{cygwin,msc}
* gtk/makefile.{cygwin,msc}: Updates. Better kludge to get the
path to the Win32 headers that works also with the mingw compiler.
* gtk/gtkstyle.c: Include <string.h>.
2000-05-01 22:06:49 +00:00
|
|
|
#include "gdkprivate-win32.h"
|
2022-08-23 12:49:59 +00:00
|
|
|
#include "gdkdisplay-win32.h"
|
2011-01-02 10:51:25 +00:00
|
|
|
#include "gdkwin32.h"
|
1999-11-11 22:12:27 +00:00
|
|
|
|
2020-07-24 18:40:36 +00:00
|
|
|
static char *
|
2018-11-29 22:19:38 +00:00
|
|
|
_get_system_font_name (HDC hdc)
|
|
|
|
{
|
|
|
|
NONCLIENTMETRICSW ncm;
|
|
|
|
PangoFontDescription *font_desc;
|
2020-07-24 18:40:36 +00:00
|
|
|
char *result, *font_desc_string;
|
2018-11-29 22:19:38 +00:00
|
|
|
int logpixelsy;
|
2020-07-24 13:54:49 +00:00
|
|
|
int font_size;
|
2018-11-29 22:19:38 +00:00
|
|
|
|
|
|
|
ncm.cbSize = sizeof(NONCLIENTMETRICSW);
|
|
|
|
if (!SystemParametersInfoW (SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, 0))
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
logpixelsy = GetDeviceCaps (hdc, LOGPIXELSY);
|
|
|
|
font_desc = pango_win32_font_description_from_logfontw (&ncm.lfMessageFont);
|
|
|
|
font_desc_string = pango_font_description_to_string (font_desc);
|
|
|
|
pango_font_description_free (font_desc);
|
|
|
|
|
|
|
|
/* https://docs.microsoft.com/en-us/windows/desktop/api/wingdi/ns-wingdi-taglogfonta */
|
|
|
|
font_size = -MulDiv (ncm.lfMessageFont.lfHeight, 72, logpixelsy);
|
|
|
|
result = g_strdup_printf ("%s %d", font_desc_string, font_size);
|
|
|
|
g_free (font_desc_string);
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2001-04-13 23:56:19 +00:00
|
|
|
gboolean
|
2020-07-24 18:40:36 +00:00
|
|
|
_gdk_win32_get_setting (const char *name,
|
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
|
|
|
GValue *value)
|
2001-04-13 23:56:19 +00:00
|
|
|
{
|
2022-11-04 14:30:12 +00:00
|
|
|
if (strcmp ("gtk-alternative-button-order", name) == 0)
|
2001-04-13 23:56:19 +00:00
|
|
|
{
|
2022-11-04 14:30:12 +00:00
|
|
|
GDK_NOTE(MISC, g_print("gdk_display_get_setting(\"%s\") : TRUE\n", name));
|
|
|
|
g_value_set_boolean (value, TRUE);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
else if (strcmp ("gtk-alternative-sort-arrows", name) == 0)
|
|
|
|
{
|
|
|
|
GDK_NOTE(MISC, g_print("gdk_display_get_setting(\"%s\") : TRUE\n", name));
|
|
|
|
g_value_set_boolean (value, TRUE);
|
|
|
|
return TRUE;
|
|
|
|
}
|
2022-11-04 14:57:25 +00:00
|
|
|
else if (strcmp ("gtk-cursor-blink", name) == 0)
|
|
|
|
{
|
|
|
|
gboolean blinks = (GetCaretBlinkTime () != INFINITE);
|
|
|
|
GDK_NOTE(MISC, g_print("gdk_display_get_setting(\"%s\") : %s\n", name, blinks ? "TRUE" : "FALSE"));
|
|
|
|
g_value_set_boolean (value, blinks);
|
|
|
|
return TRUE;
|
|
|
|
}
|
2022-11-04 14:56:20 +00:00
|
|
|
else if (strcmp ("gtk-cursor-theme-size", name) == 0)
|
|
|
|
{
|
|
|
|
int cursor_size = GetSystemMetrics (SM_CXCURSOR);
|
|
|
|
GDK_NOTE(MISC, g_print("gdk_display_get_setting(\"%s\") : %d\n", name, cursor_size));
|
|
|
|
g_value_set_int (value, cursor_size);
|
|
|
|
return TRUE;
|
|
|
|
}
|
2022-11-04 14:30:12 +00:00
|
|
|
else if (strcmp ("gtk-dnd-drag-threshold", name) == 0)
|
|
|
|
{
|
|
|
|
int i = MAX(GetSystemMetrics (SM_CXDRAG), GetSystemMetrics (SM_CYDRAG));
|
2017-10-31 04:49:44 +00:00
|
|
|
GDK_NOTE(MISC, g_print("gdk_display_get_setting(\"%s\") : %d\n", name, i));
|
2004-03-07 13:40:19 +00:00
|
|
|
g_value_set_int (value, i);
|
2001-04-13 23:56:19 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
2004-03-07 13:40:19 +00:00
|
|
|
else if (strcmp ("gtk-double-click-distance", name) == 0)
|
2001-04-13 23:56:19 +00:00
|
|
|
{
|
2020-07-24 13:54:49 +00:00
|
|
|
int i = MAX(GetSystemMetrics (SM_CXDOUBLECLK), GetSystemMetrics (SM_CYDOUBLECLK));
|
2017-10-31 04:49:44 +00:00
|
|
|
GDK_NOTE(MISC, g_print("gdk_display_get_setting(\"%s\") : %d\n", name, i));
|
2004-03-07 13:40:19 +00:00
|
|
|
g_value_set_int (value, i);
|
2001-04-13 23:56:19 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
2022-11-04 14:30:12 +00:00
|
|
|
else if (strcmp ("gtk-double-click-time", name) == 0)
|
2004-03-07 13:40:19 +00:00
|
|
|
{
|
2022-11-04 14:30:12 +00:00
|
|
|
int i = GetDoubleClickTime ();
|
2017-10-31 04:49:44 +00:00
|
|
|
GDK_NOTE(MISC, g_print("gdk_display_get_setting(\"%s\") : %d\n", name, i));
|
2004-03-07 13:40:19 +00:00
|
|
|
g_value_set_int (value, i);
|
|
|
|
return TRUE;
|
|
|
|
}
|
2022-11-04 14:30:12 +00:00
|
|
|
else if (strcmp ("gtk-font-name", name) == 0)
|
2004-03-07 13:40:19 +00:00
|
|
|
{
|
2022-11-04 14:30:12 +00:00
|
|
|
char *font_name = _get_system_font_name (_gdk_display_hdc);
|
|
|
|
|
|
|
|
if (font_name)
|
|
|
|
{
|
|
|
|
GDK_NOTE(MISC, g_print("gdk_screen_get_setting(\"%s\") : %s\n", name, font_name));
|
|
|
|
g_value_take_string (value, font_name);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2022-11-04 14:35:04 +00:00
|
|
|
g_warning ("gdk_win32_get_setting: Detecting the system font failed");
|
2022-11-04 14:30:12 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
2004-03-07 13:40:19 +00:00
|
|
|
}
|
2022-11-04 14:59:15 +00:00
|
|
|
else if (strcmp ("gtk-hint-font-metrics", name) == 0)
|
|
|
|
{
|
|
|
|
gboolean hint_font_metrics = TRUE;
|
|
|
|
GDK_NOTE(MISC, g_print("gdk_screen_get_setting(\"%s\") : %s\n", name,
|
|
|
|
hint_font_metrics ? "TRUE" : "FALSE"));
|
|
|
|
g_value_set_boolean (value, hint_font_metrics);
|
|
|
|
return TRUE;
|
|
|
|
}
|
2022-11-04 14:30:12 +00:00
|
|
|
else if (strcmp ("gtk-im-module", name) == 0)
|
2005-05-24 17:49:15 +00:00
|
|
|
{
|
2022-11-04 15:11:27 +00:00
|
|
|
const char *im_module = _gdk_input_locale_is_ime ? "ime" : "";
|
|
|
|
GDK_NOTE(MISC, g_print("gdk_screen_get_setting(\"%s\") : %s\n", name, im_module));
|
|
|
|
g_value_set_static_string (value, im_module);
|
2005-05-24 17:49:15 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
2022-11-04 14:30:12 +00:00
|
|
|
else if (strcmp ("gtk-overlay-scrolling", name) == 0)
|
2006-12-27 19:52:25 +00:00
|
|
|
{
|
2022-11-04 14:30:12 +00:00
|
|
|
DWORD val = 0;
|
|
|
|
DWORD sz = sizeof (val);
|
|
|
|
LSTATUS ret = 0;
|
|
|
|
|
|
|
|
ret = RegGetValueW (HKEY_CURRENT_USER, L"Control Panel\\Accessibility", L"DynamicScrollbars", RRF_RT_DWORD, NULL, &val, &sz);
|
|
|
|
if (ret == ERROR_SUCCESS)
|
|
|
|
{
|
2022-11-04 15:11:27 +00:00
|
|
|
gboolean overlay_scrolling = val != 0;
|
|
|
|
GDK_NOTE(MISC, g_print("gdk_screen_get_setting(\"%s\") : %s\n", name,
|
|
|
|
overlay_scrolling ? "TRUE" : "FALSE"));
|
|
|
|
g_value_set_boolean (value, overlay_scrolling);
|
2022-11-04 14:30:12 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
2006-12-27 19:52:25 +00:00
|
|
|
}
|
2013-11-15 12:51:22 +00:00
|
|
|
else if (strcmp ("gtk-shell-shows-desktop", name) == 0)
|
|
|
|
{
|
2017-10-31 04:49:44 +00:00
|
|
|
GDK_NOTE(MISC, g_print("gdk_display_get_setting(\"%s\") : TRUE\n", name));
|
2013-11-15 12:51:22 +00:00
|
|
|
g_value_set_boolean (value, TRUE);
|
|
|
|
return TRUE;
|
|
|
|
}
|
2022-11-04 14:30:12 +00:00
|
|
|
else if (strcmp ("gtk-split-cursor", name) == 0)
|
2018-12-01 09:38:10 +00:00
|
|
|
{
|
2022-11-04 14:30:12 +00:00
|
|
|
GDK_NOTE(MISC, g_print("gdk_display_get_setting(\"%s\") : FALSE\n", name));
|
|
|
|
g_value_set_boolean (value, FALSE);
|
2018-12-01 09:38:10 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
2022-11-04 14:54:02 +00:00
|
|
|
else if (strcmp ("gtk-theme-name", name) == 0)
|
|
|
|
{
|
|
|
|
HIGHCONTRASTW hc;
|
|
|
|
memset (&hc, 0, sizeof (hc));
|
|
|
|
hc.cbSize = sizeof (hc);
|
|
|
|
if (API_CALL (SystemParametersInfoW, (SPI_GETHIGHCONTRAST, sizeof (hc), &hc, 0)))
|
|
|
|
{
|
|
|
|
if (hc.dwFlags & HCF_HIGHCONTRASTON)
|
|
|
|
{
|
|
|
|
const char *theme_name = "Default-hc";
|
|
|
|
|
|
|
|
GDK_NOTE(MISC, g_print("gdk_display_get_setting(\"%s\") : %s\n", name, theme_name));
|
|
|
|
g_value_set_string (value, theme_name);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2018-12-01 09:38:10 +00:00
|
|
|
else if (strcmp ("gtk-xft-antialias", name) == 0)
|
|
|
|
{
|
|
|
|
GDK_NOTE(MISC, g_print ("gdk_screen_get_setting(\"%s\") : 1\n", name));
|
|
|
|
g_value_set_int (value, 1);
|
|
|
|
return TRUE;
|
|
|
|
}
|
2022-08-23 12:49:59 +00:00
|
|
|
else if (strcmp ("gtk-xft-dpi", name) == 0)
|
|
|
|
{
|
|
|
|
GdkWin32Display *display = GDK_WIN32_DISPLAY (_gdk_display);
|
|
|
|
|
|
|
|
if (display->dpi_aware_type == PROCESS_SYSTEM_DPI_AWARE &&
|
|
|
|
!display->has_fixed_scale)
|
|
|
|
{
|
2022-11-04 14:38:29 +00:00
|
|
|
HDC hdc = GetDC (NULL);
|
|
|
|
|
|
|
|
if (hdc != NULL)
|
2022-08-23 12:49:59 +00:00
|
|
|
{
|
2022-11-04 14:38:29 +00:00
|
|
|
int dpi = GetDeviceCaps (GetDC (NULL), LOGPIXELSX);
|
|
|
|
ReleaseDC (NULL, hdc);
|
|
|
|
|
|
|
|
if (dpi >= 96)
|
|
|
|
{
|
|
|
|
int xft_dpi = 1024 * dpi / display->surface_scale;
|
|
|
|
GDK_NOTE(MISC, g_print ("gdk_screen_get_setting(\"%s\") : %d\n", name, xft_dpi));
|
|
|
|
g_value_set_int (value, xft_dpi);
|
|
|
|
return TRUE;
|
|
|
|
}
|
2022-08-23 12:49:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-11-04 14:30:12 +00:00
|
|
|
else if (strcmp ("gtk-xft-hinting", name) == 0)
|
|
|
|
{
|
|
|
|
GDK_NOTE(MISC, g_print ("gdk_screen_get_setting(\"%s\") : 1\n", name));
|
|
|
|
g_value_set_int (value, 1);
|
|
|
|
return TRUE;
|
|
|
|
}
|
2018-12-01 09:38:10 +00:00
|
|
|
else if (strcmp ("gtk-xft-hintstyle", name) == 0)
|
|
|
|
{
|
|
|
|
g_value_set_static_string (value, "hintfull");
|
|
|
|
GDK_NOTE(MISC, g_print ("gdk_screen_get_setting(\"%s\") : %s\n", name, g_value_get_string (value)));
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
else if (strcmp ("gtk-xft-rgba", name) == 0)
|
|
|
|
{
|
|
|
|
unsigned int orientation = 0;
|
|
|
|
if (SystemParametersInfoW (SPI_GETFONTSMOOTHINGORIENTATION, 0, &orientation, 0))
|
|
|
|
{
|
|
|
|
if (orientation == FE_FONTSMOOTHINGORIENTATIONRGB)
|
|
|
|
g_value_set_static_string (value, "rgb");
|
|
|
|
else if (orientation == FE_FONTSMOOTHINGORIENTATIONBGR)
|
|
|
|
g_value_set_static_string (value, "bgr");
|
|
|
|
else
|
|
|
|
g_value_set_static_string (value, "none");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
g_value_set_static_string (value, "none");
|
|
|
|
|
|
|
|
GDK_NOTE(MISC, g_print ("gdk_screen_get_setting(\"%s\") : %s\n", name, g_value_get_string (value)));
|
|
|
|
return TRUE;
|
|
|
|
}
|
2004-03-07 13:40:19 +00:00
|
|
|
|
|
|
|
return FALSE;
|
Make gdkx.h the only installed header from gdk/x11. All structures in
Fri Sep 7 11:51:44 2001 Owen Taylor <otaylor@redhat.com>
Make gdkx.h the only installed header from gdk/x11.
All structures in gdk/x11 are opaque.
* gdk/x11/Makefile.am gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h:
Don't install gdk{drawable,pixmap,window}-x11.h.
* gdk/x11/{gdkcolormap-x11.c, gdkfont-x11.c, gdkx.h, gdkvisual-x11.c:
Move GdkColormapPrivateX11, GdkFontPrivateX GdkImagePrivateX11,
GdkVisualClass into C files.
* gdk/gdkpixmap-x11.[ch]: Make gdk_pixmap_impl_get_type() static.
* gdk/x11/{gdkcolor-x11.c, gdkcursor-x11.c, gdkdrawable-x11.c,
gdkfont-x11.c, gdkgc-x11.c, gdkx.h, gdkimage-x11,gdkvisual-x11.c}
Add public functions to replace previously exported direct
structure access.
gdk_x11_colormap_get_{xdisplay,xcolormap}
gdk_x11_cursor_get_{xdisplay,xcursor},
gdk_x11_drawable_get_{xdisplay,xcursor,gdk_x11_visual_get_xvisual,
gdk_x11_font_get_{xdisplay,xfont}, gdk_x11_image_get_{xdisplay,ximage},
gdk_x11_gc_get_{xdisplay,ximage}
* gdk/gdkprivate.h gdk/gdkinternals.h: Move GdkColorInfo,
GdkEventFilter, GdkClientFilter, GdkFontPrivate to gdkinternals.
Fix a number of variables and functions that were exported
"accidentally" from GDK.
* gdk/**.[ch]: gdk => _gdk for gdk_visual_init,
gdk_events_init, gdk_input_init, gdk_dnd_init, gdk_image_exit,
gdk_input_exit, gdk_windowing_exit, gdk_event_func, gdk_event_data,
gdk_event_notify, gdk_queued_events, gdk_queued_tail,
gdk_event_new, gdk_events_queue, gdk_events_unqueue,
gdk_event_queue_find_first, gdk_event_queue_remove_link,
gdk_event_queue_append, gdk_event_button_generate,
gdk_debug_flags, gdk_default_filters, gdk_parent_root.
* gdk/x11/{gdkevents-x11.c, gdkglobals-x11.c, gdkimage-x11.c,
gdkmain-x11.c, gdkprivate-x11.h, gdk/x11/gdkwindow-x11.c}:
gdk => _gdk for gdk_event_mask_table, gkd_nevent_masks,
gdk_wm_window_protocols, gdk_leader_window, gdk_xgrab_window,
gdk_use_xshm, gdk_input_ignore_core.
* gdk/x11/xsettings-common.h (xsettings_list_insert): Add
#defines to namespace functions into the private _gdk_
namespace.
* gdk/gdkwindow.[ch] gdk/x11/gdkx.h: Add gdk_get_default_root_window ()
to replace gdk_parent_root exported variable. Adjust and
deprecate GDK_ROOT_PARENT().
* demos/{testpixbuf-drawable.c,testpixbuf-save.c}: Fix
GDK_ROOT_PARENT usage, remove includes of port-specific
headers.
* gdk/{win32,x11,fb}/gdkinput*.[ch]: s/gdk/_gdk/ for
_gdk_input_gxid_host, _gdk_input_gxid_port, _gdk_input_ignore_core,
gdk_input_devices, _gdk_input_windows, gdk_init_input_core.
* gdk/x11/{gdkevents-x11.,c gdkglobals-x11.c, gdkmain-x11.c}
docs/Changes-2.0.txt: Remove gdk_wm_protocols,
gdk_wm_delete_window functions, gdk_wm_take_focus,
use gdk_atom_intern() instead.
* gdk/linux-fb/{gdkselection-fb.c, gdkmain-fb.c, gdkprivatefb.h}
gdk/win32/{gdkselection-win32.c, gdkmgdkwin32.h, gdkprivate-win32.h}
gdk/x11/{gdkselection-x11.c gdkx.h, gtkprivate-x11.h}
gtk/gtkselection.c
Unexport gdk_selection_property, just use
gdk_atom_intern ("GDK_SELECTION").
* gdk/x11/{gdkprivate-x11.h,gdkdrawable-x11h,gdkgc-x11.c,gdkx.h}:
Unexport gdk_drawable_impl_x11_get_type, gdk_gc_x11_get_type,
GDK_GC_X11 cast macros, GdkGCX11 structures, GdkCursorPrivate,
GdkVisualprivate, gdk_x11_gc_flush.
Make a number of public exports of variables into functions
to increase encapsulation.
* gdk/gdkinternals.h gdk/gdkinput.h gdk/gdkevents.h
gdk/linux-fb/gdkmouse-fb.c: gdk_core_pointer => _gdk_core_pointer,
move to gdkinternals.h. Add gdk_device_get_core_pointer ().
* gdk/gdkprivate.h gdk/gdkpango.c gdk/gdkinternals.h
docs/Changes-2.0.txt: Unexport gdk_parent_root, gdk_error_code,
gdk_error_warnings.
* gdk/x11/{gdkcolormap-x11.c, gdkmain-x11.c, gdkx.h}
docs/Changes-2.0.txt:
s/gdk_screen/_gdk_screen/, add gdk_x11_get_default_screen()
s/gdk_root_window/_gdk_root_window/, add gdk_x11_get_default_root_xwindow()
Add gdk_x11_get_default_xdisplay().
* gdk/gdk.h gdk/gdk.c linux-fb/gdkfb.h linux-fb/gdkglobals-fb.c
win32/gdkwin32.h x11/gdkglobals-x11.c gdk/x11/gdkmain-x11.c
gdk/x11/gdkx.h: gdk/gdk.def: Add gdk_get/set_program_class,
Don't export gdk_progclass, move --class command line
option and handling to common portion of GDK.
Miscellaneous fixes:
* gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Fix
g_return_val_if_fail that should have been g_return_if_fail.
* gdk/gdkinternals.h gdk/gdkprivate.h: Move
gdk_synthesize_window_state() to the semi-public gdkprivate.h.
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Remove uneeded
X11 dependency.
* gdk/linux-fb/gdkmain-fb.c gdk/win32/gdkmain-win32.c gdk/TODO:
Remove unused gdk_key_repeat_disable/restore.
* linux-fb/gdkglobals-fb.c win32/gdkglobals-win32.c
x11/gdkglobals-x11.c x11/gdkprivate-x11.h gdk/gdk.def:
Remove unused gdk_null_window_warnings variable.
* gdk/Makefile.am (DIST_SUBDIRS) nanox/*: cvs remove nanox;
it can be retrieved from the repository; it is too far
from functional to be worth having people check out;
it would be easier to start from scratch, I suspect.
* gdk/x11/gdkpixmap-x11.c: Fix lvalue usage of GDK_PIXMAP_XID().
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
Add some space for future expansion to multihead.
* gdk/gdkdrawable.h: Add four reserved function pointers
for future expansion of GdkDrawableClass.
* gtk/gtkwindow.h gtk/gtkinvisible.h: Add reserved pointer
where we can put a GdkScreen * later.
2001-09-07 21:50:20 +00:00
|
|
|
}
|