20
20
#include "bamf-legacy-screen.h"
21
#include "bamf-legacy-window-test.h"
21
#include "bamf-legacy-screen-private.h"
22
22
#include <gio/gio.h>
24
24
G_DEFINE_TYPE (BamfLegacyScreen, bamf_legacy_screen, G_TYPE_OBJECT);
25
25
#define BAMF_LEGACY_SCREEN_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE(obj, \
26
26
BAMF_TYPE_LEGACY_SCREEN, BamfLegacyScreenPrivate))
28
static BamfLegacyScreen *static_screen = NULL;
100
102
class = parts[3];
103
window = BAMF_LEGACY_WINDOW (bamf_legacy_window_test_new (xid, name, class, exec));
104
self->priv->windows = g_list_append (self->priv->windows, window);
105
g_signal_emit (window, legacy_screen_signals[STACKING_CHANGED], 0);
107
g_signal_connect (G_OBJECT (window), "closed",
108
(GCallback) handle_window_closed, self);
110
g_signal_emit (self, legacy_screen_signals[WINDOW_OPENED], 0, window);
105
BamfLegacyWindowTest *test_win = bamf_legacy_window_test_new (xid, name, class, exec);
106
_bamf_legacy_screen_open_test_window (self, test_win);
112
108
else if (g_strcmp0 (parts[0], "close") == 0 && parts_size == 2)
385
bamf_legacy_screen_dispose (GObject *object)
381
bamf_legacy_screen_finalize (GObject *object)
387
G_OBJECT_CLASS (bamf_legacy_screen_parent_class)->dispose (object);
383
BamfLegacyScreen *self = BAMF_LEGACY_SCREEN (object);
385
if (self->priv->windows)
386
g_list_free_full (self->priv->windows, g_object_unref);
388
if (self->priv->file)
389
g_object_unref (self->priv->file);
391
if (self->priv->stream)
392
g_object_unref (self->priv->stream);
394
static_screen = NULL;
396
G_OBJECT_CLASS (bamf_legacy_screen_parent_class)->finalize (object);
399
408
GObjectClass *object_class = G_OBJECT_CLASS (klass);
401
object_class->dispose = bamf_legacy_screen_dispose;
410
object_class->finalize = bamf_legacy_screen_finalize;
403
412
g_type_class_add_private (klass, sizeof (BamfLegacyScreenPrivate));
444
static BamfLegacyScreen *self = NULL;
446
453
BamfLegacyScreen *
447
454
bamf_legacy_screen_get_default ()
456
BamfLegacyScreen *self;
459
return static_screen;
452
461
self = (BamfLegacyScreen *) g_object_new (BAMF_TYPE_LEGACY_SCREEN, NULL);
462
static_screen = self;
454
464
self->priv->legacy_screen = wnck_screen_get_default ();
462
472
g_signal_connect (G_OBJECT (self->priv->legacy_screen), "active-window-changed",
463
473
(GCallback) handle_active_window_changed, self);
475
return static_screen;
479
// Private functions for testing purposes
481
void _bamf_legacy_screen_open_test_window (BamfLegacyScreen *self, BamfLegacyWindowTest *test_window)
484
BamfLegacyWindow *window;
487
g_return_if_fail (BAMF_IS_LEGACY_SCREEN (self));
488
g_return_if_fail (BAMF_IS_LEGACY_WINDOW_TEST (test_window));
490
window = BAMF_LEGACY_WINDOW (test_window);
491
xid = bamf_legacy_window_get_xid (window);
493
for (l = self->priv->windows; l; l = l->next)
495
if (bamf_legacy_window_get_xid (BAMF_LEGACY_WINDOW (l->data)) == xid)
501
self->priv->windows = g_list_append (self->priv->windows, window);
502
g_signal_emit (self, legacy_screen_signals[STACKING_CHANGED], 0);
504
g_signal_connect (G_OBJECT (window), "closed",
505
(GCallback) handle_window_closed, self);
507
g_signal_emit (self, legacy_screen_signals[WINDOW_OPENED], 0, window);
510
void _bamf_legacy_screen_close_test_window (BamfLegacyScreen *self, BamfLegacyWindowTest *test_window)
512
g_return_if_fail (BAMF_IS_LEGACY_SCREEN (self));
513
g_return_if_fail (BAMF_IS_LEGACY_WINDOW_TEST (test_window));
515
// This will cause handle_window_closed to be called
516
bamf_legacy_window_test_close (BAMF_LEGACY_WINDOW_TEST (test_window));