19 | 19 |
|
20 | 20 |
G_DEFINE_TYPE (XAppDisplay, xapp_display, G_TYPE_OBJECT);
|
21 | 21 |
|
22 | |
GtkWidget * create_blanking_window (void);
|
|
22 |
GtkWidget * create_blanking_window (GdkScreen *screen, int monitor);
|
23 | 23 |
|
24 | 24 |
static void
|
25 | 25 |
xapp_display_init (XAppDisplay *self)
|
|
57 | 57 |
}
|
58 | 58 |
|
59 | 59 |
GtkWidget *
|
60 | |
create_blanking_window (void)
|
|
60 |
create_blanking_window (GdkScreen *screen, int monitor)
|
61 | 61 |
{
|
|
62 |
GdkRectangle fullscreen;
|
|
63 |
gdk_screen_get_monitor_geometry(screen, monitor, &fullscreen);
|
62 | 64 |
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
65 |
gtk_window_set_skip_taskbar_hint (GTK_WINDOW (window), TRUE);
|
|
66 |
gtk_window_set_skip_pager_hint (GTK_WINDOW (window), TRUE);
|
|
67 |
gtk_window_resize (GTK_WINDOW (window), fullscreen.width, fullscreen.height);
|
|
68 |
gtk_window_move (GTK_WINDOW (window), fullscreen.x, fullscreen.y);
|
63 | 69 |
gtk_widget_set_visible (window, TRUE);
|
64 | 70 |
return window;
|
65 | 71 |
}
|
|
74 | 80 |
if (self->priv->windows != NULL)
|
75 | 81 |
return;
|
76 | 82 |
|
77 | |
GdkScreen *active_screen = gtk_window_get_screen (window);
|
78 | |
int active_monitor = gdk_screen_get_number (active_screen);
|
79 | |
|
80 | |
GdkScreen *screen = gdk_screen_get_default ();
|
|
83 |
GdkScreen *screen = gtk_window_get_screen (window);
|
|
84 |
int active_monitor = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window(window));
|
81 | 85 |
self->priv->num_outputs = gdk_screen_get_n_monitors (screen);
|
82 | 86 |
self->priv->windows = g_new (GtkWidget *, self->priv->num_outputs);
|
83 | 87 |
|
84 | 88 |
for (i = 0; i < self->priv->num_outputs; i++) {
|
85 | |
self->priv->windows[i] = create_blanking_window ();
|
|
89 |
if (i != active_monitor) {
|
|
90 |
self->priv->windows[i] = create_blanking_window (screen, i);
|
|
91 |
}
|
|
92 |
else {
|
|
93 |
// initialize at NULL so it gets properly skipped when windows get destroyed
|
|
94 |
self->priv->windows[i] = NULL;
|
|
95 |
}
|
86 | 96 |
}
|
87 | 97 |
}
|
88 | 98 |
|