From 96533d5c407d49b34566b9493b9b159f14fac0e5 Mon Sep 17 00:00:00 2001 From: Raymond Penners Date: Mon, 23 Aug 2004 20:53:53 +0000 Subject: [PATCH] Scrollbar patch --- modules/engines/ms-windows/ChangeLog.old | 9 +++++++++ modules/engines/ms-windows/msw_style.c | 17 +++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/modules/engines/ms-windows/ChangeLog.old b/modules/engines/ms-windows/ChangeLog.old index 0816dc29b3..78ba0bb2f1 100755 --- a/modules/engines/ms-windows/ChangeLog.old +++ b/modules/engines/ms-windows/ChangeLog.old @@ -1,3 +1,12 @@ +2004-08-23 Raymond Penners + + * === Released 0.6.2 === + + * src/msw_style.c: Applied patch from Matthew Mastracci that draws + scrollbars as disabled (and pretends to ignore mouse clicks by + forcing GTK_SHADOW_OUT) when the page length is greater than the + maximum range of the scrollbar. + 2004-08-23 Dom Lachowicz * configure.in: Bump version number diff --git a/modules/engines/ms-windows/msw_style.c b/modules/engines/ms-windows/msw_style.c index 3e454f1d51..26dd6e25f6 100755 --- a/modules/engines/ms-windows/msw_style.c +++ b/modules/engines/ms-windows/msw_style.c @@ -1210,6 +1210,8 @@ draw_arrow (GtkStyle *style, else if (detail && (!strcmp (detail, "vscrollbar") || !strcmp (detail, "hscrollbar"))) { + gboolean is_disabled = FALSE; + GtkScrollbar * scrollbar = GTK_SCROLLBAR(widget); gint box_x = x; gint box_y = y; gint box_width = width; @@ -1218,6 +1220,9 @@ draw_arrow (GtkStyle *style, reverse_engineer_stepper_box (widget, arrow_type, &box_x, &box_y, &box_width, &box_height); + if (scrollbar->range.adjustment->page_size >= (scrollbar->range.adjustment->upper-scrollbar->range.adjustment->lower)) + is_disabled = TRUE; + switch (arrow_type) { case GTK_ARROW_UP: @@ -1241,7 +1246,7 @@ draw_arrow (GtkStyle *style, x += (width - 7) / 2; y += (height - 5) / 2; - draw_varrow (window, style->fg_gc[state], shadow, area, arrow_type, + draw_varrow (window, is_disabled ? style->text_aa_gc[state] : style->fg_gc[state], shadow, area, arrow_type, x, y, 7, 5); } else @@ -1249,7 +1254,7 @@ draw_arrow (GtkStyle *style, y += (height - 7) / 2; x += (width - 5) / 2; - draw_harrow (window, style->fg_gc[state], shadow, area, arrow_type, + draw_harrow (window, is_disabled ? style->text_aa_gc[state] : style->fg_gc[state], shadow, area, arrow_type, x, y, 5, 7); } } @@ -1409,6 +1414,11 @@ draw_box (GtkStyle *style, xp_theme_draw(window, gripper, style, x, y, width, height, state_type, area); return; } + else + { + if (scrollbar->range.adjustment->page_size >= (scrollbar->range.adjustment->upper-scrollbar->range.adjustment->lower)) + return; + } } } else if (detail && !strcmp (detail, "bar")) @@ -1519,8 +1529,11 @@ draw_box (GtkStyle *style, } else if (detail && (strcmp (detail, "vscrollbar") == 0 || strcmp (detail, "hscrollbar") == 0)) { + GtkScrollbar * scrollbar = GTK_SCROLLBAR(widget); if (shadow_type == GTK_SHADOW_IN) shadow_type = GTK_SHADOW_ETCHED_IN; + if (scrollbar->range.adjustment->page_size >= (scrollbar->range.adjustment->upper-scrollbar->range.adjustment->lower)) + shadow_type = GTK_SHADOW_OUT; } else {