Added "Tools" button to EditEntryDlg: Window List and Auto-Type sequence
git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@228 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
		
							parent
							
								
									a5d427d262
								
							
						
					
					
						commit
						699befe618
					
				| 
						 | 
					@ -23,7 +23,7 @@
 | 
				
			||||||
#include "PasswordGenDlg.h"
 | 
					#include "PasswordGenDlg.h"
 | 
				
			||||||
#include "EditEntryDlg.h"
 | 
					#include "EditEntryDlg.h"
 | 
				
			||||||
#include "CalendarDlg.h"
 | 
					#include "CalendarDlg.h"
 | 
				
			||||||
 | 
					#include "TargetWindowDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CEditEntryDlg::CEditEntryDlg(IDatabase* _db, IEntryHandle* _entry,QWidget* parent,  bool modal, bool newEntry)
 | 
					CEditEntryDlg::CEditEntryDlg(IDatabase* _db, IEntryHandle* _entry,QWidget* parent,  bool modal, bool newEntry)
 | 
				
			||||||
: QDialog(parent)
 | 
					: QDialog(parent)
 | 
				
			||||||
| 
						 | 
					@ -107,10 +107,6 @@ CEditEntryDlg::CEditEntryDlg(IDatabase* _db, IEntryHandle* _entry,QWidget* paren
 | 
				
			||||||
	Edit_Comment->setPlainText(entry->comment());
 | 
						Edit_Comment->setPlainText(entry->comment());
 | 
				
			||||||
	InitGroupComboBox();
 | 
						InitGroupComboBox();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* MX-TO-DO: After approval, remove this invokation
 | 
					 | 
				
			||||||
	InitIconComboBox();
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if(!entry->binarySize()){
 | 
						if(!entry->binarySize()){
 | 
				
			||||||
		ButtonSaveAttachment->setDisabled(true);
 | 
							ButtonSaveAttachment->setDisabled(true);
 | 
				
			||||||
		ButtonDeleteAttachment->setDisabled(true);
 | 
							ButtonDeleteAttachment->setDisabled(true);
 | 
				
			||||||
| 
						 | 
					@ -126,12 +122,22 @@ CEditEntryDlg::CEditEntryDlg(IDatabase* _db, IEntryHandle* _entry,QWidget* paren
 | 
				
			||||||
	else{
 | 
						else{
 | 
				
			||||||
		DateTime_Expire->setDateTime(entry->expire());
 | 
							DateTime_Expire->setDateTime(entry->expire());
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					#ifdef AUTOTYPE
 | 
				
			||||||
 | 
						QToolButton* buttonTools = new QToolButton(buttonBox);
 | 
				
			||||||
 | 
						buttonTools->setText("Tools");
 | 
				
			||||||
 | 
						buttonTools->setPopupMode(QToolButton::InstantPopup);
 | 
				
			||||||
 | 
						QMenu* menuTools = new QMenu(buttonTools);
 | 
				
			||||||
 | 
						connect(menuTools->addAction("Auto-Type: Customize Sequence"), SIGNAL(triggered(bool)), SLOT(OnCustomizeSequence()));
 | 
				
			||||||
 | 
					#ifdef GLOBAL_AUTOTYPE
 | 
				
			||||||
 | 
						connect(menuTools->addAction("Auto-Type: Select target window"), SIGNAL(triggered(bool)), SLOT(OnSelectTarget()));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						buttonTools->setMenu(menuTools);
 | 
				
			||||||
 | 
						buttonBox->addButton(buttonTools, QDialogButtonBox::ResetRole); // ResetRole: workaround to display button on the left
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CEditEntryDlg::~CEditEntryDlg()
 | 
					CEditEntryDlg::~CEditEntryDlg(){
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CEditEntryDlg::resizeEvent(QResizeEvent *event){
 | 
					void CEditEntryDlg::resizeEvent(QResizeEvent *event){
 | 
				
			||||||
| 
						 | 
					@ -148,16 +154,6 @@ void CEditEntryDlg::paintEvent(QPaintEvent *event){
 | 
				
			||||||
	painter.drawPixmap(QPoint(0,0),BannerPixmap);
 | 
						painter.drawPixmap(QPoint(0,0),BannerPixmap);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* MX-TO-DO: After approval, remove this implementation
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void CEditEntryDlg::InitIconComboBox(){
 | 
					 | 
				
			||||||
	for(int i=0;i<db->numIcons();i++){
 | 
					 | 
				
			||||||
		Combo_IconPicker->insertItem(i,db->icon(i),"");
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	Combo_IconPicker->setCurrentIndex(entry->image());
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void CEditEntryDlg::InitGroupComboBox(){
 | 
					void CEditEntryDlg::InitGroupComboBox(){
 | 
				
			||||||
	QString Space;
 | 
						QString Space;
 | 
				
			||||||
	groups=db->sortedGroups();
 | 
						groups=db->sortedGroups();
 | 
				
			||||||
| 
						 | 
					@ -433,3 +429,25 @@ void CEditEntryDlg::OnCalendar(QAction* action){
 | 
				
			||||||
void CEditEntryDlg::OnClose(){
 | 
					void CEditEntryDlg::OnClose(){
 | 
				
			||||||
	config->setDialogGeometry(this);
 | 
						config->setDialogGeometry(this);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnCustomizeSequence(){
 | 
				
			||||||
 | 
					#ifdef AUTOTYPE
 | 
				
			||||||
 | 
						QString text = Edit_Comment->toPlainText();
 | 
				
			||||||
 | 
						if (!text.isEmpty())
 | 
				
			||||||
 | 
							text.append("\n");
 | 
				
			||||||
 | 
						Edit_Comment->setPlainText(text.append("Auto-Type: {USERNAME}{TAB}{PASSWORD}{ENTER}"));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnSelectTarget(){
 | 
				
			||||||
 | 
					#ifdef GLOBAL_AUTOTYPE
 | 
				
			||||||
 | 
						TargetWindowDlg dlg(this);
 | 
				
			||||||
 | 
						if (dlg.exec() && !dlg.windowTitle().isEmpty()){
 | 
				
			||||||
 | 
							QString text = Edit_Comment->toPlainText();
 | 
				
			||||||
 | 
							if (!text.isEmpty())
 | 
				
			||||||
 | 
								text.append("\n");
 | 
				
			||||||
 | 
							Edit_Comment->setPlainText(text.append(dlg.windowTitle()));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,9 +31,6 @@ class CEditEntryDlg : public QDialog, private Ui_EditEntryDialog
 | 
				
			||||||
		CEditEntryDlg(IDatabase* _db, IEntryHandle* _entry,QWidget* parent = 0,  bool modal = FALSE, bool newEntry = FALSE);
 | 
							CEditEntryDlg(IDatabase* _db, IEntryHandle* _entry,QWidget* parent = 0,  bool modal = FALSE, bool newEntry = FALSE);
 | 
				
			||||||
		~CEditEntryDlg();
 | 
							~CEditEntryDlg();
 | 
				
			||||||
		void InitGroupComboBox();
 | 
							void InitGroupComboBox();
 | 
				
			||||||
/* MX-TO-DO: Remove this declaration
 | 
					 | 
				
			||||||
		void InitIconComboBox();
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
		static void saveAttachment(IEntryHandle* pEntry, QWidget* ParentWidget=NULL);
 | 
							static void saveAttachment(IEntryHandle* pEntry, QWidget* ParentWidget=NULL);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		IEntryHandle* entry;
 | 
							IEntryHandle* entry;
 | 
				
			||||||
| 
						 | 
					@ -60,6 +57,8 @@ class CEditEntryDlg : public QDialog, private Ui_EditEntryDialog
 | 
				
			||||||
		void OnExpirePreset(QAction* action);
 | 
							void OnExpirePreset(QAction* action);
 | 
				
			||||||
		void OnCalendar(QAction* action);
 | 
							void OnCalendar(QAction* action);
 | 
				
			||||||
		void OnClose();
 | 
							void OnClose();
 | 
				
			||||||
 | 
							void OnCustomizeSequence();
 | 
				
			||||||
 | 
							void OnSelectTarget();
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	private:
 | 
						private:
 | 
				
			||||||
		virtual void paintEvent(QPaintEvent*);
 | 
							virtual void paintEvent(QPaintEvent*);
 | 
				
			||||||
| 
						 | 
					@ -70,4 +69,3 @@ class CEditEntryDlg : public QDialog, private Ui_EditEntryDialog
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -448,7 +448,6 @@ void CGenPwDialog::generatePasswordInternal(char* buffer, int length){
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else{
 | 
						else{
 | 
				
			||||||
		qDebug("ja");
 | 
					 | 
				
			||||||
		for (int i=0; i<length; i++)
 | 
							for (int i=0; i<length; i++)
 | 
				
			||||||
			buffer[i] = assoctable[randint(num)];
 | 
								buffer[i] = assoctable[randint(num)];
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2008 by Felix Geyer                                     *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; version 2 of the License.               *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "TargetWindowDlg.h"
 | 
				
			||||||
 | 
					#include "AutoType.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TargetWindowDlg::TargetWindowDlg(QWidget* parent) : QDialog(parent){
 | 
				
			||||||
 | 
						setupUi(this);
 | 
				
			||||||
 | 
						QStringList windowTitles = AutoType::getAllWindowTitles();
 | 
				
			||||||
 | 
						windowTitles.sort();
 | 
				
			||||||
 | 
						for (QStringList::const_iterator i = windowTitles.constBegin(); i != windowTitles.constEnd(); ++i)
 | 
				
			||||||
 | 
							comboWindow->addItem(*i);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						connect(buttonBox, SIGNAL(accepted()), SLOT(OnAccept()));
 | 
				
			||||||
 | 
						connect(buttonBox, SIGNAL(rejected()), SLOT(reject()));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TargetWindowDlg::OnAccept(){
 | 
				
			||||||
 | 
						pWindowTitle = comboWindow->itemText(comboWindow->currentIndex());
 | 
				
			||||||
 | 
						accept();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,40 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2008 by Felix Geyer                                     *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; version 2 of the License.               *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef TARGETWINDOWDLG_H
 | 
				
			||||||
 | 
					#define TARGETWINDOWDLG_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "ui_TargetWindowDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TargetWindowDlg : public QDialog, private Ui_TargetWindowDlg
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						Q_OBJECT
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public:
 | 
				
			||||||
 | 
							TargetWindowDlg(QWidget* parent);
 | 
				
			||||||
 | 
							inline QString windowTitle() { return pWindowTitle; };
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private slots:
 | 
				
			||||||
 | 
							void OnAccept();
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private:
 | 
				
			||||||
 | 
							QString pWindowTitle;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // TARGETWINDOWDLG_H
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,42 @@
 | 
				
			||||||
 | 
					<ui version="4.0" >
 | 
				
			||||||
 | 
					 <class>TargetWindowDlg</class>
 | 
				
			||||||
 | 
					 <widget class="QDialog" name="TargetWindowDlg" >
 | 
				
			||||||
 | 
					  <property name="geometry" >
 | 
				
			||||||
 | 
					   <rect>
 | 
				
			||||||
 | 
					    <x>0</x>
 | 
				
			||||||
 | 
					    <y>0</y>
 | 
				
			||||||
 | 
					    <width>574</width>
 | 
				
			||||||
 | 
					    <height>145</height>
 | 
				
			||||||
 | 
					   </rect>
 | 
				
			||||||
 | 
					  </property>
 | 
				
			||||||
 | 
					  <property name="windowTitle" >
 | 
				
			||||||
 | 
					   <string>Auto-Type: Select Target Window</string>
 | 
				
			||||||
 | 
					  </property>
 | 
				
			||||||
 | 
					  <layout class="QVBoxLayout" name="verticalLayout" >
 | 
				
			||||||
 | 
					   <item>
 | 
				
			||||||
 | 
					    <widget class="QLabel" name="label" >
 | 
				
			||||||
 | 
					     <property name="text" >
 | 
				
			||||||
 | 
					      <string>To specify the target window, either select an existing currently-opened window
 | 
				
			||||||
 | 
					from the drop-down list, or enter the window title manually:</string>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					   </item>
 | 
				
			||||||
 | 
					   <item>
 | 
				
			||||||
 | 
					    <widget class="QComboBox" name="comboWindow" >
 | 
				
			||||||
 | 
					     <property name="editable" >
 | 
				
			||||||
 | 
					      <bool>true</bool>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					   </item>
 | 
				
			||||||
 | 
					   <item>
 | 
				
			||||||
 | 
					    <widget class="QDialogButtonBox" name="buttonBox" >
 | 
				
			||||||
 | 
					     <property name="standardButtons" >
 | 
				
			||||||
 | 
					      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					   </item>
 | 
				
			||||||
 | 
					  </layout>
 | 
				
			||||||
 | 
					 </widget>
 | 
				
			||||||
 | 
					 <resources/>
 | 
				
			||||||
 | 
					 <connections/>
 | 
				
			||||||
 | 
					</ui>
 | 
				
			||||||
| 
						 | 
					@ -40,6 +40,8 @@ class AutoType{
 | 
				
			||||||
		static void performGlobal();
 | 
							static void performGlobal();
 | 
				
			||||||
		static bool registerGlobalShortcut(const Shortcut& s);
 | 
							static bool registerGlobalShortcut(const Shortcut& s);
 | 
				
			||||||
		static void unregisterGlobalShortcut();
 | 
							static void unregisterGlobalShortcut();
 | 
				
			||||||
 | 
							static void init();
 | 
				
			||||||
 | 
							static QStringList getAllWindowTitles();
 | 
				
			||||||
#endif // GLOBAL_AUTOTYPE
 | 
					#endif // GLOBAL_AUTOTYPE
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
#endif // AUTOTYPE
 | 
					#endif // AUTOTYPE
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -159,6 +159,64 @@ void AutoType::perform(IEntryHandle* entry, QString& err,bool hideWindow,int nr)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef GLOBAL_AUTOTYPE
 | 
					#ifdef GLOBAL_AUTOTYPE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Window windowRoot;
 | 
				
			||||||
 | 
					QStringList windowBlacklist;
 | 
				
			||||||
 | 
					Atom wm_state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void windowTitles(Window window, QStringList& titleList){
 | 
				
			||||||
 | 
						Display* d = QX11Info::display();
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Atom type = None;
 | 
				
			||||||
 | 
						int format;
 | 
				
			||||||
 | 
						unsigned long nitems, after;
 | 
				
			||||||
 | 
						unsigned char* data;
 | 
				
			||||||
 | 
						XGetWindowProperty(d, window, wm_state, 0, 0, false, AnyPropertyType, &type, &format, &nitems, &after, &data);
 | 
				
			||||||
 | 
						if (type){
 | 
				
			||||||
 | 
							XTextProperty textProp;
 | 
				
			||||||
 | 
							if (XGetWMName(d, window, &textProp) != 0) {
 | 
				
			||||||
 | 
								char** list = NULL;
 | 
				
			||||||
 | 
								int count;
 | 
				
			||||||
 | 
								if (Xutf8TextPropertyToTextList(d, &textProp, &list, &count)>=0 && list){
 | 
				
			||||||
 | 
									QString title = QString::fromUtf8(list[0]);
 | 
				
			||||||
 | 
									if (window!=windowRoot && window!=AutoType::MainWin->winId() &&
 | 
				
			||||||
 | 
									    (QApplication::activeWindow()==NULL || window!=QApplication::activeWindow()->winId()) &&
 | 
				
			||||||
 | 
									    !windowBlacklist.contains(title)
 | 
				
			||||||
 | 
									){
 | 
				
			||||||
 | 
										titleList.append(title);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									XFreeStringList(list);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Window root;
 | 
				
			||||||
 | 
						Window parent;
 | 
				
			||||||
 | 
						Window* children = NULL;
 | 
				
			||||||
 | 
						unsigned int num_children;
 | 
				
			||||||
 | 
						int tree = XQueryTree(d, window, &root, &parent, &children, &num_children);
 | 
				
			||||||
 | 
						if (tree && children){
 | 
				
			||||||
 | 
							for (int i=0; i<num_children; i++)
 | 
				
			||||||
 | 
								windowTitles(children[i], titleList);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							XFree(children);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void AutoType::init(){
 | 
				
			||||||
 | 
						Display* d = QX11Info::display();
 | 
				
			||||||
 | 
						wm_state = XInternAtom(d, "WM_STATE", true);
 | 
				
			||||||
 | 
						windowRoot = XRootWindow(d, MainWin->x11Info().screen());
 | 
				
			||||||
 | 
						windowBlacklist << "kicker" << "KDE Desktop";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QStringList AutoType::getAllWindowTitles(){
 | 
				
			||||||
 | 
						QStringList titleList;
 | 
				
			||||||
 | 
						if (wm_state) // don't do anything if WM_STATE doesn't exist
 | 
				
			||||||
 | 
							windowTitles(windowRoot, titleList);
 | 
				
			||||||
 | 
						return titleList;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AutoType::performGlobal(){
 | 
					void AutoType::performGlobal(){
 | 
				
			||||||
	if (MainWin->isLocked())
 | 
						if (MainWin->isLocked())
 | 
				
			||||||
		MainWin->OnUnLockWorkspace();
 | 
							MainWin->OnUnLockWorkspace();
 | 
				
			||||||
| 
						 | 
					@ -277,7 +335,7 @@ bool AutoType::registerGlobalShortcut(const Shortcut& s){
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	Display* display = QX11Info::display();
 | 
						Display* display = QX11Info::display();
 | 
				
			||||||
	Window root = XDefaultRootWindow(display);
 | 
						Window root = XRootWindow(display, MainWin->x11Info().screen());
 | 
				
			||||||
	int code=XKeysymToKeycode(display, HelperX11::getKeysym(s.key));
 | 
						int code=XKeysymToKeycode(display, HelperX11::getKeysym(s.key));
 | 
				
			||||||
	int mod=HelperX11::getShortcutModifierMask(s);
 | 
						int mod=HelperX11::getShortcutModifierMask(s);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -195,6 +195,9 @@ int main(int argc, char **argv)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QApplication::setQuitOnLastWindowClosed(false);
 | 
						QApplication::setQuitOnLastWindowClosed(false);
 | 
				
			||||||
	KeepassMainWindow *mainWin = new KeepassMainWindow(args.file(), args.startMinimized(), args.startLocked());
 | 
						KeepassMainWindow *mainWin = new KeepassMainWindow(args.file(), args.startMinimized(), args.startLocked());
 | 
				
			||||||
 | 
					#ifdef GLOBAL_AUTOTYPE
 | 
				
			||||||
 | 
						AutoType::init();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	int r=app->exec();
 | 
						int r=app->exec();
 | 
				
			||||||
	delete mainWin;
 | 
						delete mainWin;
 | 
				
			||||||
	delete eventListener;
 | 
						delete eventListener;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -112,9 +112,9 @@ isEqual(QMAKE_WIN32,1){
 | 
				
			||||||
INSTALLS += target data
 | 
					INSTALLS += target data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
contains(DEFINES,GLOBAL_AUTOTYPE){
 | 
					contains(DEFINES,GLOBAL_AUTOTYPE){
 | 
				
			||||||
	FORMS += forms/AutoTypeDlg.ui
 | 
						FORMS += forms/AutoTypeDlg.ui forms/TargetWindowDlg.ui
 | 
				
			||||||
	HEADERS += dialogs/AutoTypeDlg.h lib/AutoTypeTreeWidget.h
 | 
						HEADERS += dialogs/AutoTypeDlg.h lib/AutoTypeTreeWidget.h dialogs/TargetWindowDlg.h
 | 
				
			||||||
	SOURCES += dialogs/AutoTypeDlg.cpp lib/AutoTypeTreeWidget.cpp
 | 
						SOURCES += dialogs/AutoTypeDlg.cpp lib/AutoTypeTreeWidget.cpp dialogs/TargetWindowDlg.cpp
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue