]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiSymbols.cpp
Merge branch 'biblatex2' of git.lyx.org:features into biblatex2
[lyx.git] / src / frontends / qt4 / GuiSymbols.cpp
index 145a2d20dd8397d09156611133f5d176a48f6a3d..e2c0f04ec40a5cc672ce6951b199fd0d42dc1ebf 100644 (file)
@@ -152,6 +152,7 @@ const int no_blocks = sizeof(unicode_blocks) / sizeof(UnicodeBlocks);
 QString getBlock(char_type c)
 {
        // store an educated guess for the next search
+       // 0 <= lastBlock < no_blocks
        // FIXME THREAD
        static int lastBlock = 0;
 
@@ -159,10 +160,6 @@ QString getBlock(char_type c)
        if (c < 0x7f)
                lastBlock = 0;
 
-       // off the end already
-       if (lastBlock == no_blocks)
-               return QString();
-
        // c falls into a covered area, and we can guess which
        if (c >= unicode_blocks[lastBlock].start
            && c <= unicode_blocks[lastBlock].end)
@@ -177,8 +174,18 @@ QString getBlock(char_type c)
        int i = 0;
        while (i < no_blocks && c > unicode_blocks[i].end)
                ++i;
-       if (i == no_blocks || c < unicode_blocks[i].start)
+
+       if (i == no_blocks)
+               return QString();
+
+       if (c < unicode_blocks[i].start) {
+               // 0 < i < no_blocks
+               // cache the previous block for guessing next time
+               lastBlock = i - 1;
                return QString();
+       }
+
+       // 0 <= i < no_blocks
        // cache the last block for guessing next time
        lastBlock = i;
        return unicode_blocks[lastBlock].qname;
@@ -477,7 +484,6 @@ void GuiSymbols::updateSymbolList(bool update_combo)
                // this happens when the encoding changes when moving the cursor
                categoryCO->setCurrentIndex(0);
                updateSymbolList(false);
-               return;
        }
 }