mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
parent
3e9a1c2da7
commit
05282ceeec
@ -1149,7 +1149,7 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
|
||||
break;
|
||||
|
||||
case LFUN_GRAPHICS_UNIFY:
|
||||
flag.setEnabled(cur.selection());
|
||||
flag.setEnabled(cur.countInsetsInSelection(GRAPHICS_CODE)>1);
|
||||
break;
|
||||
|
||||
case LFUN_WORD_FINDADV: {
|
||||
|
@ -1014,6 +1014,56 @@ void Cursor::clearSelection()
|
||||
}
|
||||
|
||||
|
||||
int Cursor::countInsetsInSelection(InsetCode const & inset_code)
|
||||
{
|
||||
if (!selection_)
|
||||
return 0;
|
||||
|
||||
DocIterator from, to;
|
||||
from = selectionBegin();
|
||||
to = selectionEnd();
|
||||
|
||||
int count = 0;
|
||||
|
||||
if (!from.nextInset()) //move to closest inset
|
||||
from.forwardInset();
|
||||
|
||||
while (!from.empty() && from < to) {
|
||||
Inset * inset = from.nextInset();
|
||||
if (!inset)
|
||||
break;
|
||||
if (inset->lyxCode() == inset_code)
|
||||
count ++;
|
||||
from.forwardInset();
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
bool Cursor::insetInSelection(InsetCode const & inset_code)
|
||||
{
|
||||
if (!selection_)
|
||||
return false;
|
||||
|
||||
DocIterator from, to;
|
||||
from = selectionBegin();
|
||||
to = selectionEnd();
|
||||
|
||||
if (!from.nextInset()) //move to closest inset
|
||||
from.forwardInset();
|
||||
|
||||
while (!from.empty() && from < to) {
|
||||
Inset * inset = from.nextInset();
|
||||
if (!inset)
|
||||
break;
|
||||
if (inset->lyxCode() == inset_code)
|
||||
return true;
|
||||
from.forwardInset();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void Cursor::setTargetX(int x)
|
||||
{
|
||||
x_target_ = x;
|
||||
|
@ -186,6 +186,12 @@ public:
|
||||
void setSelection(DocIterator const & where, int n);
|
||||
///
|
||||
void clearSelection();
|
||||
/// check whether selection contains specific type of inset
|
||||
/// returns 0 if no selection was made
|
||||
bool insetInSelection(InsetCode const & inset);
|
||||
/// count occurences of specific inset type in the selection
|
||||
/// returns 0 if no selection was made
|
||||
int countInsetsInSelection(InsetCode const & inset);
|
||||
/// access start of selection
|
||||
CursorSlice selBegin() const;
|
||||
/// access end of selection
|
||||
|
Loading…
Reference in New Issue
Block a user