diff --git a/src/gtk-tpdfv-screen.c b/src/gtk-tpdfv-screen.c
index a118d79f67c6a6a559b4cbad93b6b713711de3ea..104522e01e81b2d6b0d7f063d81933ba3b1de5a3 100644 (file)
--- a/src/gtk-tpdfv-screen.c
+++ b/src/gtk-tpdfv-screen.c
}
}
return screens;
-} /* gtk_tpdfv_new */
+} /* gtk_tpdfv_screens_init */
void
gtk_tpdfv_screens_destroy(gtk_tpdfv_screens_t *screens)
if (screens->screens)
free(screens->screens);
free(screens);
-} /* gtk_tpdfv_destroy_screens */
+} /* gtk_tpdfv_screens_destroy */
gint
gtk_tpdfv_screens_number(const gtk_tpdfv_screens_t *screens)
return screens->num_screens;
} /* gtk_tpdfv_screens_number */
+void
+gtk_tpdfv_screens_window_set(const gtk_tpdfv_screens_t *screens,
+ GtkWindow *window, gint screen)
+{
+ screen_t *s_old, *s_new;
+
+ gint x = 0, y = 0;
+ gint current;
+
+ if ((! screens) || (! window)
+ || (screen < 0) || (screen >= screens->num_screens))
+ return;
+
+ gtk_window_get_position(window, &x, &y);
+
+ current = gtk_tpdfv_screens_window_get(screens, window);
+ assert((0 <= current) && (current < screens->num_screens));
+
+ s_old = screens->screens + current;
+ s_new = screens->screens + screen;
+
+ gtk_window_set_screen(window, s_new->screen);
+ gtk_window_move(window,
+ s_new->x + (x - s_old->x), s_new->y + (y - s_old->y));
+} /* gtk_tpdfv_screens_window_set */
+
+gint
+gtk_tpdfv_screens_window_get(const gtk_tpdfv_screens_t *screens,
+ GtkWindow *window)
+{
+ GdkScreen *gdk_screen;
+
+ gint x = 0, y = 0;
+ gint i;
+
+ if ((! screens) || (! window))
+ return -1;
+
+ gdk_screen = gtk_window_get_screen(window);
+ gtk_window_get_position(window, &x, &y);
+
+ for (i = 0; i < screens->num_screens; ++i) {
+ screen_t *screen = screens->screens + i;
+
+ if ((screen->screen == gdk_screen)
+ && (screen->x <= x) && (x <= screen->x + screen->width)
+ && (screen->y <= y) && (y <= screen->y + screen->height))
+ return i;
+ }
+ return -1;
+} /* gtk_tpdfv_screens_window_set */
+
/* vim: set tw=78 sw=4 ts=4 noexpandtab : */