#include "ephy-zoom.h"
#include "ev-application.h"
+#include "ev-dualscreen.h"
#include "ev-document-factory.h"
#include "ev-document-find.h"
#include "ev-document-fonts.h"
gboolean unfullscreen_window);
static void ev_window_cmd_view_fullscreen (GtkAction *action,
EvWindow *window);
-static void ev_window_run_presentation (EvWindow *window);
-static void ev_window_stop_presentation (EvWindow *window,
- gboolean unfullscreen_window);
+static void ev_window_run_presentation_wrapper (EvWindow *window);
+static void ev_window_stop_presentation_wrapper (EvWindow *window,
+ gboolean unfullscreen_window);
static void ev_window_cmd_view_presentation (GtkAction *action,
EvWindow *window);
static void ev_view_popup_cmd_open_link (GtkAction *action,
return ev_document_misc_get_screen_dpi (screen);
}
+static gboolean
+ev_window_is_editing_toolbar (EvWindow *ev_window)
+{
+ return egg_editable_toolbar_get_edit_mode (EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar));
+}
+
static void
ev_window_set_action_sensitive (EvWindow *ev_window,
const char *name,
ev_window_set_action_sensitive (ev_window, "FileSaveAs", has_document && ok_to_copy);
ev_window_set_action_sensitive (ev_window, "FilePrint", has_pages && ok_to_print);
ev_window_set_action_sensitive (ev_window, "FileProperties", has_document && has_properties);
+ ev_window_set_action_sensitive (ev_window, "FileOpenContainingFolder", has_document);
/* Edit menu */
ev_window_set_action_sensitive (ev_window, "EditSelectAll", has_pages && can_get_text);
ev_window_set_action_sensitive (ev_window, "EditRotateRight", has_pages);
/* View menu */
+ ev_window_set_action_sensitive (ev_window, "ViewToolbar", !ev_window_is_editing_toolbar (ev_window));
ev_window_set_action_sensitive (ev_window, "ViewContinuous", has_pages);
ev_window_set_action_sensitive (ev_window, "ViewDual", has_pages);
ev_window_set_action_sensitive (ev_window, "ViewBestFit", has_pages);
update_document_mode (EvWindow *window, EvDocumentMode mode)
{
if (mode == EV_DOCUMENT_MODE_PRESENTATION) {
- ev_window_run_presentation (window);
+ ev_window_run_presentation_wrapper (window);
}
else if (mode == EV_DOCUMENT_MODE_FULL_SCREEN) {
ev_window_run_fullscreen (window);
/* Presentation */
if (ev_metadata_get_boolean (window->priv->metadata, "presentation", &presentation)) {
if (presentation) {
- ev_window_run_presentation (window);
+ ev_window_run_presentation_wrapper (window);
}
}
}
/* Update the model with the current presentation page */
ev_document_model_set_page (ev_window->priv->model, current_page);
- ev_window_run_presentation (ev_window);
+ ev_window_run_presentation_wrapper (ev_window);
}
if (ev_window->priv->setup_document_idle > 0)
ev_window_run_fullscreen (ev_window);
break;
case EV_WINDOW_MODE_PRESENTATION:
- ev_window_run_presentation (ev_window);
+ ev_window_run_presentation_wrapper (ev_window);
break;
default:
break;
ev_window_run_fullscreen (ev_window);
break;
case EV_WINDOW_MODE_PRESENTATION:
- ev_window_run_presentation (ev_window);
+ ev_window_run_presentation_wrapper (ev_window);
break;
default:
break;
ev_window_stop_presentation (window, TRUE);
}
+static gboolean
+ev_window_view_presentation_focus_in (EvWindow *window)
+{
+ ev_application_screensaver_disable (EV_APP);
+
+ return FALSE;
+}
+
+static gboolean
+ev_window_view_presentation_focus_out (EvWindow *window)
+{
+ ev_application_screensaver_enable (EV_APP);
+
+ return FALSE;
+}
+
static void
+ev_window_run_presentation_wrapper (EvWindow *window)
+{
+ if ( get_num_monitors(GTK_WINDOW(window)) > 1) {
+ EvWindow *presentation_window = window;
+ EvDSCWindow *control = ev_dscwindow_get_control();
+
+ ev_dscwindow_set_presentation (control, presentation_window,
+ presentation_window->priv->document);
+ gtk_window_present (GTK_WINDOW (control));
+ } else
+ ev_window_run_presentation (window);
+
+}
+static void
+ev_window_stop_presentation_wrapper(EvWindow *window, gboolean unfullscreen_window)
+{
+}
+
+void
ev_window_run_presentation (EvWindow *window)
{
gboolean fullscreen_window = TRUE;
g_signal_connect_swapped (window->priv->presentation_view, "external-link",
G_CALLBACK (view_external_link_cb),
window);
+ g_signal_connect_swapped (window->priv->presentation_view, "focus-in-event",
+ G_CALLBACK (ev_window_view_presentation_focus_in),
+ window);
+ g_signal_connect_swapped (window->priv->presentation_view, "focus-out-event",
+ G_CALLBACK (ev_window_view_presentation_focus_out),
+ window);
gtk_box_pack_start (GTK_BOX (window->priv->main_box),
window->priv->presentation_view,
ev_metadata_set_boolean (window->priv->metadata, "presentation", TRUE);
}
-static void
+void
ev_window_stop_presentation (EvWindow *window,
gboolean unfullscreen_window)
{
presentation = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
if (presentation) {
- ev_window_run_presentation (window);
+ ev_window_run_presentation_wrapper (window);
}
}
toolbar = EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar);
egg_editable_toolbar_set_edit_mode (toolbar, FALSE);
+ ev_window_set_action_sensitive (ev_window, "ViewToolbar", TRUE);
toolbars_file = g_build_filename (ev_application_get_dot_dir (EV_APP, TRUE),
"evince_toolbar.xml", NULL);
gtk_box_pack_start (GTK_BOX (content_area), editor, TRUE, TRUE, 0);
egg_editable_toolbar_set_edit_mode (toolbar, TRUE);
+ ev_window_set_action_sensitive (ev_window, "ViewToolbar", FALSE);
g_signal_connect (dialog, "response",
G_CALLBACK (ev_window_cmd_edit_toolbar_cb),
static void
ev_window_cmd_start_presentation (GtkAction *action, EvWindow *window)
{
- ev_window_run_presentation (window);
+ ev_window_run_presentation_wrapper (window);
}
static void
const char *documenters[] = {
"Nickolay V. Shmyrev <nshmyrev@yandex.ru>",
+ "Phil Bull <philbull@gmail.com>",
+ "Tiffany Antpolski <tiffany.antopolski@gmail.com>",
NULL
};
}
static void
-find_bar_search_changed_cb (EggFindBar *find_bar,
- GParamSpec *param,
- EvWindow *ev_window)
+ev_window_search_start (EvWindow *ev_window)
{
- gboolean case_sensitive;
+ EggFindBar *find_bar = EGG_FIND_BAR (ev_window->priv->find_bar);
const char *search_string;
if (!ev_window->priv->document || !EV_IS_DOCUMENT_FIND (ev_window->priv->document))
return;
-
- /* Either the string or case sensitivity could have changed. */
- case_sensitive = egg_find_bar_get_case_sensitive (find_bar);
- search_string = egg_find_bar_get_search_string (find_bar);
- ev_view_find_search_changed (EV_VIEW (ev_window->priv->view));
+ search_string = egg_find_bar_get_search_string (find_bar);
ev_window_clear_find_job (ev_window);
-
if (search_string && search_string[0]) {
ev_window->priv->find_job = ev_job_find_new (ev_window->priv->document,
ev_document_model_get_page (ev_window->priv->model),
ev_document_get_n_pages (ev_window->priv->document),
search_string,
- case_sensitive);
+ egg_find_bar_get_case_sensitive (find_bar));
g_signal_connect (ev_window->priv->find_job, "finished",
G_CALLBACK (ev_window_find_job_finished_cb),
ev_window);
ev_job_scheduler_push_job (ev_window->priv->find_job, EV_JOB_PRIORITY_NONE);
} else {
ev_window_update_actions (ev_window);
- egg_find_bar_set_status_text (EGG_FIND_BAR (ev_window->priv->find_bar),
- NULL);
+ egg_find_bar_set_status_text (find_bar, NULL);
gtk_widget_queue_draw (GTK_WIDGET (ev_window->priv->view));
}
}
+static void
+find_bar_search_changed_cb (EggFindBar *find_bar,
+ GParamSpec *param,
+ EvWindow *ev_window)
+{
+ /* Either the string or case sensitivity could have changed. */
+ ev_view_find_search_changed (EV_VIEW (ev_window->priv->view));
+ ev_window_search_start (ev_window);
+}
+
static void
find_bar_visibility_changed_cb (EggFindBar *find_bar,
GParamSpec *param,
if (ev_window->priv->document &&
EV_IS_DOCUMENT_FIND (ev_window->priv->document)) {
ev_view_find_set_highlight_search (EV_VIEW (ev_window->priv->view), visible);
- ev_view_find_search_changed (EV_VIEW (ev_window->priv->view));
ev_window_update_actions (ev_window);
if (visible)
- find_bar_search_changed_cb (find_bar, NULL, ev_window);
+ ev_window_search_start (ev_window);
else
egg_find_bar_set_status_text (EGG_FIND_BAR (ev_window->priv->find_bar), NULL);
}
#endif /* ENABLE_DBUS */
update_chrome_flag (window, EV_CHROME_RAISE_TOOLBAR, FALSE);
- ev_window_set_action_sensitive (window, "ViewToolbar", TRUE);
+ ev_window_set_action_sensitive (window, "ViewToolbar",
+ !ev_window_is_editing_toolbar (window));
ev_window_set_view_accels_sensitivity (window, TRUE);
* often seen keys
*/
if (strcmp (key, "Play") == 0) {
- ev_window_run_presentation (window);
+ ev_window_run_presentation_wrapper (window);
} else if (strcmp (key, "Previous") == 0) {
if (EV_WINDOW_IS_PRESENTATION (window))
ev_view_presentation_previous_page (EV_VIEW_PRESENTATION (window->priv->presentation_view));