mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-19 18:26:34 +01:00
Disabled opacity effect in animated tab previews by default.
It can still be enabled with ENABLE_OPACITY_EFFECT build variable. This is final fix for #663
This commit is contained in:
parent
9c31ff875e
commit
efe5ed8e7d
10
BUILDING
10
BUILDING
@ -100,6 +100,16 @@ Available Defines
|
|||||||
example:
|
example:
|
||||||
$ export NONBLOCK_JS_DIALOGS="true"
|
$ export NONBLOCK_JS_DIALOGS="true"
|
||||||
|
|
||||||
|
ENABLE_OPACITY_EFFECT Enable opacity effect on animated tab previews. Tab previews
|
||||||
|
will then fade-in on show.
|
||||||
|
However, this feature may result in wrong scrolling into
|
||||||
|
anchor (#) links. Rendering of opacity effect may also be
|
||||||
|
garbled due to Flash.
|
||||||
|
(disabled by default)
|
||||||
|
|
||||||
|
example:
|
||||||
|
$ export ENABLE_OPACITY_EFFECT="true"
|
||||||
|
|
||||||
|
|
||||||
Windows specific defines:
|
Windows specific defines:
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ Version 1.4.0
|
|||||||
* use .qupzilla/tmp instead of /tmp for temporary data
|
* use .qupzilla/tmp instead of /tmp for temporary data
|
||||||
* saving passwords should now work for much more sites
|
* saving passwords should now work for much more sites
|
||||||
* don't steal Ctrl+B/U/I shortcuts from page
|
* don't steal Ctrl+B/U/I shortcuts from page
|
||||||
|
* disabled by default opacity effect on tab previews - see BUILDING
|
||||||
* fixed scrolling to anchor in background tabs
|
* fixed scrolling to anchor in background tabs
|
||||||
* fixed parsing UTF-8 filenames in Content-Disposition header
|
* fixed parsing UTF-8 filenames in Content-Disposition header
|
||||||
* fixed crash with context menu in websearchbar and locationbar
|
* fixed crash with context menu in websearchbar and locationbar
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* ============================================================
|
/* ============================================================
|
||||||
* QupZilla - WebKit based browser
|
* QupZilla - WebKit based browser
|
||||||
* Copyright (C) 2010-2012 Alexander Samilovskih <alexsamilovskih@gmail.com>
|
* Copyright (C) 2010-2013 Alexander Samilovskih <alexsamilovskih@gmail.com>
|
||||||
* David Rosca <nowrep@gmail.com>
|
* David Rosca <nowrep@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
@ -59,9 +59,11 @@ TabPreview::TabPreview(QupZilla* mainClass, QWidget* parent)
|
|||||||
setMaximumWidth(250);
|
setMaximumWidth(250);
|
||||||
setMaximumHeight(170);
|
setMaximumHeight(170);
|
||||||
|
|
||||||
|
#ifdef ENABLE_OPACITY_EFFECT
|
||||||
setGraphicsEffect(&m_opacityEffect);
|
setGraphicsEffect(&m_opacityEffect);
|
||||||
m_opacityEffect.setOpacity(0.0);
|
m_opacityEffect.setOpacity(0.0);
|
||||||
connect(&m_opacityTimeLine, SIGNAL(frameChanged(int)), this, SLOT(setOpacity(int)));
|
connect(&m_opacityTimeLine, SIGNAL(frameChanged(int)), this, SLOT(setOpacity(int)));
|
||||||
|
#endif
|
||||||
|
|
||||||
m_animation.setDuration(400);
|
m_animation.setDuration(400);
|
||||||
m_animation.setFrameRange(0, 100);
|
m_animation.setFrameRange(0, 100);
|
||||||
@ -99,6 +101,7 @@ void TabPreview::setAnimationsEnabled(bool enabled)
|
|||||||
|
|
||||||
void TabPreview::hideAnimated()
|
void TabPreview::hideAnimated()
|
||||||
{
|
{
|
||||||
|
#ifdef ENABLE_OPACITY_EFFECT
|
||||||
if (m_opacityTimeLine.state() == QTimeLine::Running) {
|
if (m_opacityTimeLine.state() == QTimeLine::Running) {
|
||||||
m_opacityTimeLine.stop();
|
m_opacityTimeLine.stop();
|
||||||
}
|
}
|
||||||
@ -114,12 +117,16 @@ void TabPreview::hideAnimated()
|
|||||||
else {
|
else {
|
||||||
QFrame::hide();
|
QFrame::hide();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
QFrame::hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabPreview::hide()
|
void TabPreview::hide()
|
||||||
{
|
{
|
||||||
m_previewIndex = -1;
|
m_previewIndex = -1;
|
||||||
|
#ifdef ENABLE_OPACITY_EFFECT
|
||||||
disconnect(&m_opacityTimeLine, SIGNAL(finished()), this, SLOT(hide()));
|
disconnect(&m_opacityTimeLine, SIGNAL(finished()), this, SLOT(hide()));
|
||||||
|
#endif
|
||||||
|
|
||||||
QFrame::hide();
|
QFrame::hide();
|
||||||
}
|
}
|
||||||
@ -163,8 +170,12 @@ void TabPreview::showOnRect(const QRect &r)
|
|||||||
finishingGeometry = QRect(calculatePosition(r, previewSize), previewSize);
|
finishingGeometry = QRect(calculatePosition(r, previewSize), previewSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_OPACITY_EFFECT
|
||||||
if (!m_animationsEnabled) {
|
if (!m_animationsEnabled) {
|
||||||
m_opacityEffect.setOpacity(1.0);
|
m_opacityEffect.setOpacity(1.0);
|
||||||
|
#else
|
||||||
|
if (!m_animationsEnabled || !wasVisible) {
|
||||||
|
#endif
|
||||||
QFrame::setGeometry(finishingGeometry);
|
QFrame::setGeometry(finishingGeometry);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -176,14 +187,18 @@ void TabPreview::showOnRect(const QRect &r)
|
|||||||
m_startGeometry = finishingGeometry;
|
m_startGeometry = finishingGeometry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QFrame::setGeometry(m_startGeometry);
|
||||||
|
|
||||||
calculateSteps(m_startGeometry, finishingGeometry);
|
calculateSteps(m_startGeometry, finishingGeometry);
|
||||||
m_animation.start();
|
m_animation.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_OPACITY_EFFECT
|
||||||
void TabPreview::setOpacity(int opacity)
|
void TabPreview::setOpacity(int opacity)
|
||||||
{
|
{
|
||||||
m_opacityEffect.setOpacity(opacity / 100.0);
|
m_opacityEffect.setOpacity(opacity / 100.0);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void TabPreview::setAnimationFrame(int frame)
|
void TabPreview::setAnimationFrame(int frame)
|
||||||
{
|
{
|
||||||
@ -198,6 +213,7 @@ void TabPreview::setAnimationFrame(int frame)
|
|||||||
|
|
||||||
void TabPreview::showAnimated()
|
void TabPreview::showAnimated()
|
||||||
{
|
{
|
||||||
|
#ifdef ENABLE_OPACITY_EFFECT
|
||||||
disconnect(&m_opacityTimeLine, SIGNAL(finished()), this, SLOT(hide()));
|
disconnect(&m_opacityTimeLine, SIGNAL(finished()), this, SLOT(hide()));
|
||||||
|
|
||||||
if (m_opacityTimeLine.state() == QTimeLine::Running) {
|
if (m_opacityTimeLine.state() == QTimeLine::Running) {
|
||||||
@ -208,6 +224,7 @@ void TabPreview::showAnimated()
|
|||||||
m_opacityTimeLine.setStartFrame(m_opacityEffect.opacity() * 100);
|
m_opacityTimeLine.setStartFrame(m_opacityEffect.opacity() * 100);
|
||||||
m_opacityTimeLine.setEndFrame(100);
|
m_opacityTimeLine.setEndFrame(100);
|
||||||
m_opacityTimeLine.start();
|
m_opacityTimeLine.start();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabPreview::paintEvent(QPaintEvent* pe)
|
void TabPreview::paintEvent(QPaintEvent* pe)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* ============================================================
|
/* ============================================================
|
||||||
* QupZilla - WebKit based browser
|
* QupZilla - WebKit based browser
|
||||||
* Copyright (C) 2010-2012 Alexander Samilovskih <alexsamilovskih@gmail.com>
|
* Copyright (C) 2010-2013 Alexander Samilovskih <alexsamilovskih@gmail.com>
|
||||||
* David Rosca <nowrep@gmail.com>
|
* David Rosca <nowrep@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
@ -21,7 +21,10 @@
|
|||||||
|
|
||||||
#include <QFrame>
|
#include <QFrame>
|
||||||
#include <QTimeLine>
|
#include <QTimeLine>
|
||||||
|
|
||||||
|
#ifdef ENABLE_OPACITY_EFFECT
|
||||||
#include <QGraphicsOpacityEffect>
|
#include <QGraphicsOpacityEffect>
|
||||||
|
#endif
|
||||||
|
|
||||||
class QupZilla;
|
class QupZilla;
|
||||||
class WebTab;
|
class WebTab;
|
||||||
@ -48,8 +51,10 @@ public slots:
|
|||||||
void show();
|
void show();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void setOpacity(int opacity);
|
|
||||||
void setAnimationFrame(int frame);
|
void setAnimationFrame(int frame);
|
||||||
|
#ifdef ENABLE_OPACITY_EFFECT
|
||||||
|
void setOpacity(int opacity);
|
||||||
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent* pe);
|
void paintEvent(QPaintEvent* pe);
|
||||||
@ -66,8 +71,10 @@ private:
|
|||||||
int m_previewIndex;
|
int m_previewIndex;
|
||||||
bool m_animationsEnabled;
|
bool m_animationsEnabled;
|
||||||
|
|
||||||
|
#ifdef ENABLE_OPACITY_EFFECT
|
||||||
QTimeLine m_opacityTimeLine;
|
QTimeLine m_opacityTimeLine;
|
||||||
QGraphicsOpacityEffect m_opacityEffect;
|
QGraphicsOpacityEffect m_opacityEffect;
|
||||||
|
#endif
|
||||||
|
|
||||||
QTimeLine m_animation;
|
QTimeLine m_animation;
|
||||||
QRect m_startGeometry;
|
QRect m_startGeometry;
|
||||||
|
@ -257,12 +257,14 @@ QPixmap WebTab::renderTabPreview()
|
|||||||
{
|
{
|
||||||
TabbedWebView* currentWebView = p_QupZilla->weView();
|
TabbedWebView* currentWebView = p_QupZilla->weView();
|
||||||
WebPage* page = m_view->page();
|
WebPage* page = m_view->page();
|
||||||
const QSize oldSize = currentWebView ? currentWebView->page()->viewportSize() : page->viewportSize();
|
const QSize oldSize = page->viewportSize();
|
||||||
const QPoint originalScrollPosition = page->mainFrame()->scrollPosition();
|
const QPoint originalScrollPosition = page->mainFrame()->scrollPosition();
|
||||||
|
|
||||||
// Hack to ensure rendering the same preview before and after the page was shown for the first time
|
// Hack to ensure rendering the same preview before and after the page was shown for the first time
|
||||||
// This can occur eg. with opening background tabs
|
// This can occur eg. with opening background tabs
|
||||||
page->setViewportSize(oldSize);
|
if (currentWebView) {
|
||||||
|
page->setViewportSize(currentWebView->size());
|
||||||
|
}
|
||||||
|
|
||||||
const int previewWidth = 230;
|
const int previewWidth = 230;
|
||||||
const int previewHeight = 150;
|
const int previewHeight = 150;
|
||||||
|
Loading…
Reference in New Issue
Block a user