xp theme definitions for platforms NOT winxp, catch system settings changes, disable theme switching
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2003-10-06 Dom Lachowicz <cinamod@hotmail.com>
|
||||||
|
|
||||||
|
* src/wimp_style_main.c: Catch system settings changes, disable theme and color changes as they're too experimental
|
||||||
|
* src/wimp_style.[ch]: Export some things, make them accept 0 args
|
||||||
|
* src/xp_theme_dfns.h: New file. WinXP's UXTHEME constants, for building on platforms without them
|
||||||
|
* src/xp_theme.c: Should be able to build on Win32 != [WinXP,2k3] now
|
||||||
|
|
||||||
2003-10-03 Dom Lachowicz <cinamod@hotmail.com>
|
2003-10-03 Dom Lachowicz <cinamod@hotmail.com>
|
||||||
|
|
||||||
* src/wimp_style.c wimp_style_main.c: Refactor how we're doing styles. Much faster, lower memory consumption
|
* src/wimp_style.c wimp_style_main.c: Refactor how we're doing styles. Much faster, lower memory consumption
|
||||||
|
@ -263,7 +263,7 @@ setup_menu_settings (void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
setup_system_settings (void)
|
setup_system_settings (void)
|
||||||
{
|
{
|
||||||
GtkSettings * settings;
|
GtkSettings * settings;
|
||||||
|
@ -49,5 +49,6 @@ struct _WimpStyleClass
|
|||||||
|
|
||||||
void wimp_style_register_type (GTypeModule *module);
|
void wimp_style_register_type (GTypeModule *module);
|
||||||
void wimp_style_init (void);
|
void wimp_style_init (void);
|
||||||
|
void setup_system_settings (void);
|
||||||
|
|
||||||
#endif /* WIMP_TYPE_STYLE */
|
#endif /* WIMP_TYPE_STYLE */
|
||||||
|
@ -31,6 +31,12 @@
|
|||||||
#define WM_THEMECHANGED 0x031A /* winxp only */
|
#define WM_THEMECHANGED 0x031A /* winxp only */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* TODO - look into whether we need to handle these:
|
||||||
|
*
|
||||||
|
* WM_STYLECHANGED
|
||||||
|
* WM_PALETTECHANGED
|
||||||
|
*/
|
||||||
|
|
||||||
static GdkFilterReturn
|
static GdkFilterReturn
|
||||||
global_filter_func (void *xevent,
|
global_filter_func (void *xevent,
|
||||||
GdkEvent *event,
|
GdkEvent *event,
|
||||||
@ -40,12 +46,22 @@ global_filter_func (void *xevent,
|
|||||||
|
|
||||||
switch (msg->message)
|
switch (msg->message)
|
||||||
{
|
{
|
||||||
|
#if ENABLE_THEME_CHANGING
|
||||||
|
/* catch theme changes */
|
||||||
case WM_THEMECHANGED:
|
case WM_THEMECHANGED:
|
||||||
case WM_SYSCOLORCHANGE:
|
case WM_SYSCOLORCHANGE:
|
||||||
xp_theme_exit();
|
xp_theme_exit();
|
||||||
wimp_init ();
|
wimp_init ();
|
||||||
|
|
||||||
|
/* force all gtkwidgets to redraw */
|
||||||
gtk_rc_reparse_all_for_settings (gtk_settings_get_default(), TRUE);
|
gtk_rc_reparse_all_for_settings (gtk_settings_get_default(), TRUE);
|
||||||
return GDK_FILTER_REMOVE;
|
return GDK_FILTER_REMOVE;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
case WM_SETTINGCHANGE:
|
||||||
|
setup_system_settings (); /* catch cursor blink, etc... changes */
|
||||||
|
return GDK_FILTER_REMOVE;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return GDK_FILTER_CONTINUE;
|
return GDK_FILTER_CONTINUE;
|
||||||
}
|
}
|
||||||
@ -85,4 +101,3 @@ g_module_check_init (GModule *module)
|
|||||||
GTK_MINOR_VERSION,
|
GTK_MINOR_VERSION,
|
||||||
GTK_MICRO_VERSION - GTK_INTERFACE_AGE);
|
GTK_MICRO_VERSION - GTK_INTERFACE_AGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,6 +29,11 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
/* MS defines this when it includes its schema definitions */
|
||||||
|
#ifndef TMSCHEMA_H
|
||||||
|
#include "xp_theme_dfns.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
static const LPCWSTR class_descriptors[] =
|
static const LPCWSTR class_descriptors[] =
|
||||||
{
|
{
|
||||||
L"Scrollbar",
|
L"Scrollbar",
|
||||||
@ -112,7 +117,7 @@ static DrawThemeBackgroundFunc draw_theme_background_func = NULL;
|
|||||||
static EnableThemeDialogTextureFunc enable_theme_dialog_texture_func = NULL;
|
static EnableThemeDialogTextureFunc enable_theme_dialog_texture_func = NULL;
|
||||||
|
|
||||||
void
|
void
|
||||||
xp_theme_init()
|
xp_theme_init(void)
|
||||||
{
|
{
|
||||||
if (uxtheme_dll)
|
if (uxtheme_dll)
|
||||||
return;
|
return;
|
||||||
@ -128,7 +133,7 @@ xp_theme_init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xp_theme_exit()
|
xp_theme_exit(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -85,8 +85,8 @@ typedef enum
|
|||||||
XP_THEME_ELEMENT__SIZEOF
|
XP_THEME_ELEMENT__SIZEOF
|
||||||
} XpThemeElement;
|
} XpThemeElement;
|
||||||
|
|
||||||
void xp_theme_init();
|
void xp_theme_init(void);
|
||||||
void xp_theme_exit();
|
void xp_theme_exit(void);
|
||||||
gboolean xp_theme_draw(GdkWindow *win, XpThemeElement element, GtkStyle *style,
|
gboolean xp_theme_draw(GdkWindow *win, XpThemeElement element, GtkStyle *style,
|
||||||
int x, int y, int width, int height, GtkStateType state_type,
|
int x, int y, int width, int height, GtkStateType state_type,
|
||||||
GdkRectangle *area);
|
GdkRectangle *area);
|
||||||
|
152
modules/engines/ms-windows/xp_theme_dfns.h
Normal file
152
modules/engines/ms-windows/xp_theme_dfns.h
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
/* Wimp "Windows Impersonator" Engine
|
||||||
|
*
|
||||||
|
* Copyright (C) 2003 Dom Lachowicz <cinamod@hotmail.com>
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
* 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
|
||||||
|
* Library General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Library General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These are the real values of these UXTHEME constants, provided so that we can
|
||||||
|
* compile/link on Win32 platforms that aren't WinXP, and also build against
|
||||||
|
* MinGW 1.0/1.1, which also doesn't have these things defined in its header files
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XP_THEME_DFNS_H
|
||||||
|
#define XP_THEME_DFNS_H
|
||||||
|
|
||||||
|
#define BP_PUSHBUTTON 1
|
||||||
|
#define BP_CHECKBOX 3
|
||||||
|
|
||||||
|
#define HP_HEADERITEM 1
|
||||||
|
|
||||||
|
#define CP_DROPDOWNBUTTON 1
|
||||||
|
|
||||||
|
#define TABP_TABITEM 1
|
||||||
|
#define TABP_TABITEMLEFTEDGE 2
|
||||||
|
#define TABP_PANE 9
|
||||||
|
#define TABP_BODY 10
|
||||||
|
|
||||||
|
#define SBP_ARROWBTN 1
|
||||||
|
#define SBP_THUMBBTNHORZ 2
|
||||||
|
#define SBP_THUMBBTNVERT 3
|
||||||
|
#define SBP_LOWERTRACKHORZ 5
|
||||||
|
#define SBP_LOWERTRACKVERT 6
|
||||||
|
#define SBP_GRIPPERHORZ 8
|
||||||
|
#define SBP_GRIPPERVERT 9
|
||||||
|
|
||||||
|
#define EP_EDITTEXT 1
|
||||||
|
|
||||||
|
#define SPNP_UP 1
|
||||||
|
#define SPNP_DOWN 2
|
||||||
|
|
||||||
|
#define BP_RADIOBUTTON 2
|
||||||
|
|
||||||
|
#define TVP_GLYPH 2
|
||||||
|
|
||||||
|
#define PP_BAR 1
|
||||||
|
#define PP_BARVERT 2
|
||||||
|
#define PP_CHUNK 3
|
||||||
|
#define PP_CHUNKVERT 4
|
||||||
|
|
||||||
|
#define TTP_STANDARD 1
|
||||||
|
|
||||||
|
#define RP_GRIPPER 1
|
||||||
|
#define RP_GRIPPERVERT 2
|
||||||
|
#define RP_BAND 3
|
||||||
|
#define RP_CHEVRON 4
|
||||||
|
|
||||||
|
#define TP_BUTTON 1
|
||||||
|
|
||||||
|
#define TTSS_NORMAL 1
|
||||||
|
|
||||||
|
#define CHEVS_NORMAL 1
|
||||||
|
#define CHEVS_HOT 2
|
||||||
|
#define CHEVS_PRESSED 3
|
||||||
|
|
||||||
|
#define TIS_NORMAL 1
|
||||||
|
#define TIS_HOT 2
|
||||||
|
#define TIS_SELECTED 3
|
||||||
|
#define TIS_DISABLED 4
|
||||||
|
|
||||||
|
#define ETS_NORMAL 1
|
||||||
|
#define ETS_FOCUSED 5
|
||||||
|
#define ETS_READONLY 6
|
||||||
|
|
||||||
|
#define SCRBS_NORMAL 1
|
||||||
|
#define SCRBS_HOT 2
|
||||||
|
#define SCRBS_PRESSED 3
|
||||||
|
#define SCRBS_DISABLED 4
|
||||||
|
|
||||||
|
#define ABS_UPNORMAL 1
|
||||||
|
#define ABS_UPHOT 2
|
||||||
|
#define ABS_UPPRESSED 3
|
||||||
|
#define ABS_UPDISABLED 4
|
||||||
|
#define ABS_DOWNNORMAL 5
|
||||||
|
#define ABS_DOWNHOT 6
|
||||||
|
#define ABS_DOWNDISABLED 8
|
||||||
|
#define ABS_LEFTNORMAL 9
|
||||||
|
#define ABS_LEFTHOT 10
|
||||||
|
#define ABS_LEFTPRESSED 11
|
||||||
|
#define ABS_LEFTDISABLED 12
|
||||||
|
#define ABS_RIGHTNORMAL 13
|
||||||
|
#define ABS_RIGHTHOT 14
|
||||||
|
#define ABS_RIGHTPRESSED 15
|
||||||
|
#define ABS_RIGHTDISABLED 16
|
||||||
|
|
||||||
|
#define CBS_UNCHECKEDNORMAL 1
|
||||||
|
#define CBS_UNCHECKEDHOT 2
|
||||||
|
#define CBS_UNCHECKEDPRESSED 3
|
||||||
|
#define CBS_UNCHECKEDDISABLED 4
|
||||||
|
#define CBS_CHECKEDNORMAL 5
|
||||||
|
#define CBS_CHECKEDHOT 6
|
||||||
|
#define CBS_CHECKEDPRESSED 7
|
||||||
|
#define CBS_CHECKEDDISABLED 8
|
||||||
|
|
||||||
|
#define PBS_NORMAL 1
|
||||||
|
#define PBS_HOT 2
|
||||||
|
#define PBS_PRESSED 3
|
||||||
|
#define PBS_DISABLED 4
|
||||||
|
#define PBS_DEFAULTED 5
|
||||||
|
|
||||||
|
#define DNS_NORMAL 1
|
||||||
|
#define DNS_HOT 2
|
||||||
|
#define DNS_PRESSED 3
|
||||||
|
#define DNS_DISABLED 4
|
||||||
|
|
||||||
|
#define UPS_NORMAL 1
|
||||||
|
#define UPS_HOT 2
|
||||||
|
#define UPS_PRESSED 3
|
||||||
|
#define UPS_DISABLED 4
|
||||||
|
|
||||||
|
#define GLPS_OPENED 1
|
||||||
|
#define GLPS_CLOSED 2
|
||||||
|
|
||||||
|
#if UXTHEME_HAS_LINES
|
||||||
|
|
||||||
|
#error unknown/undocumented uxtheme values
|
||||||
|
|
||||||
|
/* #define GP_LINEHORZ */
|
||||||
|
/* #define GP_LINEVERT */
|
||||||
|
/* #define LHS_RAISED */
|
||||||
|
/* #define LHS_SUNKEN */
|
||||||
|
/* #define LHS_FLAT */
|
||||||
|
/* #define LVS_RAISED */
|
||||||
|
/* #define LVS_SUNKEN */
|
||||||
|
/* #define LHS_FLAT */
|
||||||
|
|
||||||
|
#endif /* UXTHEME_HAS_LINES */
|
||||||
|
|
||||||
|
#endif /* XP_THEME_DFNS_H */
|
Reference in New Issue
Block a user