~ubuntu-branches/ubuntu/hardy/evince/hardy-proposed

« back to all changes in this revision

Viewing changes to shell/ev-window.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2007-09-04 12:56:35 UTC
  • mfrom: (1.1.19 upstream)
  • Revision ID: james.westby@ubuntu.com-20070904125635-4l90ndzk1qv6kovm
Tags: 2.19.92-0ubuntu1
* New upstream version:
  Bug fixes:
  - Bump requirements to poppler 0.6
  - Restart the search when reloading a document with the find bar visible
    (LP: #126530)
  - Do not jump to the first page when reloading a document from the last page
  - Do not update visibility when changing a chrome flag
  - Use GTK_UNIT_POINTS instead of GTK_UNIT_PIXEL
  - Make sure current-page <= end-page in continuous mode
  - Ignore outline items without a title (LP: #124142)
  - Use only drag mouse cursor during a drag operation
  - Actually fix printing regressions
  - Add support for double and triple click selections
* debian/control.in:
  - updated poppler requirement
* debian/patches/02_autoconf.patch:
  - updated

Show diffs side-by-side

added added

removed removed

Lines of Context:
176
176
        char *local_uri;
177
177
        EvLinkDest *dest;
178
178
        gboolean unlink_temp_file;
 
179
        gboolean in_reload;
179
180
        
180
181
        EvDocument *document;
181
182
        EvHistory *history;
220
221
#define THUMBNAILS_SIDEBAR_ID "thumbnails"
221
222
#define ATTACHMENTS_SIDEBAR_ID "attachments"
222
223
 
223
 
static void     ev_window_update_actions                (EvWindow *ev_window);
 
224
static void     ev_window_update_actions                (EvWindow         *ev_window);
224
225
static void     ev_window_sidebar_visibility_changed_cb (EvSidebar        *ev_sidebar,
225
226
                                                         GParamSpec       *pspec,
226
227
                                                         EvWindow         *ev_window);
262
263
static void     ev_view_popup_cmd_copy_image            (GtkAction        *action,
263
264
                                                         EvWindow         *window);
264
265
static void     ev_attachment_popup_cmd_open_attachment (GtkAction        *action,
265
 
                                                         EvWindow *window);
266
 
static void     ev_attachment_popup_cmd_save_attachment_as (GtkAction *action, 
267
 
                                                         EvWindow *window);
 
266
                                                         EvWindow         *window);
 
267
static void     ev_attachment_popup_cmd_save_attachment_as (GtkAction     *action, 
 
268
                                                         EvWindow         *window);
268
269
static void     ev_window_cmd_view_best_fit             (GtkAction        *action, 
269
270
                                                         EvWindow         *ev_window);
270
271
static void     ev_window_cmd_view_page_width           (GtkAction        *action, 
271
272
                                                         EvWindow         *ev_window);
272
 
static void     view_handle_link_cb                     (EvView *view, 
273
 
                                                         EvLink *link, 
274
 
                                                         EvWindow *window);
 
273
static void     view_handle_link_cb                     (EvView           *view, 
 
274
                                                         EvLink           *link, 
 
275
                                                         EvWindow         *window);
 
276
static void     find_bar_search_changed_cb              (EggFindBar       *find_bar,
 
277
                                                         GParamSpec       *param,
 
278
                                                         EvWindow         *ev_window);
275
279
 
276
280
G_DEFINE_TYPE (EvWindow, ev_window, GTK_TYPE_WINDOW)
277
281
 
316
320
                has_properties = FALSE;
317
321
        }
318
322
 
319
 
        if (has_document && ev_document_can_get_text (document)) {
 
323
        if (has_document && EV_IS_SELECTION (document)) {
320
324
                can_get_text = TRUE;
321
325
        }
322
326
        
537
541
        } else {
538
542
                priv->chrome &= ~flag;
539
543
        }
540
 
 
541
 
        update_chrome_visibility (window);
542
544
}
543
545
 
544
546
static void
702
704
        
703
705
        if (window->priv->history == NULL)
704
706
                return;
 
707
 
 
708
        if (!EV_IS_DOCUMENT_LINKS (window->priv->document))
 
709
                return;
705
710
        
706
711
        if (link) {
707
712
                action = g_object_ref (ev_link_get_action (link));
720
725
        find_task.page_label = page_label;
721
726
        find_task.chapter = NULL;
722
727
        
723
 
        if (EV_IS_DOCUMENT_LINKS (window->priv->document) && 
724
 
            ev_document_links_has_document_links (EV_DOCUMENT_LINKS (window->priv->document))) {
 
728
        if (ev_document_links_has_document_links (EV_DOCUMENT_LINKS (window->priv->document))) {
725
729
                GtkTreeModel *model;
726
730
        
727
731
                g_object_get (G_OBJECT (window->priv->sidebar_links), "model", &model, NULL);
798
802
        if (uri && ev_metadata_manager_get (uri, "page", &page, TRUE)) {
799
803
                n_pages = ev_page_cache_get_n_pages (window->priv->page_cache);
800
804
                new_page = CLAMP (g_value_get_int (&page), 0, n_pages - 1);
801
 
                if (new_page == n_pages - 1)
 
805
                if (!window->priv->in_reload && new_page == n_pages - 1)
802
806
                        new_page = 0;
803
807
                ev_page_cache_set_current_page (window->priv->page_cache,
804
808
                                                new_page);
856
860
        if (ev_metadata_manager_get (uri, "sidebar_visibility", &sidebar_visibility, FALSE)) {
857
861
                update_chrome_flag (window, EV_CHROME_SIDEBAR, g_value_get_boolean (&sidebar_visibility));
858
862
                g_value_unset (&sidebar_visibility);
 
863
                update_chrome_visibility (window);
859
864
        }
860
865
}
861
866
 
1325
1330
                                break;
1326
1331
                }
1327
1332
 
1328
 
                ev_window_clear_load_job (ev_window);           
 
1333
                /* Restart the search after reloading */
 
1334
                if (ev_window->priv->in_reload) {
 
1335
                        GtkWidget *widget;
 
1336
                        
 
1337
                        widget = gtk_window_get_focus (GTK_WINDOW (ev_window));
 
1338
                        if (widget && gtk_widget_get_ancestor (widget, EGG_TYPE_FIND_BAR)) {
 
1339
                                find_bar_search_changed_cb (EGG_FIND_BAR (ev_window->priv->find_bar),
 
1340
                                                            NULL, ev_window);
 
1341
                        }
 
1342
                }
 
1343
 
 
1344
                ev_window_clear_load_job (ev_window);
 
1345
                ev_window->priv->in_reload = FALSE;
1329
1346
                return;
1330
1347
        }
1331
1348
 
1349
1366
                                        _("Unable to open document"),
1350
1367
                                        job->error);
1351
1368
                ev_window_clear_load_job (ev_window);
 
1369
                ev_window->priv->in_reload = FALSE;
1352
1370
        }       
1353
1371
 
1354
1372
        return;
2332
2350
        gdouble        width;
2333
2351
        gdouble        height;
2334
2352
        GtkPrintPages  print_pages;
2335
 
        EvFileExporterOrientation orientation = EV_FILE_EXPORTER_PORTRAIT;
2336
2353
        const gchar   *file_format;
2337
2354
        
2338
2355
        if (response == GTK_RESPONSE_CANCEL) {
2408
2425
        scale = gtk_print_settings_get_scale (window->priv->print_settings) * 0.01;
2409
2426
        
2410
2427
        width = gtk_page_setup_get_paper_width (window->priv->print_page_setup,
2411
 
                                                GTK_UNIT_PIXEL);
 
2428
                                                GTK_UNIT_POINTS);
2412
2429
        height = gtk_page_setup_get_paper_height (window->priv->print_page_setup,
2413
 
                                                  GTK_UNIT_PIXEL);
 
2430
                                                  GTK_UNIT_POINTS);
2414
2431
        
2415
 
        switch (gtk_page_setup_get_orientation (window->priv->print_page_setup)) {
2416
 
                case GTK_PAGE_ORIENTATION_PORTRAIT:
2417
 
                case GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT:
2418
 
                        orientation = EV_FILE_EXPORTER_PORTRAIT;
2419
 
                        break;
2420
 
                case GTK_PAGE_ORIENTATION_LANDSCAPE:
2421
 
                case GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE:
2422
 
                        orientation = EV_FILE_EXPORTER_LANDSCAPE;
2423
 
                        break;
2424
 
        }
2425
 
 
2426
2432
        if (scale != 1.0) {
2427
2433
                width *= scale;
2428
2434
                height *= scale;
2437
2443
        window->priv->print_job = ev_job_print_new (window->priv->document,
2438
2444
                                                    file_format ? file_format : "ps",
2439
2445
                                                    width, height,
2440
 
                                                    orientation,
2441
2446
                                                    ranges, n_ranges,
2442
2447
                                                    page_set,
2443
2448
                                                    pages_per_sheet,
2691
2696
        
2692
2697
        update_chrome_flag (window, EV_CHROME_RAISE_TOOLBAR, TRUE);
2693
2698
        ev_window_set_action_sensitive (window, "ViewToolbar", FALSE);
 
2699
        update_chrome_visibility (window);
2694
2700
        
2695
2701
        action = gtk_action_group_get_action (window->priv->action_group,
2696
2702
                                              PAGE_SELECTOR_ACTION);
2781
2787
        } 
2782
2788
 
2783
2789
        update_chrome_flag (ev_window, EV_CHROME_FINDBAR, TRUE);
 
2790
        update_chrome_visibility (ev_window);
2784
2791
        gtk_widget_grab_focus (ev_window->priv->find_bar);
2785
2792
}
2786
2793
 
2790
2797
        g_return_if_fail (EV_IS_WINDOW (ev_window));
2791
2798
 
2792
2799
        update_chrome_flag (ev_window, EV_CHROME_FINDBAR, TRUE);
 
2800
        update_chrome_visibility (ev_window);
2793
2801
        gtk_widget_grab_focus (ev_window->priv->find_bar);
2794
2802
        ev_view_find_next (EV_VIEW (ev_window->priv->view));
2795
2803
}
2800
2808
        g_return_if_fail (EV_IS_WINDOW (ev_window));
2801
2809
 
2802
2810
        update_chrome_flag (ev_window, EV_CHROME_FINDBAR, TRUE);
 
2811
        update_chrome_visibility (ev_window);
2803
2812
        gtk_widget_grab_focus (ev_window->priv->find_bar);
2804
2813
        ev_view_find_previous (EV_VIEW (ev_window->priv->view));
2805
2814
}
3318
3327
{
3319
3328
        gchar *uri;
3320
3329
 
 
3330
        ev_window->priv->in_reload = TRUE;
 
3331
        
3321
3332
        uri = g_strdup (ev_window->priv->uri);
3322
3333
        ev_window_open_uri (ev_window, uri, NULL, 0, FALSE, NULL);
3323
3334
        g_free (uri);
3524
3535
        widget = gtk_window_get_focus (GTK_WINDOW (window));
3525
3536
        if (widget && gtk_widget_get_ancestor (widget, EGG_TYPE_FIND_BAR)) {
3526
3537
                update_chrome_flag (window, EV_CHROME_FINDBAR, FALSE);
 
3538
                update_chrome_visibility (window);
3527
3539
                gtk_widget_grab_focus (window->priv->view);
3528
3540
        } else {
3529
3541
                gboolean fullscreen;
3802
3814
        
3803
3815
        active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
3804
3816
        update_chrome_flag (ev_window, EV_CHROME_TOOLBAR, active);
 
3817
        update_chrome_visibility (ev_window);
3805
3818
        ev_metadata_manager_set_boolean (NULL, "show_toolbar", active);
3806
3819
}
3807
3820
 
3813
3826
            
3814
3827
        update_chrome_flag (ev_window, EV_CHROME_SIDEBAR,
3815
3828
                            gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)));
 
3829
        update_chrome_visibility (ev_window);
3816
3830
}
3817
3831
 
3818
3832
static void
4015
4029
                   EvWindow   *ev_window)
4016
4030
{
4017
4031
        update_chrome_flag (ev_window, EV_CHROME_FINDBAR, FALSE);
 
4032
        update_chrome_visibility (ev_window);
4018
4033
}
4019
4034
 
4020
4035
static void
4634
4649
 
4635
4650
        ev_window_set_view_accels_sensitivity (window, TRUE);
4636
4651
 
 
4652
        update_chrome_visibility (window);
 
4653
 
4637
4654
        return FALSE;
4638
4655
}
4639
4656