diff options
author | kraxel <kraxel> | 2006-11-17 08:59:35 +0000 |
---|---|---|
committer | kraxel <kraxel> | 2006-11-17 08:59:35 +0000 |
commit | e09202140b3381413080a6562232f2d30965ea7b (patch) | |
tree | 7f603a3e9fd9befa646b98082d8c186218322cfe | |
parent | d627d2f0b66e12ab266def0f56ca2147618ac713 (diff) | |
download | xenwatch-e09202140b3381413080a6562232f2d30965ea7b.tar.gz |
kbd mode runtime switch
-rw-r--r-- | vnc.c | 23 |
1 files changed, 15 insertions, 8 deletions
@@ -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); |