mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 18:08:10 +00:00
Enable graphics-unify only for selections containing graphics insets.
Follow-up of https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg204907.html
This commit is contained in:
parent
065e37e96f
commit
641ae5c7ad
@ -1154,7 +1154,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: {
|
||||
|
@ -496,6 +496,56 @@ void CursorData::clearSelection()
|
||||
}
|
||||
|
||||
|
||||
int CursorData::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 CursorData::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;
|
||||
}
|
||||
|
||||
|
||||
bool CursorData::fixIfBroken()
|
||||
{
|
||||
bool const broken_cursor = DocIterator::fixIfBroken();
|
||||
|
@ -129,6 +129,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 to normalized selection anchor
|
||||
CursorSlice normalAnchor() const;
|
||||
|
Loading…
Reference in New Issue
Block a user