Merge branch 'Temp' into Qt4x5

Conflicts:
	mainwindow.cc
This commit is contained in:
Abs62 2013-12-20 18:51:17 +04:00
commit d133ae7369
3 changed files with 85 additions and 12 deletions

View file

@ -799,6 +799,22 @@ Class load() throw( exError )
height = maximizedMainWindowGeometry.namedItem( "height" ).toElement().text().toInt(); height = maximizedMainWindowGeometry.namedItem( "height" ).toElement().text().toInt();
c.maximizedMainWindowGeometry = QRect( x, y, width, height ); c.maximizedMainWindowGeometry = QRect( x, y, width, height );
} }
QDomNode normalMainWindowGeometry = root.namedItem( "normalMainWindowGeometry" );
if ( !normalMainWindowGeometry.isNull() )
{
int x = 0, y = 0, width = 0, height = 0;
if( !normalMainWindowGeometry.namedItem( "x" ).isNull() )
x = normalMainWindowGeometry.namedItem( "x" ).toElement().text().toInt();
if( !normalMainWindowGeometry.namedItem( "y" ).isNull() )
y = normalMainWindowGeometry.namedItem( "y" ).toElement().text().toInt();
if( !normalMainWindowGeometry.namedItem( "width" ).isNull() )
width = normalMainWindowGeometry.namedItem( "width" ).toElement().text().toInt();
if( !normalMainWindowGeometry.namedItem( "height" ).isNull() )
height = normalMainWindowGeometry.namedItem( "height" ).toElement().text().toInt();
c.normalMainWindowGeometry = QRect( x, y, width, height );
}
#endif #endif
QDomNode dictInfoGeometry = root.namedItem( "dictInfoGeometry" ); QDomNode dictInfoGeometry = root.namedItem( "dictInfoGeometry" );
@ -1536,6 +1552,25 @@ void save( Class const & c ) throw( exError )
opt = dd.createElement( "height" ); opt = dd.createElement( "height" );
opt.appendChild( dd.createTextNode( QString::number( c.maximizedMainWindowGeometry.height() ) ) ); opt.appendChild( dd.createTextNode( QString::number( c.maximizedMainWindowGeometry.height() ) ) );
maximizedMainWindowGeometry.appendChild( opt ); maximizedMainWindowGeometry.appendChild( opt );
QDomElement normalMainWindowGeometry = dd.createElement( "normalMainWindowGeometry" );
root.appendChild( normalMainWindowGeometry );
opt = dd.createElement( "x" );
opt.appendChild( dd.createTextNode( QString::number( c.normalMainWindowGeometry.x() ) ) );
normalMainWindowGeometry.appendChild( opt );
opt = dd.createElement( "y" );
opt.appendChild( dd.createTextNode( QString::number( c.normalMainWindowGeometry.y() ) ) );
normalMainWindowGeometry.appendChild( opt );
opt = dd.createElement( "width" );
opt.appendChild( dd.createTextNode( QString::number( c.normalMainWindowGeometry.width() ) ) );
normalMainWindowGeometry.appendChild( opt );
opt = dd.createElement( "height" );
opt.appendChild( dd.createTextNode( QString::number( c.normalMainWindowGeometry.height() ) ) );
normalMainWindowGeometry.appendChild( opt );
} }
#endif #endif

View file

@ -475,6 +475,7 @@ struct Class
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
QRect maximizedMainWindowGeometry; QRect maximizedMainWindowGeometry;
QRect normalMainWindowGeometry;
#endif #endif
QString editDictionaryCommandLine; // Command line to call external editor for dictionary QString editDictionaryCommandLine; // Command line to call external editor for dictionary

View file

@ -38,6 +38,7 @@
#include "fsencoding.hh" #include "fsencoding.hh"
#include "historypanewidget.hh" #include "historypanewidget.hh"
#include "qt4x5.hh" #include "qt4x5.hh"
#include <QDesktopWidget>
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
#include "lionsupport.h" #include "lionsupport.h"
@ -48,6 +49,10 @@
#include "mouseover_win32/GDDataTranfer.h" #include "mouseover_win32/GDDataTranfer.h"
#include "wstring.hh" #include "wstring.hh"
#include "wstring_qt.hh" #include "wstring_qt.hh"
#define gdStoreNormalGeometryEvent ( ( QEvent::Type )( QEvent::User + 1 ) )
#define gdApplyNormalGeometryEvent ( ( QEvent::Type )( QEvent::User + 2 ) )
#endif #endif
#ifdef HAVE_X11 #ifdef HAVE_X11
@ -654,13 +659,16 @@ MainWindow::MainWindow( Config::Class & cfg_ ):
ui.historyList->installEventFilter( this ); ui.historyList->installEventFilter( this );
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
QRect baseGeometry; if( cfg.normalMainWindowGeometry.width() <= 0 )
{
QRect r = QApplication::desktop()->availableGeometry();
cfg.normalMainWindowGeometry.setRect( r.width() / 4, r.height() / 4, r.width() / 2, r.height() / 2 );
}
if( cfg.maximizedMainWindowGeometry.width() > 0 ) if( cfg.maximizedMainWindowGeometry.width() > 0 )
{ {
setGeometry( cfg.maximizedMainWindowGeometry );
if ( cfg.mainWindowGeometry.size() ) if ( cfg.mainWindowGeometry.size() )
restoreGeometry( cfg.mainWindowGeometry ); restoreGeometry( cfg.mainWindowGeometry );
baseGeometry = geometry();
setGeometry( cfg.maximizedMainWindowGeometry );
if ( cfg.mainWindowState.size() ) if ( cfg.mainWindowState.size() )
restoreState( cfg.mainWindowState, 1 ); restoreState( cfg.mainWindowState, 1 );
setWindowState( windowState() | Qt::WindowMaximized ); setWindowState( windowState() | Qt::WindowMaximized );
@ -742,15 +750,6 @@ MainWindow::MainWindow( Config::Class & cfg_ ):
{ {
show(); show();
focusTranslateLine(); focusTranslateLine();
#ifdef Q_OS_WIN
if( baseGeometry.width() > 0 )
{
hide();
setGeometry( baseGeometry );
showMaximized();
activateWindow();
}
#endif
} }
connect( &newReleaseCheckTimer, SIGNAL( timeout() ), connect( &newReleaseCheckTimer, SIGNAL( timeout() ),
@ -877,9 +876,15 @@ MainWindow::~MainWindow()
{ {
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
if( isMaximized() ) if( isMaximized() )
{
cfg.maximizedMainWindowGeometry = geometry(); cfg.maximizedMainWindowGeometry = geometry();
}
else else
{
cfg.maximizedMainWindowGeometry = QRect(); cfg.maximizedMainWindowGeometry = QRect();
if( !isMinimized() )
cfg.normalMainWindowGeometry = geometry();
}
#endif #endif
// Close all tabs -- they should be destroyed before network managers // Close all tabs -- they should be destroyed before network managers
@ -2032,6 +2037,23 @@ bool MainWindow::handleBackForwardMouseButtons ( QMouseEvent * event) {
bool MainWindow::eventFilter( QObject * obj, QEvent * ev ) bool MainWindow::eventFilter( QObject * obj, QEvent * ev )
{ {
#ifdef Q_OS_WIN
if( obj == this && ev->type() == gdStoreNormalGeometryEvent )
{
if( !isMaximized() && !isMinimized() && !isFullScreen() )
cfg.normalMainWindowGeometry = normalGeometry();
ev->accept();
return true;
}
if( obj == this && ev->type() == gdApplyNormalGeometryEvent )
{
if( !isMaximized() && !isMinimized() && !isFullScreen() )
setGeometry( cfg.normalMainWindowGeometry );
ev->accept();
return true;
}
#endif
if ( ev->type() == QEvent::ShortcutOverride ) { if ( ev->type() == QEvent::ShortcutOverride ) {
// Handle Ctrl+H to show the History Pane. // Handle Ctrl+H to show the History Pane.
QKeyEvent * ke = static_cast<QKeyEvent*>( ev ); QKeyEvent * ke = static_cast<QKeyEvent*>( ev );
@ -2054,6 +2076,13 @@ bool MainWindow::eventFilter( QObject * obj, QEvent * ev )
// when the main window is moved or resized, hide the word list suggestions // when the main window is moved or resized, hide the word list suggestions
if ( obj == this && ( ev->type() == QEvent::Move || ev->type() == QEvent::Resize ) ) if ( obj == this && ( ev->type() == QEvent::Move || ev->type() == QEvent::Resize ) )
{ {
#ifdef Q_OS_WIN
if( !isMaximized() && !isMinimized() && !isFullScreen() && gdAskMessage != 0xFFFFFFFF )
{
QEvent *ev = new QEvent( gdStoreNormalGeometryEvent );
qApp->postEvent( this, ev );
}
#endif
if ( !cfg.preferences.searchInDock ) if ( !cfg.preferences.searchInDock )
{ {
translateBox->setPopupEnabled( false ); translateBox->setPopupEnabled( false );
@ -2065,6 +2094,14 @@ bool MainWindow::eventFilter( QObject * obj, QEvent * ev )
{ {
QWindowStateChangeEvent *stev = static_cast< QWindowStateChangeEvent *>( ev ); QWindowStateChangeEvent *stev = static_cast< QWindowStateChangeEvent *>( ev );
wasMaximized = ( stev->oldState() == Qt::WindowMaximized && isMinimized() ); wasMaximized = ( stev->oldState() == Qt::WindowMaximized && isMinimized() );
#ifdef Q_OS_WIN
if( stev->oldState() == Qt::WindowMaximized && !isMinimized() && cfg.normalMainWindowGeometry.width() > 0 )
{
QEvent *ev = new QEvent( gdApplyNormalGeometryEvent );
qApp->postEvent( this, ev );
}
#endif
} }
if ( ev->type() == QEvent::MouseButtonPress ) { if ( ev->type() == QEvent::MouseButtonPress ) {