summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2011-04-07 14:51:33 +0200
committerMarc-André Lureau <marcandre.lureau@redhat.com>2011-04-08 13:29:59 +0200
commiteb16fc2f699267f376ce17999c1afd00430913b1 (patch)
tree7352def20804bae064ac05edd79cb5656e531345 /gtk
parent33a8beb089b6bd3b906fbfb2e6ec8c6f82c7e6f8 (diff)
gtk/spicy: update status of all windows
Diffstat (limited to 'gtk')
-rw-r--r--gtk/spicy.c40
1 files changed, 28 insertions, 12 deletions
diff --git a/gtk/spicy.c b/gtk/spicy.c
index 3023a7c..05badd0 100644
--- a/gtk/spicy.c
+++ b/gtk/spicy.c
@@ -255,7 +255,7 @@ static int connect_dialog(GtkWidget *parent, SpiceSession *session)
/* ------------------------------------------------------------------ */
-static void update_status(struct spice_window *win)
+static void update_status_window(struct spice_window *win)
{
char status[256];
@@ -270,6 +270,17 @@ static void update_status(struct spice_window *win)
gtk_label_set_text(GTK_LABEL(win->status), status);
}
+static void update_status(struct spice_connection *conn)
+{
+ int i;
+
+ for (i = 0; i < SPICE_N_ELEMENTS(conn->wins); i++) {
+ if (conn->wins[i] == NULL)
+ continue;
+ update_status_window(conn->wins[i]);
+ }
+}
+
static void menu_cb_connect(GtkAction *action, void *data)
{
struct spice_connection *conn;
@@ -427,7 +438,7 @@ static void mouse_grab_cb(GtkWidget *widget, gint grabbed, gpointer data)
struct spice_window *win = data;
win->mouse_grabbed = grabbed;
- update_status(win);
+ update_status(win->conn);
}
static void restore_configuration(struct spice_window *win)
@@ -967,7 +978,7 @@ static spice_window *create_spice_window(spice_connection *conn, int id, SpiceCh
win->status = gtk_label_new("status line");
gtk_misc_set_alignment(GTK_MISC(win->status), 0, 0.5);
gtk_misc_set_padding(GTK_MISC(win->status), 3, 1);
- update_status(win);
+ update_status_window(win);
frame = gtk_frame_new(NULL);
gtk_box_pack_start(GTK_BOX(win->statusbar), frame, TRUE, TRUE, 0);
@@ -1122,7 +1133,7 @@ static void main_mouse_update(SpiceChannel *channel, gpointer data)
conn->mouse_state = "?";
break;
}
- update_status(conn->wins[0]);
+ update_status(conn);
}
static void main_agent_update(SpiceChannel *channel, gpointer data)
@@ -1131,21 +1142,26 @@ static void main_agent_update(SpiceChannel *channel, gpointer data)
g_object_get(channel, "agent-connected", &conn->agent_connected, NULL);
conn->agent_state = conn->agent_connected ? _("yes") : _("no");
- update_status(conn->wins[0]);
+ update_status(conn);
}
static void inputs_modifiers(SpiceChannel *channel, gpointer data)
{
spice_connection *conn = data;
- int m;
+ int m, i;
g_object_get(channel, "key-modifiers", &m, NULL);
- gtk_label_set_text(GTK_LABEL(conn->wins[0]->st[STATE_SCROLL_LOCK]),
- m & SPICE_KEYBOARD_MODIFIER_FLAGS_SCROLL_LOCK ? _("SCROLL") : "");
- gtk_label_set_text(GTK_LABEL(conn->wins[0]->st[STATE_CAPS_LOCK]),
- m & SPICE_KEYBOARD_MODIFIER_FLAGS_CAPS_LOCK ? _("CAPS") : "");
- gtk_label_set_text(GTK_LABEL(conn->wins[0]->st[STATE_NUM_LOCK]),
- m & SPICE_KEYBOARD_MODIFIER_FLAGS_NUM_LOCK ? _("NUM") : "");
+ for (i = 0; i < SPICE_N_ELEMENTS(conn->wins); i++) {
+ if (conn->wins[i] == NULL)
+ continue;
+
+ gtk_label_set_text(GTK_LABEL(conn->wins[i]->st[STATE_SCROLL_LOCK]),
+ m & SPICE_KEYBOARD_MODIFIER_FLAGS_SCROLL_LOCK ? _("SCROLL") : "");
+ gtk_label_set_text(GTK_LABEL(conn->wins[i]->st[STATE_CAPS_LOCK]),
+ m & SPICE_KEYBOARD_MODIFIER_FLAGS_CAPS_LOCK ? _("CAPS") : "");
+ gtk_label_set_text(GTK_LABEL(conn->wins[i]->st[STATE_NUM_LOCK]),
+ m & SPICE_KEYBOARD_MODIFIER_FLAGS_NUM_LOCK ? _("NUM") : "");
+ }
}
static void display_mark(SpiceChannel *channel, gint mark, spice_window *win)