@@ -104,15 +104,15 @@ typedef struct {
104
104
105
105
#define SCROLL_TIME 150
106
106
107
+ #define EV_STYLE_CLASS_DOCUMENT_PAGE "document-page"
108
+
107
109
/*** Scrolling ***/
108
110
static void view_update_range_and_current_page (EvView * view );
109
111
static void ensure_rectangle_is_visible (EvView * view ,
110
112
GdkRectangle * rect );
111
113
112
114
/*** Geometry computations ***/
113
115
static void compute_border (EvView * view ,
114
- int width ,
115
- int height ,
116
116
GtkBorder * border );
117
117
static void get_page_y_offset (EvView * view ,
118
118
int page ,
@@ -1083,9 +1083,16 @@ ensure_rectangle_is_visible (EvView *view, GdkRectangle *rect)
1083
1083
/*** Geometry computations ***/
1084
1084
1085
1085
static void
1086
- compute_border (EvView * view , int width , int height , GtkBorder * border )
1086
+ compute_border (EvView * view , GtkBorder * border )
1087
1087
{
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 );
1089
1096
}
1090
1097
1091
1098
void
@@ -1146,14 +1153,13 @@ ev_view_get_max_page_size (EvView *view,
1146
1153
static void
1147
1154
get_page_y_offset (EvView * view , int page , int * y_offset )
1148
1155
{
1149
- int max_width , offset = 0 ;
1156
+ int offset = 0 ;
1150
1157
GtkBorder border ;
1151
1158
gboolean odd_left ;
1152
1159
1153
1160
g_return_if_fail (y_offset != NULL );
1154
1161
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 );
1157
1163
1158
1164
if (is_dual_page (view , & odd_left )) {
1159
1165
ev_view_get_height_to_page (view , page , NULL , & offset );
@@ -1183,7 +1189,7 @@ ev_view_get_page_extents (EvView *view,
1183
1189
1184
1190
/* Get the size of the page */
1185
1191
ev_view_get_page_size (view , page , & width , & height );
1186
- compute_border (view , width , height , border );
1192
+ compute_border (view , border );
1187
1193
page_area -> width = width + border -> left + border -> right ;
1188
1194
page_area -> height = height + border -> top + border -> bottom ;
1189
1195
@@ -1232,7 +1238,7 @@ ev_view_get_page_extents (EvView *view,
1232
1238
if (height_2 > height )
1233
1239
max_height = height_2 ;
1234
1240
}
1235
- compute_border (view , max_width , max_height , & overall_border );
1241
+ compute_border (view , & overall_border );
1236
1242
1237
1243
/* Find the offsets */
1238
1244
x = view -> spacing ;
@@ -3533,7 +3539,7 @@ ev_view_size_request_continuous_dual_page (EvView *view,
3533
3539
GtkBorder border ;
3534
3540
3535
3541
ev_view_get_max_page_size (view , & max_width , NULL );
3536
- compute_border (view , max_width , max_width , & border );
3542
+ compute_border (view , & border );
3537
3543
requisition -> width = (max_width + border .left + border .right ) * 2 + (view -> spacing * 3 );
3538
3544
}
3539
3545
break ;
@@ -3563,7 +3569,7 @@ ev_view_size_request_continuous (EvView *view,
3563
3569
GtkBorder border ;
3564
3570
3565
3571
ev_view_get_max_page_size (view , & max_width , NULL );
3566
- compute_border (view , max_width , max_width , & border );
3572
+ compute_border (view , & border );
3567
3573
requisition -> width = max_width + (view -> spacing * 2 ) + border .left + border .right ;
3568
3574
}
3569
3575
break ;
@@ -3600,7 +3606,7 @@ ev_view_size_request_dual_page (EvView *view,
3600
3606
height = height_2 ;
3601
3607
}
3602
3608
}
3603
- compute_border (view , width , height , & border );
3609
+ compute_border (view , & border );
3604
3610
3605
3611
requisition -> width = view -> sizing_mode == EV_SIZING_FIT_WIDTH ? 1 :
3606
3612
((width + border .left + border .right ) * 2 ) + (view -> spacing * 3 );
@@ -3622,7 +3628,7 @@ ev_view_size_request_single_page (EvView *view,
3622
3628
}
3623
3629
3624
3630
ev_view_get_page_size (view , view -> current_page , & width , & height );
3625
- compute_border (view , width , height , & border );
3631
+ compute_border (view , & border );
3626
3632
3627
3633
requisition -> width = view -> sizing_mode == EV_SIZING_FIT_WIDTH ? 1 :
3628
3634
width + border .left + border .right + (2 * view -> spacing );
@@ -5771,10 +5777,10 @@ draw_one_page (EvView *view,
5771
5777
GdkRectangle * expose_area ,
5772
5778
gboolean * page_ready )
5773
5779
{
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 ;
5778
5784
5779
5785
g_assert (view -> document );
5780
5786
@@ -5790,13 +5796,17 @@ draw_one_page (EvView *view,
5790
5796
real_page_area .height -= (border -> top + border -> bottom );
5791
5797
* page_ready = TRUE;
5792
5798
5799
+ context = gtk_widget_get_style_context (GTK_WIDGET (view ));
5793
5800
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 );
5800
5810
5801
5811
if (gdk_rectangle_intersect (& real_page_area , expose_area , & overlap )) {
5802
5812
gint width , height ;
@@ -7130,7 +7140,7 @@ ev_view_zoom_for_size_continuous_and_dual_page (EvView *view,
7130
7140
doc_height = tmp ;
7131
7141
}
7132
7142
7133
- compute_border (view , doc_width , doc_height , & border );
7143
+ compute_border (view , & border );
7134
7144
7135
7145
doc_width *= 2 ;
7136
7146
width -= (2 * (border .left + border .right ) + 3 * view -> spacing );
@@ -7175,7 +7185,7 @@ ev_view_zoom_for_size_continuous (EvView *view,
7175
7185
doc_height = tmp ;
7176
7186
}
7177
7187
7178
- compute_border (view , doc_width , doc_height , & border );
7188
+ compute_border (view , & border );
7179
7189
7180
7190
width -= (border .left + border .right + 2 * view -> spacing );
7181
7191
height -= (border .top + border .bottom + 2 * view -> spacing - 1 );
@@ -7224,7 +7234,7 @@ ev_view_zoom_for_size_dual_page (EvView *view,
7224
7234
if (height_2 > doc_height )
7225
7235
doc_height = height_2 ;
7226
7236
}
7227
- compute_border (view , width , height , & border );
7237
+ compute_border (view , & border );
7228
7238
7229
7239
doc_width = doc_width * 2 ;
7230
7240
width -= ((border .left + border .right )* 2 + 3 * view -> spacing );
@@ -7263,7 +7273,7 @@ ev_view_zoom_for_size_single_page (EvView *view,
7263
7273
get_doc_page_size (view , view -> current_page , & doc_width , & doc_height );
7264
7274
7265
7275
/* Get an approximate border */
7266
- compute_border (view , width , height , & border );
7276
+ compute_border (view , & border );
7267
7277
7268
7278
width -= (border .left + border .right + 2 * view -> spacing );
7269
7279
height -= (border .top + border .bottom + 2 * view -> spacing );
0 commit comments