diff --git a/goldendict.pro b/goldendict.pro index 751bff26..04530b7e 100644 --- a/goldendict.pro +++ b/goldendict.pro @@ -482,15 +482,13 @@ SOURCES += folding.cc \ win32 { FORMS += texttospeechsource.ui - SOURCES += mouseover_win32/ThTypes.c \ - wordbyauto.cc \ + SOURCES += wordbyauto.cc \ guids.c \ x64.cc \ speechclient_win.cc \ texttospeechsource.cc \ speechhlp.cc - HEADERS += mouseover_win32/ThTypes.h \ - wordbyauto.hh \ + HEADERS += wordbyauto.hh \ uiauto.hh \ x64.hh \ texttospeechsource.hh \ diff --git a/mainwindow.cc b/mainwindow.cc index 914aef61..e5208bf3 100644 --- a/mainwindow.cc +++ b/mainwindow.cc @@ -57,7 +57,6 @@ #ifdef Q_OS_WIN32 #include -#include "mouseover_win32/GDDataTranfer.h" #include "wstring.hh" #include "wstring_qt.hh" @@ -884,10 +883,6 @@ MainWindow::MainWindow( Config::Class & cfg_ ): #ifdef Q_OS_MAC LionSupport::addFullscreen(this); #endif -#ifdef Q_OS_WIN32 - gdAskMessage = RegisterWindowMessage( GD_MESSAGE_NAME ); - ( static_cast< QHotkeyApplication * >( qApp ) )->setMainWindow( this ); -#endif ui.centralWidget->grabGesture( Gestures::GDPinchGestureType ); ui.centralWidget->grabGesture( Gestures::GDSwipeGestureType ); @@ -4831,14 +4826,6 @@ bool MainWindow::handleGDMessage( MSG * message, long * result ) if( !view ) return true; - LPGDDataStruct lpdata = ( LPGDDataStruct ) message->lParam; - - QString str = view->wordAtPoint( lpdata->Pt.x, lpdata->Pt.y ); - - memset( lpdata->cwData, 0, lpdata->dwMaxLength * sizeof( WCHAR ) ); - str.truncate( lpdata->dwMaxLength - 1 ); - str.toWCharArray( lpdata->cwData ); - *result = 1; return true; } diff --git a/mouseover.cc b/mouseover.cc index 53c20f7d..c18609c7 100644 --- a/mouseover.cc +++ b/mouseover.cc @@ -10,7 +10,6 @@ #include #include #include -#include "mouseover_win32/ThTypes.h" #include "wordbyauto.hh" #include "x64.hh" #endif @@ -93,78 +92,7 @@ static void SetLowLabelToGDSynchroObjects() MouseOver::MouseOver() : pPref(NULL) { -#ifdef Q_OS_WIN32 -HMODULE hm; -ChangeWindowMessageFilterFunc changeWindowMessageFilterFunc = NULL; -ChangeWindowMessageFilterExFunc changeWindowMessageFilterExFunc = NULL; - mouseOverEnabled = false; - - ThTypes_Init(); - memset( GlobalData, 0, sizeof( TGlobalDLLData ) ); -#ifdef Q_OS_WIN64 - memset( GlobalData32, 0, sizeof( TGlobalDLLData32 ) ); -#endif -// strcpy( GlobalData->LibName, -// QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() ).filePath( "GdTextOutHook.dll" ) ).toLocal8Bit().data() ); -#ifdef Q_OS_WIN64 - QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() ).filePath( "GdTextOutHook64.dll" ) ).toWCharArray( GlobalData->LibName ); - QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() + "/x86" ).filePath( "GdTextOutHook.dll" ) ).toWCharArray( GlobalData32->LibName ); -#else - QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() ).filePath( "GdTextOutHook.dll" ) ).toWCharArray( GlobalData->LibName ); -#endif - // Create the window to receive spying results to - - WNDCLASSEX wcex; - - wcex.cbSize = sizeof( WNDCLASSEX ); - - wcex.style = 0; - wcex.lpfnWndProc = ( WNDPROC ) eventHandler; - wcex.cbClsExtra = 0; - wcex.cbWndExtra = 0; - wcex.hInstance = GetModuleHandle( 0 ); - wcex.hIcon = NULL; - wcex.hCursor = NULL, - wcex.hbrBackground = NULL; - wcex.lpszMenuName = NULL; - wcex.lpszClassName = className; - wcex.hIconSm = NULL; - - RegisterClassEx( &wcex ); - - GlobalData->ServerWND = CreateWindow( className, L"", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, GetModuleHandle( 0 ), 0 ); -#ifdef Q_OS_WIN64 - GlobalData32->ServerWND = HandleToLong( GlobalData->ServerWND ); -#endif - -#ifdef Q_OS_WIN64 - spyDll = LoadLibrary( QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() ).filePath( "GdTextOutSpy64.dll" ) ).toStdWString().c_str() ); -#else - spyDll = LoadLibrary( QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() ).filePath( "GdTextOutSpy.dll" ) ).toStdWString().c_str() ); -#endif - - if ( spyDll ) - activateSpyFn = ( ActivateSpyFn ) GetProcAddress( spyDll, "ActivateTextOutSpying" ); - -// Allow messages from low intehrity process - for Vista and Win7 - hm = GetModuleHandle( __TEXT("user32.dll")); - if ( hm != NULL ) { - changeWindowMessageFilterExFunc = (ChangeWindowMessageFilterExFunc)GetProcAddress( hm, "ChangeWindowMessageFilterEx" ); - if( changeWindowMessageFilterExFunc ) { - CHANGEFILTERSTRUCT cfs = { sizeof( CHANGEFILTERSTRUCT ), 0 }; - changeWindowMessageFilterExFunc( GlobalData->ServerWND, WM_MY_SHOW_TRANSLATION, 1 /* MSGFLT_ALLOW */, &cfs ); - } else { - changeWindowMessageFilterFunc = (ChangeWindowMessageFilterFunc)GetProcAddress( hm, "ChangeWindowMessageFilter" ); - if( changeWindowMessageFilterFunc ) - changeWindowMessageFilterFunc( WM_MY_SHOW_TRANSLATION, 1 /* MSGFLT_ADD */ ); - } - } - -//Allow object access from low intehrity process - for Vista and Win7 - SetLowLabelToGDSynchroObjects(); - -#endif } void MouseOver::enableMouseOver() @@ -198,24 +126,10 @@ LRESULT MouseOver::makeScanBitMask() LRESULT res = 0; if( pPref == NULL ) return 0; - if( !pPref->enableScanPopupModifiers || checkModifiersPressed( pPref->scanPopupModifiers ) ) { - res = GD_FLAG_METHOD_STANDARD; - if( pPref->scanPopupUseUIAutomation !=0 ) - res |= GD_FLAG_METHOD_UI_AUTOMATION; - if( pPref->scanPopupUseIAccessibleEx !=0 ) - res |= GD_FLAG_METHOD_IACCESSIBLEEX; - if( pPref->scanPopupUseGDMessage !=0 ) - res |= GD_FLAG_METHOD_GD_MESSAGE; - } + return res; } -#ifdef Q_OS_WIN64 -#define Global_Data GlobalData32 -#else -#define Global_Data GlobalData -#endif - LRESULT CALLBACK MouseOver::eventHandler( HWND hwnd_, UINT msg, WPARAM wparam, LPARAM lparam ) { @@ -232,58 +146,6 @@ LRESULT CALLBACK MouseOver::eventHandler( HWND hwnd_, UINT msg, int wordSeqPos = 0; QString wordSeq; -#ifdef Q_OS_WIN64 - HWND hwnd = ( HWND )LongToHandle( Global_Data->LastWND ); -#else - HWND hwnd = Global_Data->LastWND; -#endif - - if( Global_Data->CurMod.WordLen == 0) - { - if( ( res & GD_FLAG_METHOD_UI_AUTOMATION ) == 0 ) - return 0; - POINT pt = Global_Data->LastPt; - WCHAR *pwstr = gdGetWordAtPointByAutomation( pt ); - if( pwstr == NULL ) return 0; - wordSeq = QString::fromWCharArray( pwstr ); - } - else - { - - // Is the string in utf8 or in locale encoding? - - gd::wchar testBuf[ 256 ]; - - long result = Utf8::decode( Global_Data->CurMod.MatchedWord, - strlen( Global_Data->CurMod.MatchedWord ), - testBuf ); - - if ( result >= 0 ) - { - // It seems to be - QString begin = QString::fromUtf8( Global_Data->CurMod.MatchedWord, - Global_Data->CurMod.BeginPos ).normalized( QString::NormalizationForm_C ); - - QString end = QString::fromUtf8( Global_Data->CurMod.MatchedWord + - Global_Data->CurMod.BeginPos ).normalized( QString::NormalizationForm_C ); - - wordSeq = begin + end; - wordSeqPos = begin.size(); - } - else - { - // It's not, so interpret it as in local encoding - QString begin = QString::fromLocal8Bit( Global_Data->CurMod.MatchedWord, - Global_Data->CurMod.BeginPos ).normalized( QString::NormalizationForm_C ); - - QString end = QString::fromLocal8Bit( Global_Data->CurMod.MatchedWord + - Global_Data->CurMod.BeginPos ).normalized( QString::NormalizationForm_C ); - - wordSeq = begin + end; - wordSeqPos = begin.size(); - } - } - // Now locate the word inside the sequence QString word; @@ -358,7 +220,6 @@ LRESULT CALLBACK MouseOver::eventHandler( HWND hwnd_, UINT msg, } bool forcePopup = false; - forcePopup = emit instance().isGoldenDictWindow( hwnd ); emit instance().hovered( word, forcePopup ); return 0; } @@ -372,15 +233,6 @@ MouseOver::~MouseOver() { #ifdef Q_OS_WIN32 - disableMouseOver(); - - FreeLibrary( spyDll ); - - DestroyWindow( GlobalData->ServerWND ); - - UnregisterClass( className, GetModuleHandle( 0 ) ); - - ThTypes_End(); #endif } diff --git a/preferences.ui b/preferences.ui index 0cc47929..1d05fe0d 100644 --- a/preferences.ui +++ b/preferences.ui @@ -7,7 +7,7 @@ 0 0 636 - 431 + 447 @@ -24,7 +24,7 @@ - 0 + 6 diff --git a/scanpopup.cc b/scanpopup.cc index 8e661506..e61fd4f9 100644 --- a/scanpopup.cc +++ b/scanpopup.cc @@ -282,10 +282,6 @@ ScanPopup::ScanPopup( QWidget * parent, connect( &MouseOver::instance(), SIGNAL( hovered( QString const &, bool ) ), this, SLOT( mouseHovered( QString const &, bool ) ) ); -#ifdef Q_OS_WIN32 - connect( &MouseOver::instance(), SIGNAL( isGoldenDictWindow( HWND ) ), - this, SIGNAL( isGoldenDictWindow( HWND ) ) ); -#endif hideTimer.setSingleShot( true ); hideTimer.setInterval( 400 );