# HG changeset patch
# User insilmaril
# Date 1259328681 0
# Node ID c79486b7cb4b3c5752298260b6bd977ba2176615
# Parent  a9295db4dcbf1c0ddad0b73911c0aae9495beba4
Fixed regression in Undo

diff -r a9295db4dcbf -r c79486b7cb4b findwidget.cpp
--- a/findwidget.cpp	Thu Nov 26 14:55:23 2009 +0000
+++ b/findwidget.cpp	Fri Nov 27 13:31:21 2009 +0000
@@ -6,6 +6,7 @@
 
 
 extern QString vymName;
+extern QString iconPath;
 
 FindWidget::FindWidget(QWidget *)
 {
@@ -14,7 +15,8 @@
     
 	// Create Buttons
 	cancelbutton = new QPushButton;
-	cancelbutton->setText(tr("Cancel"));
+	//cancelbutton->setText(tr("Cancel"));
+	cancelbutton->setIcon (QIcon (iconPath+"fileclose.png"));
 	cancelbutton->setShortcut (Qt::Key_Escape);
 	connect ( cancelbutton, SIGNAL( clicked() ), this, SLOT( cancelPressed() ) );
 	
@@ -25,6 +27,9 @@
     findcombo = new QComboBox;
 	findcombo->setMinimumWidth(250);
 	findcombo->setEditable(true);
+
+	QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+    findcombo->setSizePolicy(sizePolicy);
 	connect ( findcombo, SIGNAL( highlighted(int) ), 
 		this, SLOT( nextPressed() ) );
 	connect ( findcombo, SIGNAL( textChanged(const QString &) ), 
@@ -45,7 +50,7 @@
 	mainLayout->addLayout (row2Layout);
 
 	setLayout (mainLayout);
-	setStatus (Undefined);
+	status=Undefined;
 }
 
 void FindWidget::popup()
@@ -53,6 +58,7 @@
 	show();
 	findcombo->lineEdit()->selectAll();
 	findcombo->setFocus();
+	setStatus (Undefined);
 }
 
 void FindWidget::cancelPressed()
@@ -67,17 +73,20 @@
 
 void FindWidget::findTextChanged(const QString&)
 {
-	emit (somethingChanged() );
+	setStatus (Undefined);
 }
 
 void FindWidget::setStatus (Status st)
 {
+	if (st==status) return;
+
+	status=st;
 	QPalette p=palette();
 	QColor c;
 	switch (st)
 	{
-		case Success: c=QColor (100,255,100); break;
-		case Failed:  c=QColor (255,100,100); break;
+		case Success: c=QColor (120,255,120); break;
+		case Failed:  c=QColor (255,120,120); break;
 		default:  c=QColor (255,255,255); 
 	}
     p.setColor(QPalette::Active, static_cast<QPalette::ColorRole>(9), c);
diff -r a9295db4dcbf -r c79486b7cb4b findwidget.h
--- a/findwidget.h	Thu Nov 26 14:55:23 2009 +0000
+++ b/findwidget.h	Fri Nov 27 13:31:21 2009 +0000
@@ -24,6 +24,9 @@
 	void findTextChanged(const QString&);
 	void setStatus (Status st);
 
+private:
+	Status status;
+
 signals:
 	void nextButton(QString);
 	void somethingChanged();
diff -r a9295db4dcbf -r c79486b7cb4b tex/vym.changelog
--- a/tex/vym.changelog	Thu Nov 26 14:55:23 2009 +0000
+++ b/tex/vym.changelog	Fri Nov 27 13:31:21 2009 +0000
@@ -1,3 +1,9 @@
+-------------------------------------------------------------------
+Thu Nov 26 22:32:34 CET 2009 - vym@insilmaril.de
+
+- Bugfix: Regression in Undo
+- Bugfix: Find didn't find stuff in previous part of tree
+
 -------------------------------------------------------------------
 Tue Nov 24 22:34:42 CET 2009 - vym@insilmaril.de
 
diff -r a9295db4dcbf -r c79486b7cb4b vymmodel.cpp
--- a/vymmodel.cpp	Thu Nov 26 14:55:23 2009 +0000
+++ b/vymmodel.cpp	Fri Nov 27 13:31:21 2009 +0000
@@ -120,9 +120,7 @@
 	selectionBlocked=false;
 
 	// find routine
-	findCurrent=NULL;				
-	findPrevious=NULL;				
-	EOFind=false;
+	findReset();
 
 	// animations	// FIXME-3 switch to new animation system 
 	animationUse=settings.readBoolEntry("/animation/use",false);	// FIXME-3 add options to control _what_ is animated
@@ -1139,6 +1137,7 @@
 		return;
 	}
 
+
 	if (debug)
 	{
 		cout << "VymModel::undo() begin\n";
@@ -1156,7 +1155,7 @@
 
 	bool noErr;
 	QString errMsg;
-	parseAtom (redoCommand,noErr,errMsg);
+	parseAtom (undoCommand,noErr,errMsg);
 
 	undosAvail--;
 	curStep--; 
@@ -1568,6 +1567,12 @@
 
 BranchItem* VymModel::findText (QString s, bool cs)   
 {
+	if (!s.isEmpty() && s!=findString)
+	{
+		findReset();
+		findString=s;
+	}
+
 	QTextDocument::FindFlags flags=0;
 	if (cs) flags=QTextDocument::FindCaseSensitively;
 
@@ -1587,7 +1592,7 @@
 		if (findCurrent)
 		{
 			// Searching in Note
-			if (findCurrent->getNote().contains(s,cs))
+			if (findCurrent->getNote().contains(findString,cs))
 			{
 				select (findCurrent);
 				/*
@@ -1597,14 +1602,14 @@
 					emitShowSelection();
 				}
 				*/
-				if (textEditor->findText(s,flags)) 
+				if (textEditor->findText(findString,flags)) 
 				{
 					searching=false;
 					foundNote=true;
 				}	
 			}
 			// Searching in Heading
-			if (searching && findCurrent->getHeading().contains (s,cs) ) 
+			if (searching && findCurrent->getHeading().contains (findString,cs) ) 
 			{
 				select(findCurrent);
 				searching=false;
@@ -1625,6 +1630,7 @@
 
 void VymModel::findReset()
 {	// Necessary if text to find changes during a find process
+	findString.clear();
 	findCurrent=NULL;
 	findPrevious=NULL;
 	EOFind=false;
diff -r a9295db4dcbf -r c79486b7cb4b vymmodel.h
--- a/vymmodel.h	Thu Nov 26 14:55:23 2009 +0000
+++ b/vymmodel.h	Fri Nov 27 13:31:21 2009 +0000
@@ -266,6 +266,8 @@
     BranchItem* findText(QString,bool);		// Find object
     void findReset();						// Reset Search
 	void emitShowFindWidget();				// Tell views to show FindWidget
+private:	
+	QString findString;
 signals:
 	void showFindWidget();				
 
diff -r a9295db4dcbf -r c79486b7cb4b vymview.cpp
--- a/vymview.cpp	Thu Nov 26 14:55:23 2009 +0000
+++ b/vymview.cpp	Fri Nov 27 13:31:21 2009 +0000
@@ -115,7 +115,6 @@
 		findWidget, SIGNAL (nextButton (QString) ),
 		this, SLOT (findNext(QString) ) );
 		
-
 	mapEditor->setAntiAlias (mainWindow->isAliased());
 	mapEditor->setSmoothPixmap(mainWindow->hasSmoothPixmapTransform());
 
@@ -303,3 +302,10 @@
 		findWidget->setStatus (FindWidget::Failed);
 
 }
+
+void VymView::findReset()
+{
+	model->findReset();
+	if (mapEditor) mapEditor->setFocus();
+}
+
diff -r a9295db4dcbf -r c79486b7cb4b vymview.h
--- a/vymview.h	Thu Nov 26 14:55:23 2009 +0000
+++ b/vymview.h	Fri Nov 27 13:31:21 2009 +0000
@@ -30,6 +30,7 @@
 	void showSelection ();
 	void showFindWidget();
 	void findNext (QString s);
+	void findReset();
 
 private:
 	VymModel *model;