aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vnc.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/vnc.c b/vnc.c
index d3980a7..0e84451 100644
--- a/vnc.c
+++ b/vnc.c
@@ -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);