@@ -104,15 +104,15 @@ typedef struct {
104104
105105#define SCROLL_TIME 150
106106
107+ #define EV_STYLE_CLASS_DOCUMENT_PAGE "document-page"
108+
107109/*** Scrolling ***/
108110static void view_update_range_and_current_page (EvView * view );
109111static void ensure_rectangle_is_visible (EvView * view ,
110112 GdkRectangle * rect );
111113
112114/*** Geometry computations ***/
113115static void compute_border (EvView * view ,
114- int width ,
115- int height ,
116116 GtkBorder * border );
117117static void get_page_y_offset (EvView * view ,
118118 int page ,
@@ -1083,9 +1083,16 @@ ensure_rectangle_is_visible (EvView *view, GdkRectangle *rect)
10831083/*** Geometry computations ***/
10841084
10851085static void
1086- compute_border (EvView * view , int width , int height , GtkBorder * border )
1086+ compute_border (EvView * view , GtkBorder * border )
10871087{
1088- ev_document_misc_get_page_border_size (width , height , border );
1088+ GtkWidget * widget = GTK_WIDGET (view );
1089+ GtkStyleContext * context = gtk_widget_get_style_context (widget );
1090+ GtkStateFlags state = gtk_widget_get_state_flags (widget );
1091+
1092+ gtk_style_context_save (context );
1093+ gtk_style_context_add_class (context , EV_STYLE_CLASS_DOCUMENT_PAGE );
1094+ gtk_style_context_get_border (context , state , border );
1095+ gtk_style_context_restore (context );
10891096}
10901097
10911098void
@@ -1146,14 +1153,13 @@ ev_view_get_max_page_size (EvView *view,
11461153static void
11471154get_page_y_offset (EvView * view , int page , int * y_offset )
11481155{
1149- int max_width , offset = 0 ;
1156+ int offset = 0 ;
11501157 GtkBorder border ;
11511158 gboolean odd_left ;
11521159
11531160 g_return_if_fail (y_offset != NULL );
11541161
1155- ev_view_get_max_page_size (view , & max_width , NULL );
1156- compute_border (view , max_width , max_width , & border );
1162+ compute_border (view , & border );
11571163
11581164 if (is_dual_page (view , & odd_left )) {
11591165 ev_view_get_height_to_page (view , page , NULL , & offset );
@@ -1183,7 +1189,7 @@ ev_view_get_page_extents (EvView *view,
11831189
11841190 /* Get the size of the page */
11851191 ev_view_get_page_size (view , page , & width , & height );
1186- compute_border (view , width , height , border );
1192+ compute_border (view , border );
11871193 page_area -> width = width + border -> left + border -> right ;
11881194 page_area -> height = height + border -> top + border -> bottom ;
11891195
@@ -1232,7 +1238,7 @@ ev_view_get_page_extents (EvView *view,
12321238 if (height_2 > height )
12331239 max_height = height_2 ;
12341240 }
1235- compute_border (view , max_width , max_height , & overall_border );
1241+ compute_border (view , & overall_border );
12361242
12371243 /* Find the offsets */
12381244 x = view -> spacing ;
@@ -3533,7 +3539,7 @@ ev_view_size_request_continuous_dual_page (EvView *view,
35333539 GtkBorder border ;
35343540
35353541 ev_view_get_max_page_size (view , & max_width , NULL );
3536- compute_border (view , max_width , max_width , & border );
3542+ compute_border (view , & border );
35373543 requisition -> width = (max_width + border .left + border .right ) * 2 + (view -> spacing * 3 );
35383544 }
35393545 break ;
@@ -3563,7 +3569,7 @@ ev_view_size_request_continuous (EvView *view,
35633569 GtkBorder border ;
35643570
35653571 ev_view_get_max_page_size (view , & max_width , NULL );
3566- compute_border (view , max_width , max_width , & border );
3572+ compute_border (view , & border );
35673573 requisition -> width = max_width + (view -> spacing * 2 ) + border .left + border .right ;
35683574 }
35693575 break ;
@@ -3600,7 +3606,7 @@ ev_view_size_request_dual_page (EvView *view,
36003606 height = height_2 ;
36013607 }
36023608 }
3603- compute_border (view , width , height , & border );
3609+ compute_border (view , & border );
36043610
36053611 requisition -> width = view -> sizing_mode == EV_SIZING_FIT_WIDTH ? 1 :
36063612 ((width + border .left + border .right ) * 2 ) + (view -> spacing * 3 );
@@ -3622,7 +3628,7 @@ ev_view_size_request_single_page (EvView *view,
36223628 }
36233629
36243630 ev_view_get_page_size (view , view -> current_page , & width , & height );
3625- compute_border (view , width , height , & border );
3631+ compute_border (view , & border );
36263632
36273633 requisition -> width = view -> sizing_mode == EV_SIZING_FIT_WIDTH ? 1 :
36283634 width + border .left + border .right + (2 * view -> spacing );
@@ -5771,10 +5777,10 @@ draw_one_page (EvView *view,
57715777 GdkRectangle * expose_area ,
57725778 gboolean * page_ready )
57735779{
5774- GdkRectangle overlap ;
5775- GdkRectangle real_page_area ;
5776- gint current_page ;
5777- gboolean inverted_colors ;
5780+ GtkStyleContext * context ;
5781+ GdkRectangle overlap ;
5782+ GdkRectangle real_page_area ;
5783+ gint current_page ;
57785784
57795785 g_assert (view -> document );
57805786
@@ -5790,13 +5796,17 @@ draw_one_page (EvView *view,
57905796 real_page_area .height -= (border -> top + border -> bottom );
57915797 * page_ready = TRUE;
57925798
5799+ context = gtk_widget_get_style_context (GTK_WIDGET (view ));
57935800 current_page = ev_document_model_get_page (view -> model );
5794- inverted_colors = ev_document_model_get_inverted_colors (view -> model );
5795- ev_document_misc_paint_one_page (cr ,
5796- GTK_WIDGET (view ),
5797- page_area , border ,
5798- page == current_page ,
5799- inverted_colors );
5801+
5802+ gtk_style_context_save (context );
5803+ gtk_style_context_add_class (context , EV_STYLE_CLASS_DOCUMENT_PAGE );
5804+
5805+ if (view -> continuous && page == current_page )
5806+ gtk_style_context_set_state (context , GTK_STATE_FLAG_ACTIVE );
5807+
5808+ gtk_render_frame (context , cr , page_area -> x , page_area -> y , page_area -> width , page_area -> height );
5809+ gtk_style_context_restore (context );
58005810
58015811 if (gdk_rectangle_intersect (& real_page_area , expose_area , & overlap )) {
58025812 gint width , height ;
@@ -7130,7 +7140,7 @@ ev_view_zoom_for_size_continuous_and_dual_page (EvView *view,
71307140 doc_height = tmp ;
71317141 }
71327142
7133- compute_border (view , doc_width , doc_height , & border );
7143+ compute_border (view , & border );
71347144
71357145 doc_width *= 2 ;
71367146 width -= (2 * (border .left + border .right ) + 3 * view -> spacing );
@@ -7175,7 +7185,7 @@ ev_view_zoom_for_size_continuous (EvView *view,
71757185 doc_height = tmp ;
71767186 }
71777187
7178- compute_border (view , doc_width , doc_height , & border );
7188+ compute_border (view , & border );
71797189
71807190 width -= (border .left + border .right + 2 * view -> spacing );
71817191 height -= (border .top + border .bottom + 2 * view -> spacing - 1 );
@@ -7224,7 +7234,7 @@ ev_view_zoom_for_size_dual_page (EvView *view,
72247234 if (height_2 > doc_height )
72257235 doc_height = height_2 ;
72267236 }
7227- compute_border (view , width , height , & border );
7237+ compute_border (view , & border );
72287238
72297239 doc_width = doc_width * 2 ;
72307240 width -= ((border .left + border .right )* 2 + 3 * view -> spacing );
@@ -7263,7 +7273,7 @@ ev_view_zoom_for_size_single_page (EvView *view,
72637273 get_doc_page_size (view , view -> current_page , & doc_width , & doc_height );
72647274
72657275 /* Get an approximate border */
7266- compute_border (view , width , height , & border );
7276+ compute_border (view , & border );
72677277
72687278 width -= (border .left + border .right + 2 * view -> spacing );
72697279 height -= (border .top + border .bottom + 2 * view -> spacing );
0 commit comments