diff -rB scribus_old/annot.cpp scribus/annot.cpp
23a24
> #include <QMessageBox>
1188c1189
< 	connect(Name, SIGNAL(Leaved()), this, SLOT(NewName()));
---
>         //connect(Name, SIGNAL(Leaved()), this, SLOT(NewName()));
1200a1202,1215
> bool Annot::FoundName(QString name)
> {
>         bool found = false;
>         for (int b = 0; b < view->Doc->Items->count(); ++b)
>         {
>                 if ((name == view->Doc->Items->at(b)->itemName()) && (view->Doc->Items->at(b) != item))
>                 {
>                           found = true;
>                           break;
>                 }
>          }
>          return found;
> }
> 
1209,1218c1224
< 	bool found = false;
< 	for (int b = 0; b < view->Doc->Items->count(); ++b)
< 	{
< 		if ((NameNew == view->Doc->Items->at(b)->itemName()) && (view->Doc->Items->at(b) != item))
< 		{
< 			found = true;
< 			break;
< 		}
< 	}
< 	if (found)
---
>         if (FoundName(NameNew) && (OldName != NameNew))
1219a1226
>                 QMessageBox::warning(this, CommonStrings::trWarning, tr("The item with such name is already exist"), QMessageBox::Ok);
1811c1818,1819
< 	if (Name->text() != OldName)
---
>         bool enableClose = true;
>         if ((!FoundName(Name->text())) && (Name->text() != OldName)) {
1812a1821,1825
>         }
>         if (FoundName(Name->text())) {
>             NewName();
>             enableClose = false;
>         }
2035c2048
< 	accept();
---
>         if (enableClose) accept();
diff -rB scribus_old/annot.h scribus/annot.h
220a221
>         bool FoundName(QString name);
diff -rB scribus_old/pageitem.cpp scribus/pageitem.cpp
250,252c250,255
< 	QString tmp;
< 	m_Doc->TotalItems++;
< 	AnName += tmp.setNum(m_Doc->TotalItems);
---
>         QString tmp;
>         int freeItem = m_Doc->TotalItems;
>         while (m_Doc->itemNameExists(AnName + tmp.setNum(freeItem))) freeItem++;
>         AnName += tmp.setNum(freeItem);
>         m_Doc->TotalItems++;
>         //AnName += tmp.setNum(m_Doc->TotalItems);
422c425,427
< 	AnName += tmp.setNum(m_Doc->TotalItems); // +" "+QDateTime::currentDateTime().toString();
---
>         int freeItem = m_Doc->TotalItems;
>         while (m_Doc->itemNameExists(AnName + tmp.setNum(freeItem))) freeItem++;
>         AnName += tmp.setNum(freeItem);
