From: Christian Pulvermacher Date: Wed, 13 Oct 2010 13:35:49 +0000 (+0200) Subject: fix refresh issues X-Git-Tag: 0.6~13 X-Git-Url: http://git.maemo.org/git/?p=presencevnc;a=commitdiff_plain;h=c13e92617469999f9b7a2d37c1bee4190f455584 fix refresh issues --- diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 7940a25..ddc67ac 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -69,6 +69,8 @@ MainWindow::MainWindow(QString url, int quality): 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); @@ -266,7 +268,13 @@ void MainWindow::statusChanged(RemoteView::RemoteStatus status) 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() { @@ -362,9 +370,12 @@ void MainWindow::setZoomLevel(int level) 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(); + } } diff --git a/src/mainwindow.h b/src/mainwindow.h index 24a508f..c53e2f3 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -49,6 +49,7 @@ public slots: 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); } diff --git a/src/vncview.cpp b/src/vncview.cpp index 1d4932e..c0f6f16 100644 --- a/src/vncview.cpp +++ b/src/vncview.cpp @@ -450,7 +450,7 @@ void VncView::paintEvent(QPaintEvent *event) void VncView::resizeEvent(QResizeEvent *event) { RemoteView::resizeEvent(event); - forceFullRepaint(); + update(); } bool VncView::event(QEvent *event)