aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkraxel <kraxel>2006-11-17 08:59:35 +0000
committerkraxel <kraxel>2006-11-17 08:59:35 +0000
commite09202140b3381413080a6562232f2d30965ea7b (patch)
tree7f603a3e9fd9befa646b98082d8c186218322cfe
parentd627d2f0b66e12ab266def0f56ca2147618ac713 (diff)
downloadxenwatch-e09202140b3381413080a6562232f2d30965ea7b.tar.gz
kbd mode runtime switch
-rw-r--r--vnc.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/vnc.c b/vnc.c
index ac236ab..5bb120d 100644
--- a/vnc.c
+++ b/vnc.c
@@ -134,7 +134,7 @@ static void vnc_window_texts(struct vnc_window *vnc)
snprintf(textline, sizeof(textline), "%dx%d",
vnc->client->width, vnc->client->height);
gtk_label_set_text(GTK_LABEL(vnc->res), textline);
- gtk_label_set_text(GTK_LABEL(vnc->kbd), vnc->uskbd ? "kbd: us" : "kbd: local");
+ gtk_button_set_label(GTK_BUTTON(vnc->kbd), vnc->uskbd ? "kbd: us" : "kbd: local");
}
static void vnc_window_conf(struct vnc_window *vnc)
@@ -501,6 +501,14 @@ static gboolean key_cb(GtkWidget *widget, GdkEventKey *event,
return TRUE;
}
+static void kbd_btn(GtkWidget *widget, gpointer data)
+{
+ struct vnc_window *vnc = data;
+
+ vnc->uskbd = !vnc->uskbd;
+ vnc_window_texts(vnc);
+}
+
static GdkFilterReturn event_filter(GdkXEvent *gdkxevent, GdkEvent *gtkevent,
gpointer data)
{
@@ -628,8 +636,10 @@ GtkWidget *vnc_open(char *hostname, int tcpport, unsigned long flags,
/* labels for the status line */
vnc->line = gtk_label_new("status line");
- vnc->kbd = gtk_label_new("keyboard mode");
vnc->res = gtk_label_new("vnc screen resolution");
+ vnc->kbd = gtk_button_new_with_label("keyboard mode");
+ g_signal_connect(G_OBJECT(vnc->kbd), "clicked",
+ G_CALLBACK(kbd_btn), vnc);
/* packing */
vbox = gtk_vbox_new(FALSE, 0);
@@ -645,15 +655,12 @@ GtkWidget *vnc_open(char *hostname, int tcpport, unsigned long flags,
gtk_misc_set_padding(GTK_MISC(vnc->line), 3, 1);
frame = gtk_frame_new(NULL);
- gtk_box_pack_end(GTK_BOX(hbox), frame, FALSE, TRUE, 0);
- gtk_container_add(GTK_CONTAINER(frame), vnc->kbd);
- gtk_misc_set_padding(GTK_MISC(vnc->kbd), 3, 1);
-
- frame = gtk_frame_new(NULL);
- gtk_box_pack_end(GTK_BOX(hbox), frame, FALSE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(frame), vnc->res);
gtk_misc_set_padding(GTK_MISC(vnc->res), 3, 1);
+ gtk_box_pack_start(GTK_BOX(hbox), vnc->kbd, FALSE, TRUE, 0);
+
/* show window */
gtk_widget_show_all(vnc->win);
vnc_window_conf(vnc);