mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-23 02:14:50 +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;
|
break;
|
||||||
|
|
||||||
case LFUN_GRAPHICS_UNIFY:
|
case LFUN_GRAPHICS_UNIFY:
|
||||||
flag.setEnabled(cur.selection());
|
flag.setEnabled(cur.countInsetsInSelection(GRAPHICS_CODE)>1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LFUN_WORD_FINDADV: {
|
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 CursorData::fixIfBroken()
|
||||||
{
|
{
|
||||||
bool const broken_cursor = DocIterator::fixIfBroken();
|
bool const broken_cursor = DocIterator::fixIfBroken();
|
||||||
|
@ -129,6 +129,12 @@ public:
|
|||||||
void setSelection(DocIterator const & where, int n);
|
void setSelection(DocIterator const & where, int n);
|
||||||
///
|
///
|
||||||
void clearSelection();
|
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
|
/// access to normalized selection anchor
|
||||||
CursorSlice normalAnchor() const;
|
CursorSlice normalAnchor() const;
|
||||||
|
Loading…
Reference in New Issue
Block a user