diff options
Diffstat (limited to 'vnc.c')
-rw-r--r-- | vnc.c | 20 |
1 files changed, 16 insertions, 4 deletions
@@ -42,6 +42,7 @@ struct vnc_window { /* state */ int input_grabbed; + int width, height; enum vnc_state conn_state; /* config */ @@ -77,9 +78,7 @@ static void vnc_window_texts(struct vnc_window *vnc) snprintf(ti, sizeof(ti), "%s (%s)", name, g_get_application_name()); snprintf(st, sizeof(st), "VNC: \"%s\" at %s", name ?: "", vnc->display); - snprintf(si, sizeof(si), "%dx%d", - vnc_display_get_width(VNC_DISPLAY(vnc->vnc)), - vnc_display_get_height(VNC_DISPLAY(vnc->vnc))); + snprintf(si, sizeof(si), "%dx%d", vnc->width, vnc->height); break; case CONN_DISCONNECTED: snprintf(ti, sizeof(ti), "%s", g_get_application_name()); @@ -218,6 +217,17 @@ static void vnc_ungrab(GtkWidget *vncdisplay, void *data) vnc_window_texts(vnc); } +static void vnc_desktop_resize(GtkWidget *vncdisplay, int x, int y, void *data) +{ + struct vnc_window *vnc = data; + + if (vnc->debug) + fprintf(stderr, "%s (%dx%d)\n", __FUNCTION__, x, y); + vnc->width = x; + vnc->height = y; + vnc_window_texts(vnc); +} + static void vnc_credential(GtkWidget *vncdisplay, GValueArray *credList, void *data) @@ -544,7 +554,9 @@ GtkWidget *vnc_open(char *hostname, int tcpport, unsigned long flags, gtk_signal_connect(GTK_OBJECT(vnc->vnc), "vnc-pointer-ungrab", GTK_SIGNAL_FUNC(vnc_ungrab), vnc); gtk_signal_connect(GTK_OBJECT(vnc->vnc), "vnc-auth-credential", - GTK_SIGNAL_FUNC(vnc_credential), NULL); + GTK_SIGNAL_FUNC(vnc_credential), vnc); + gtk_signal_connect(GTK_OBJECT(vnc->vnc), "vnc-desktop-resize", + GTK_SIGNAL_FUNC(vnc_desktop_resize), vnc); ebox = gtk_event_box_new(); gtk_event_box_set_visible_window(GTK_EVENT_BOX(ebox), TRUE); |