#include "gdk/win32/gdkwin32.h"
#endif
-static HDC get_window_dc (GtkStyle *style, GdkWindow *window,
- GtkStateType state_type, gint x, gint y, gint width,
- gint height, RECT *rect);
-static void release_window_dc (GtkStyle *style, GdkWindow *window,
- GtkStateType state_type);
-
/* Default values, not normally used
*/
DWORD border;
RECT rect;
HDC dc;
+ XpDCInfo dc_info;
- dc = get_window_dc (style, window, state, area->x, area->y, area->width,
+ dc = get_window_dc (style, window, state, &dc_info, area->x, area->y, area->width,
area->height, &rect);
border = (GTK_TOGGLE_BUTTON (widget->parent)->
active ? DFCS_PUSHED | DFCS_FLAT : 0);
InflateRect (&rect, 1, 1);
DrawFrameControl (dc, &rect, DFC_SCROLL, DFCS_SCROLLDOWN | border);
- release_window_dc (style, window, state);
+ release_window_dc (&dc_info);
return TRUE;
}
RECT rect;
HPEN pen;
HGDIOBJ old_pen;
+ XpDCInfo dc_info;
- dc = get_window_dc (style, window, state, x, y, expander_size,
+ dc = get_window_dc (style, window, state, &dc_info, x, y, expander_size,
expander_size, &rect);
FrameRect (dc, &rect, GetSysColorBrush (COLOR_GRAYTEXT));
InflateRect (&rect, -1, -1);
SelectObject (dc, old_pen);
DeleteObject (pen);
- release_window_dc (style, window, state);
+ release_window_dc (&dc_info);
}
if (area)
const gchar *name;
HDC dc;
RECT rect;
+ XpDCInfo dc_info;
name = gtk_widget_get_name (widget);
{
sanitize_size (window, &width, &height);
- dc = get_window_dc (style, window, state,
+ dc = get_window_dc (style, window, state, &dc_info,
box_x, box_y, box_width, box_height, &rect);
DrawFrameControl (dc, &rect, DFC_SCROLL,
btn_type | (shadow ==
GTK_SHADOW_IN ? (DFCS_PUSHED |
DFCS_FLAT) : 0));
- release_window_dc (style, window, state);
+ release_window_dc (&dc_info);
}
}
}
return FALSE;
}
-HDC
-get_window_dc (GtkStyle *style, GdkWindow *window, GtkStateType state_type,
- gint x, gint y, gint width, gint height, RECT *rect)
-{
- int xoff, yoff;
- GdkDrawable *drawable;
-
- if (!GDK_IS_WINDOW (window))
- {
- xoff = 0;
- yoff = 0;
- drawable = window;
- }
- else
- {
- gdk_window_get_internal_paint_info (window, &drawable, &xoff, &yoff);
- }
-
- rect->left = x - xoff;
- rect->top = y - yoff;
- rect->right = rect->left + width;
- rect->bottom = rect->top + height;
-
- return gdk_win32_hdc_get (drawable, style->dark_gc[state_type], 0);
-}
-
-void
-release_window_dc (GtkStyle *style, GdkWindow *window,
- GtkStateType state_type)
-{
- GdkDrawable *drawable;
-
- if (!GDK_IS_WINDOW (window))
- {
- drawable = window;
- }
- else
- {
- gdk_window_get_internal_paint_info (window, &drawable, NULL, NULL);
- }
-
- gdk_win32_hdc_release (drawable, style->dark_gc[state_type], 0);
-}
-
static HPEN
get_light_pen ()
{
GtkMenuShell *bar;
HDC dc;
RECT rect;
+ XpDCInfo dc_info;
if (xp_theme_is_active ())
{
{
bar = GTK_MENU_SHELL (parent);
- dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
if (state_type == GTK_STATE_PRELIGHT)
{
draw_3d_border (dc, &rect, bar->active);
}
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
return TRUE;
}
{
HDC dc;
RECT rect;
+ XpDCInfo dc_info;
gboolean is_toggled = FALSE;
if (xp_theme_is_active ())
return FALSE;
}
- dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
if (state_type == GTK_STATE_PRELIGHT)
{
if (is_toggled)
draw_3d_border (dc, &rect, TRUE);
}
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
return TRUE;
}
{
HDC dc;
RECT rect;
+ XpDCInfo dc_info;
- dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
if (GTK_IS_TOGGLE_BUTTON (widget))
{
DrawFrameControl (dc, &rect, DFC_BUTTON, DFCS_BUTTONPUSH);
}
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
}
static void
if (is_combo_box_child (widget) && detail && !strcmp (detail, "button"))
{
RECT rect;
+ XpDCInfo dc_info;
DWORD border;
HDC dc;
int cx;
border = (GTK_TOGGLE_BUTTON (widget)->active ? DFCS_PUSHED | DFCS_FLAT : 0);
- dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
DrawFrameControl (dc, &rect, DFC_SCROLL, DFCS_SCROLLDOWN | border);
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
if (xp_theme_is_active ()
&& xp_theme_draw (window, XP_THEME_ELEMENT_COMBOBUTTON, style, x, y,
width = cx;
- dc = get_window_dc (style, window, state_type, x, y, width - cx, height, &rect);
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width - cx, height, &rect);
FillRect (dc, &rect, GetSysColorBrush (COLOR_WINDOW));
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
return;
}
}
{
HDC dc;
RECT rect;
- dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ XpDCInfo dc_info;
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
DrawFrameControl (dc, &rect, DFC_BUTTON, DFCS_BUTTONPUSH |
(state_type ==
GTK_STATE_ACTIVE ? (DFCS_PUSHED | DFCS_FLAT)
: 0));
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
}
}
else if (is_toolbar_child (widget->parent)
style, x, y, width, height, state_type, area))
{
RECT rect;
+ XpDCInfo dc_info;
HDC dc;
- dc = get_window_dc (style, window, state_type,
+ dc = get_window_dc (style, window, state_type, &dc_info,
x, y, width, height, &rect);
DrawEdge (dc, &rect,
state_type ==
GTK_STATE_ACTIVE ? EDGE_SUNKEN : EDGE_RAISED, BF_RECT);
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
}
return;
}
{
HDC dc;
RECT rect;
+ XpDCInfo dc_info;
sanitize_size (window, &width, &height);
- dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
SetTextColor (dc, GetSysColor (COLOR_3DHILIGHT));
SetBkColor (dc, GetSysColor (COLOR_BTNFACE));
FillRect (dc, &rect, get_dither_brush ());
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
return;
}
{
HBRUSH brush;
RECT rect;
+ XpDCInfo dc_info;
HDC hdc;
- hdc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ hdc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
brush = GetSysColorBrush (COLOR_3DDKSHADOW);
InflateRect (&rect, -1, -1);
FillRect (hdc, &rect, (HBRUSH) (COLOR_INFOBK + 1));
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
return;
}
{
/* experimental tab-drawing code from mozilla */
RECT rect;
+ XpDCInfo dc_info;
HDC dc;
gint32 aPosition;
- dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
if (gap_side == GTK_POS_TOP)
aPosition = BF_TOP;
if (area)
gdk_gc_set_clip_rectangle (style->dark_gc[state_type], NULL);
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
return TRUE;
}
gint x, gint y, gint width, gint height)
{
RECT rect;
+ XpDCInfo dc_info;
HDC dc;
- dc = get_window_dc (style, win, GTK_STATE_NORMAL, x, y, width, height, &rect);
+ dc = get_window_dc (style, win, GTK_STATE_NORMAL, &dc_info, x, y, width, height, &rect);
if (!dc)
return FALSE;
DrawEdge (dc, &rect, EDGE_RAISED, BF_RECT);
}
- release_window_dc (style, win, GTK_STATE_NORMAL);
+ release_window_dc (&dc_info);
return TRUE;
}
HDC dc;
RECT rect;
+ XpDCInfo dc_info;
- dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
if (is_combo_box_child (widget))
{
FillRect (dc, &rect, GetSysColorBrush (COLOR_WINDOW));
}
}
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
return;
}
{
HDC dc;
RECT rect;
+ XpDCInfo dc_info;
- dc = get_window_dc (style, window, state_type,
+ dc = get_window_dc (style, window, state_type, &dc_info,
x, y, width, height, &rect);
DrawEdge (dc, &rect, EDGE_SUNKEN, BF_RECT);
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
}
return;
{
HDC dc;
RECT rect;
+ XpDCInfo dc_info;
HGDIOBJ old_pen = NULL;
GtkPositionType pos;
}
}
- dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
if (pos != GTK_POS_LEFT)
{
}
if (old_pen)
SelectObject (dc, old_pen);
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
}
return;
else
{
RECT rect;
- HDC dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ XpDCInfo dc_info;
+ HDC dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
if (area)
gdk_gc_set_clip_rectangle (style->dark_gc[state_type], area);
DrawFrameControl (dc, &rect, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
if (area)
gdk_gc_set_clip_rectangle (style->dark_gc[state_type], NULL);
{
HDC dc;
RECT rect;
+ XpDCInfo dc_info;
if (is_toolbar_child (widget))
{
return;
}
- dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
if (orientation == GTK_ORIENTATION_VERTICAL)
{
}
draw_3d_border (dc, &rect, FALSE);
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
return;
}
{
HDC dc;
RECT rect;
+ XpDCInfo dc_info;
if (!gtk_widget_get_can_focus (widget))
{
return;
}
- dc = get_window_dc (style, window, state_type, x, y, width, height, &rect);
+ dc = get_window_dc (style, window, state_type, &dc_info, x, y, width, height, &rect);
DrawFocusRect (dc, &rect);
- release_window_dc (style, window, state_type);
+ release_window_dc (&dc_info);
/*
parent_class->draw_focus (style, window, state_type,
area, widget, detail, x, y, width, height);