2012-02-20 21:47:14 +00:00
|
|
|
/* This file is (c) 2008-2012 Konstantin Isakov <ikm@goldendict.org>
|
2009-10-22 11:38:11 +00:00
|
|
|
* Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */
|
|
|
|
|
|
|
|
#include "articlewebview.hh"
|
|
|
|
#include <QMouseEvent>
|
2011-07-05 19:58:02 +00:00
|
|
|
#include <QWebFrame>
|
2012-09-26 13:59:48 +00:00
|
|
|
#include <QApplication>
|
2009-10-22 11:38:11 +00:00
|
|
|
|
|
|
|
void ArticleWebView::mousePressEvent( QMouseEvent * event )
|
|
|
|
{
|
|
|
|
if ( event->buttons() & Qt::MidButton )
|
|
|
|
midButtonPressed = true;
|
|
|
|
|
|
|
|
QWebView::mousePressEvent( event );
|
2012-09-26 13:59:48 +00:00
|
|
|
|
|
|
|
if ( selectionBySingleClick && ( event->buttons() & Qt::LeftButton ) )
|
|
|
|
{
|
|
|
|
QMouseEvent ev( QEvent::MouseButtonDblClick, event->pos(), Qt::LeftButton, Qt::LeftButton, event->modifiers() );
|
|
|
|
QApplication::sendEvent( page(), &ev );
|
|
|
|
}
|
2009-10-22 11:38:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void ArticleWebView::mouseReleaseEvent( QMouseEvent * event )
|
|
|
|
{
|
|
|
|
bool noMidButton = !( event->buttons() & Qt::MidButton );
|
|
|
|
|
|
|
|
QWebView::mouseReleaseEvent( event );
|
|
|
|
|
|
|
|
if ( midButtonPressed & noMidButton )
|
|
|
|
midButtonPressed = false;
|
|
|
|
}
|
|
|
|
|
2010-04-08 20:37:59 +00:00
|
|
|
void ArticleWebView::mouseDoubleClickEvent( QMouseEvent * event )
|
|
|
|
{
|
|
|
|
QWebView::mouseDoubleClickEvent( event );
|
|
|
|
|
2011-07-05 19:58:02 +00:00
|
|
|
int scrollBarWidth = page()->mainFrame()->scrollBarGeometry( Qt::Vertical ).width();
|
|
|
|
int scrollBarHeight = page()->mainFrame()->scrollBarGeometry( Qt::Horizontal ).height();
|
|
|
|
|
|
|
|
// emit the signal only if we are not double-clicking on scrollbars
|
|
|
|
if ( ( event->x() < width() - scrollBarWidth ) &&
|
|
|
|
( event->y() < height() - scrollBarHeight ) )
|
|
|
|
{
|
|
|
|
emit doubleClicked();
|
|
|
|
}
|
|
|
|
|
2010-04-08 20:37:59 +00:00
|
|
|
}
|
2011-09-03 14:45:43 +00:00
|
|
|
|
|
|
|
void ArticleWebView::focusInEvent( QFocusEvent * event )
|
|
|
|
{
|
|
|
|
QWebView::focusInEvent( event );
|
|
|
|
|
|
|
|
switch( event->reason() )
|
|
|
|
{
|
|
|
|
case Qt::MouseFocusReason:
|
|
|
|
case Qt::TabFocusReason:
|
|
|
|
case Qt::BacktabFocusReason:
|
|
|
|
page()->mainFrame()->evaluateJavaScript("top.focus();");
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2013-01-01 23:05:29 +00:00
|
|
|
|
|
|
|
void ArticleWebView::wheelEvent( QWheelEvent *ev )
|
|
|
|
{
|
|
|
|
if ( ev->modifiers().testFlag( Qt::ControlModifier ) )
|
|
|
|
{
|
|
|
|
ev->ignore();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
QWebView::wheelEvent( ev );
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|