mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 19:00:08 +00:00
win32: Implement GetSystemMetric() fallbacks
Default values taken from Wine.
This commit is contained in:
parent
c2dd3c0d89
commit
c73db50aed
@ -179,7 +179,126 @@ gtk_win32_get_theme_margins (const char *class_name,
|
||||
}
|
||||
}
|
||||
|
||||
struct {
|
||||
static int
|
||||
FIXME_IMPLEMENT (int id)
|
||||
{
|
||||
g_warning ("win32 sys metric %d not implemented", id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct {
|
||||
const char *name;
|
||||
int value;
|
||||
int (* get_value) (int id);
|
||||
} win32_default_metrics[] = {
|
||||
{ "cxscreen", 0, FIXME_IMPLEMENT },
|
||||
{ "cyscreen", 0, FIXME_IMPLEMENT },
|
||||
{ "cxvscroll", 16, NULL },
|
||||
{ "cyhscroll", 16, NULL },
|
||||
{ "cycaption", 16, NULL },
|
||||
{ "cxborder", 1, NULL },
|
||||
{ "cyborder", 1, NULL },
|
||||
{ "cxdlgframe", 3, NULL },
|
||||
{ "cydlgframe", 3, NULL },
|
||||
{ "cyvthumb", 16, NULL },
|
||||
{ "cxhthumb", 16, NULL },
|
||||
{ "cxicon", 32, NULL },
|
||||
{ "cyicon", 32, NULL },
|
||||
{ "cxcursor", 32, NULL },
|
||||
{ "cycursor", 32, NULL },
|
||||
{ "cymenu", 19, NULL },
|
||||
{ "cxfullscreen", 0, FIXME_IMPLEMENT },
|
||||
{ "cyfullscreen", 0, FIXME_IMPLEMENT },
|
||||
{ "cykanjiwindow", 0, NULL },
|
||||
{ "mousepresent", 1, NULL },
|
||||
{ "cyvscroll", 16, NULL },
|
||||
{ "cxhscroll", 16, NULL },
|
||||
{ "debug", 0, NULL },
|
||||
{ "swapbutton", 0, NULL },
|
||||
{ "reserved1", 0, NULL },
|
||||
{ "reserved2", 0, NULL },
|
||||
{ "reserved3", 0, NULL },
|
||||
{ "reserved4", 0, NULL },
|
||||
{ "cxmin", 112, NULL },
|
||||
{ "cymin", 24, NULL },
|
||||
{ "cxsize", 18, NULL },
|
||||
{ "cysize", 15, NULL },
|
||||
{ "cxframe", 4, NULL },
|
||||
{ "cyframe", 4, NULL },
|
||||
{ "cxmintrack", 112, NULL },
|
||||
{ "cymintrack", 24, NULL },
|
||||
{ "cxdoubleclk", 0, FIXME_IMPLEMENT },
|
||||
{ "cydoubleclk", 0, FIXME_IMPLEMENT },
|
||||
{ "cxiconspacing", 75, NULL },
|
||||
{ "cyiconspacing", 75, NULL },
|
||||
{ "menudropalignment", 0, NULL },
|
||||
{ "penwindows", 0, NULL },
|
||||
{ "dbcsenabled", 1, NULL },
|
||||
{ "cmousebuttons", 3, NULL },
|
||||
{ "secure", 0, NULL },
|
||||
{ "cxedge", 2, NULL },
|
||||
{ "cyedge", 2, NULL },
|
||||
{ "cxminspacing", 160, NULL },
|
||||
{ "cyminspacing", 21, NULL },
|
||||
{ "cxsmicon", 16, NULL },
|
||||
{ "cysmicon", 16, NULL },
|
||||
{ "cysmcaption", 16, NULL },
|
||||
{ "cxsmsize", 15, NULL },
|
||||
{ "cysmsize", 15, NULL },
|
||||
{ "cxmenusize", 18, NULL },
|
||||
{ "cymenusize", 18, NULL },
|
||||
{ "arrange", 8, NULL },
|
||||
{ "cxminimized", 160, NULL },
|
||||
{ "cyminimized", 21, NULL },
|
||||
{ "cxmaxtrack", 0, FIXME_IMPLEMENT },
|
||||
{ "cymaxtrack", 0, FIXME_IMPLEMENT },
|
||||
{ "cxmaximized", 0, FIXME_IMPLEMENT },
|
||||
{ "cymaximized", 0, FIXME_IMPLEMENT },
|
||||
{ "network", 3, NULL },
|
||||
{ NULL, 0, NULL },
|
||||
{ NULL, 0, NULL },
|
||||
{ NULL, 0, NULL },
|
||||
{ "cleanboot", 0, NULL },
|
||||
{ "cxdrag", 4, NULL },
|
||||
{ "cydrag", 4, NULL },
|
||||
{ "showsounds", 0, NULL },
|
||||
{ "cxmenucheck", 13, NULL },
|
||||
{ "cymenucheck", 13, NULL },
|
||||
{ "slowmachine", 0, NULL },
|
||||
{ "mideastenabled", 0, NULL },
|
||||
{ "mousewheelpresent", 1, NULL },
|
||||
{ "xvirtualscreen", 0, FIXME_IMPLEMENT },
|
||||
{ "yvirtualscreen", 0, FIXME_IMPLEMENT },
|
||||
{ "cxvirtualscreen", 0, FIXME_IMPLEMENT },
|
||||
{ "cyvirtualscreen", 0, FIXME_IMPLEMENT },
|
||||
{ "cmonitors", 0, FIXME_IMPLEMENT },
|
||||
{ "samedisplayformat", 1, NULL },
|
||||
{ "immenabled", 1, NULL },
|
||||
{ "cxfocusborder", 1, NULL },
|
||||
{ "cyfocusborder", 1, NULL },
|
||||
{ NULL, 0, NULL },
|
||||
{ "tabletpc", 0, NULL },
|
||||
{ "mediacenter", 0, NULL },
|
||||
{ "starter", 0, NULL },
|
||||
{ "serverr2", 0, NULL },
|
||||
{ "cmetrics", 90, NULL },
|
||||
{ "mousehorizontalwheelpresent", 0, NULL },
|
||||
{ "cxpaddedborder", 0, NULL }
|
||||
};
|
||||
|
||||
int
|
||||
gtk_win32_get_sys_metric (gint id)
|
||||
{
|
||||
if (id >= 0 && id < G_N_ELEMENTS (win32_default_metrics))
|
||||
return 0;
|
||||
|
||||
if (win32_default_metrics[id].get_value)
|
||||
return win32_default_metrics[id].get_value (id);
|
||||
|
||||
return win32_default_metrics[id].value;
|
||||
}
|
||||
|
||||
static struct {
|
||||
const char *name;
|
||||
GdkRGBA rgba;
|
||||
} win32_default_colors[] = {
|
||||
|
@ -59,6 +59,98 @@ enum {
|
||||
GTK_WIN32_SYS_COLOR_MENUBAR
|
||||
};
|
||||
|
||||
enum {
|
||||
GTK_WIN32_SYS_METRIC_CXSCREEN = 0,
|
||||
GTK_WIN32_SYS_METRIC_CYSCREEN = 1,
|
||||
GTK_WIN32_SYS_METRIC_CXVSCROLL = 2,
|
||||
GTK_WIN32_SYS_METRIC_CYHSCROLL = 3,
|
||||
GTK_WIN32_SYS_METRIC_CYCAPTION = 4,
|
||||
GTK_WIN32_SYS_METRIC_CXBORDER = 5,
|
||||
GTK_WIN32_SYS_METRIC_CYBORDER = 6,
|
||||
GTK_WIN32_SYS_METRIC_CXDLGFRAME = 7,
|
||||
GTK_WIN32_SYS_METRIC_CYDLGFRAME = 8,
|
||||
GTK_WIN32_SYS_METRIC_CYVTHUMB = 9,
|
||||
GTK_WIN32_SYS_METRIC_CXHTHUMB = 10,
|
||||
GTK_WIN32_SYS_METRIC_CXICON = 11,
|
||||
GTK_WIN32_SYS_METRIC_CYICON = 12,
|
||||
GTK_WIN32_SYS_METRIC_CXCURSOR = 13,
|
||||
GTK_WIN32_SYS_METRIC_CYCURSOR = 14,
|
||||
GTK_WIN32_SYS_METRIC_CYMENU = 15,
|
||||
GTK_WIN32_SYS_METRIC_CXFULLSCREEN = 16,
|
||||
GTK_WIN32_SYS_METRIC_CYFULLSCREEN = 17,
|
||||
GTK_WIN32_SYS_METRIC_CYKANJIWINDOW = 18,
|
||||
GTK_WIN32_SYS_METRIC_MOUSEPRESENT = 19,
|
||||
GTK_WIN32_SYS_METRIC_CYVSCROLL = 20,
|
||||
GTK_WIN32_SYS_METRIC_CXHSCROLL = 21,
|
||||
GTK_WIN32_SYS_METRIC_DEBUG = 22,
|
||||
GTK_WIN32_SYS_METRIC_SWAPBUTTON = 23,
|
||||
GTK_WIN32_SYS_METRIC_RESERVED1 = 24,
|
||||
GTK_WIN32_SYS_METRIC_RESERVED2 = 25,
|
||||
GTK_WIN32_SYS_METRIC_RESERVED3 = 26,
|
||||
GTK_WIN32_SYS_METRIC_RESERVED4 = 27,
|
||||
GTK_WIN32_SYS_METRIC_CXMIN = 28,
|
||||
GTK_WIN32_SYS_METRIC_CYMIN = 29,
|
||||
GTK_WIN32_SYS_METRIC_CXSIZE = 30,
|
||||
GTK_WIN32_SYS_METRIC_CYSIZE = 31,
|
||||
GTK_WIN32_SYS_METRIC_CXFRAME = 32,
|
||||
GTK_WIN32_SYS_METRIC_CYFRAME = 33,
|
||||
GTK_WIN32_SYS_METRIC_CXMINTRACK = 34,
|
||||
GTK_WIN32_SYS_METRIC_CYMINTRACK = 35,
|
||||
GTK_WIN32_SYS_METRIC_CXDOUBLECLK = 36,
|
||||
GTK_WIN32_SYS_METRIC_CYDOUBLECLK = 37,
|
||||
GTK_WIN32_SYS_METRIC_CXICONSPACING = 38,
|
||||
GTK_WIN32_SYS_METRIC_CYICONSPACING = 39,
|
||||
GTK_WIN32_SYS_METRIC_MENUDROPALIGNMENT = 40,
|
||||
GTK_WIN32_SYS_METRIC_PENWINDOWS = 41,
|
||||
GTK_WIN32_SYS_METRIC_DBCSENABLED = 42,
|
||||
GTK_WIN32_SYS_METRIC_CMOUSEBUTTONS = 43,
|
||||
GTK_WIN32_SYS_METRIC_SECURE = 44,
|
||||
GTK_WIN32_SYS_METRIC_CXEDGE = 45,
|
||||
GTK_WIN32_SYS_METRIC_CYEDGE = 46,
|
||||
GTK_WIN32_SYS_METRIC_CXMINSPACING = 47,
|
||||
GTK_WIN32_SYS_METRIC_CYMINSPACING = 48,
|
||||
GTK_WIN32_SYS_METRIC_CXSMICON = 49,
|
||||
GTK_WIN32_SYS_METRIC_CYSMICON = 50,
|
||||
GTK_WIN32_SYS_METRIC_CYSMCAPTION = 51,
|
||||
GTK_WIN32_SYS_METRIC_CXSMSIZE = 52,
|
||||
GTK_WIN32_SYS_METRIC_CYSMSIZE = 53,
|
||||
GTK_WIN32_SYS_METRIC_CXMENUSIZE = 54,
|
||||
GTK_WIN32_SYS_METRIC_CYMENUSIZE = 55,
|
||||
GTK_WIN32_SYS_METRIC_ARRANGE = 56,
|
||||
GTK_WIN32_SYS_METRIC_CXMINIMIZED = 57,
|
||||
GTK_WIN32_SYS_METRIC_CYMINIMIZED = 58,
|
||||
GTK_WIN32_SYS_METRIC_CXMAXTRACK = 59,
|
||||
GTK_WIN32_SYS_METRIC_CYMAXTRACK = 60,
|
||||
GTK_WIN32_SYS_METRIC_CXMAXIMIZED = 61,
|
||||
GTK_WIN32_SYS_METRIC_CYMAXIMIZED = 62,
|
||||
GTK_WIN32_SYS_METRIC_NETWORK = 63,
|
||||
GTK_WIN32_SYS_METRIC_CLEANBOOT = 67,
|
||||
GTK_WIN32_SYS_METRIC_CXDRAG = 68,
|
||||
GTK_WIN32_SYS_METRIC_CYDRAG = 69,
|
||||
GTK_WIN32_SYS_METRIC_SHOWSOUNDS = 70,
|
||||
GTK_WIN32_SYS_METRIC_CXMENUCHECK = 71,
|
||||
GTK_WIN32_SYS_METRIC_CYMENUCHECK = 72,
|
||||
GTK_WIN32_SYS_METRIC_SLOWMACHINE = 73,
|
||||
GTK_WIN32_SYS_METRIC_MIDEASTENABLED = 74,
|
||||
GTK_WIN32_SYS_METRIC_MOUSEWHEELPRESENT = 75,
|
||||
GTK_WIN32_SYS_METRIC_XVIRTUALSCREEN = 76,
|
||||
GTK_WIN32_SYS_METRIC_YVIRTUALSCREEN = 77,
|
||||
GTK_WIN32_SYS_METRIC_CXVIRTUALSCREEN = 78,
|
||||
GTK_WIN32_SYS_METRIC_CYVIRTUALSCREEN = 79,
|
||||
GTK_WIN32_SYS_METRIC_CMONITORS = 80,
|
||||
GTK_WIN32_SYS_METRIC_SAMEDISPLAYFORMAT = 81,
|
||||
GTK_WIN32_SYS_METRIC_IMMENABLED = 82,
|
||||
GTK_WIN32_SYS_METRIC_CXFOCUSBORDER = 83,
|
||||
GTK_WIN32_SYS_METRIC_CYFOCUSBORDER = 84,
|
||||
GTK_WIN32_SYS_METRIC_TABLETPC = 86,
|
||||
GTK_WIN32_SYS_METRIC_MEDIACENTER = 87,
|
||||
GTK_WIN32_SYS_METRIC_STARTER = 88,
|
||||
GTK_WIN32_SYS_METRIC_SERVERR2 = 89,
|
||||
GTK_WIN32_SYS_METRIC_CMETRICS = 90,
|
||||
GTK_WIN32_SYS_METRIC_MOUSEHORIZONTALWHEELPRESENT = 91,
|
||||
GTK_WIN32_SYS_METRIC_CXPADDEDBORDER = 92
|
||||
};
|
||||
|
||||
void gtk_win32_draw_theme_background (cairo_t *cr,
|
||||
const char *class_name,
|
||||
int part,
|
||||
@ -75,6 +167,7 @@ void gtk_win32_get_theme_margins (const char
|
||||
int state,
|
||||
GtkBorder *out_margins);
|
||||
|
||||
int gtk_win32_get_sys_metric (gint id);
|
||||
void gtk_win32_get_sys_color (gint id,
|
||||
GdkRGBA *color);
|
||||
|
||||
|
@ -495,7 +495,7 @@ gtk_win32_theme_get_size (GtkWin32Theme *theme,
|
||||
|
||||
return GetSystemMetrics (id);
|
||||
#else
|
||||
return -1;
|
||||
return gtk_win32_get_sys_metric (id);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user