+
+
+bool BufferView::ChangeRefsIfUnique(string const & from, string const & to)
+{
+ // Check if the label 'from' appears more than once
+ vector<string> labels = buffer()->getLabelList();
+ if (count(labels.begin(), labels.end(), from) > 1)
+ return false;
+
+ return ChangeInsets(Inset::REF_CODE, from, to);
+}
+
+
+bool BufferView::ChangeCitationsIfUnique(string const & from, string const & to)
+{
+
+ vector<pair<string,string> > keys = buffer()->getBibkeyList();
+ if (count_if(keys.begin(), keys.end(),
+ lyx::equal_1st_in_pair<string,string>(from))
+ > 1)
+ return false;
+
+ return ChangeInsets(Inset::CITE_CODE, from, to);
+}
+
+UpdatableInset * BufferView::theLockingInset() const
+{
+ // If NULL is not allowed we should put an Assert here. (Lgb)
+ if (text)
+ return text->the_locking_inset;
+ return 0;
+}
+
+
+void BufferView::theLockingInset(UpdatableInset * inset)
+{
+ text->the_locking_inset = inset;
+}
+
+
+LyXText * BufferView::getLyXText() const
+{
+ if (theLockingInset()) {
+ LyXText * txt = theLockingInset()->getLyXText(this, true);
+ if (txt)
+ return txt;
+ }
+ return text;
+}
+
+
+LyXText * BufferView::getParentText(Inset * inset) const
+{
+ if (inset->owner()) {
+ LyXText * txt = inset->getLyXText(this);
+ inset = inset->owner();
+ while (inset && inset->getLyXText(this) == txt)
+ inset = inset->owner();
+ if (inset)
+ return inset->getLyXText(this);
+ }
+ return text;
+}
+
+
+Language const * BufferView::getParentLanguage(Inset * inset) const
+{
+ LyXText * text = getParentText(inset);
+ return text->cursor.par()->GetFontSettings(buffer()->params,
+ text->cursor.pos()).language();
+}