zoom_slider->setRange(0, 100);
connect(zoom_slider, SIGNAL(valueChanged(int)),
this, SLOT(setZoomLevel(int)));
+ connect(zoom_slider, SIGNAL(sliderReleased()),
+ this, SLOT(forceRepaint()));
zoom_slider->setValue(settings.value("zoomlevel", 95).toInt());
toolbar->addWidget(zoom_slider);
old_status = status;
}
-//resizes the widget to use available screen space
+void MainWindow::forceRepaint()
+{
+ if(vnc_view)
+ vnc_view->forceFullRepaint();
+}
+
+//updates available screen space for current zoom level
//necessary when rotating, showing fullscreen, etc.
void MainWindow::forceResize()
{
vnc_view->setZoomLevel(level);
int new_width = vnc_view->width();
- center = center * (double(new_width)/old_width);
- //scroll to center
- scroll_area->ensureVisible(center.x(), center.y(),
- scroll_area->width()/2, scroll_area->height()/2);
+ //scroll to center, if zoom level actually changed
+ if(new_width != old_width) {
+ center = center * (double(new_width)/old_width);
+ scroll_area->ensureVisible(center.x(), center.y(),
+ scroll_area->width()/2, scroll_area->height()/2);
+ vnc_view->update();
+ }
}
void showConnectDialog();
void connectToHost(QString url, int quality, int listen_port);
void disconnectFromHost();
+ void forceRepaint();
void forceResize();
void forceResizeDelayed();
void sendTab() { vnc_view->sendKey(Qt::Key_Tab); }