]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfind.cpp
Update toolbar and properly reset focus when find widget is closed (#12396)
[lyx.git] / src / lyxfind.cpp
index 444db69a9896c72c6837b60690b6d9edb769f1df..86cf64d44a55320f73c3d609c563d954e5031de1 100644 (file)
@@ -276,7 +276,7 @@ bool searchAllowed(docstring const & str)
 
 bool findOne(BufferView * bv, docstring const & searchstr,
             bool case_sens, bool whole, bool forward,
-            bool find_del, bool check_wrap, bool auto_wrap,
+            bool find_del, bool check_wrap, bool const auto_wrap,
             bool instant, bool onlysel)
 {
        // Clean up previous selections with empty searchstr on instant
@@ -338,6 +338,7 @@ bool findOne(BufferView * bv, docstring const & searchstr,
        }
        else if (check_wrap) {
                DocIterator cur_orig(bv->cursor());
+               bool wrap = auto_wrap;
                if (!auto_wrap) {
                        docstring q;
                        if (forward)
@@ -348,9 +349,9 @@ bool findOne(BufferView * bv, docstring const & searchstr,
                                  "Continue searching from the end?");
                        int wrap_answer = frontend::Alert::prompt(_("Wrap search?"),
                                q, 0, 1, _("&Yes"), _("&No"));
-                       auto_wrap = wrap_answer == 0;
+                       wrap = wrap_answer == 0;
                }
-               if (auto_wrap) {
+               if (wrap) {
                        if (forward) {
                                bv->cursor().clear();
                                bv->cursor().push_back(CursorSlice(bv->buffer().inset()));
@@ -358,6 +359,12 @@ bool findOne(BufferView * bv, docstring const & searchstr,
                                bv->cursor().setCursor(doc_iterator_end(&bv->buffer()));
                                bv->cursor().backwardPos();
                        }
+                       if (auto_wrap) {
+                               docstring const msg = forward
+                                 ? _("Search reached end of document, continuing from beginning.")
+                                 : _("Search reached beginning of document, continuing from end.");
+                               bv->message(msg);
+                       }
                        bv->clearSelection();
                        if (findOne(bv, searchstr, case_sens, whole, forward,
                                    find_del, false, false, false, false))
@@ -928,7 +935,7 @@ public:
        int pos_len;
        int searched_size;
        vector <string> result = vector <string>();
-       MatchResult(int len = 0): match_len(len),match_prefix(0),match2end(0), pos(0),leadsize(0),pos_len(-1),searched_size(0) {};
+       MatchResult(int len = 0): match_len(len),match_prefix(0),match2end(0), pos(0),leadsize(0),pos_len(-1),searched_size(0) {}
 };
 
 static MatchResult::range interpretMatch(MatchResult &oldres, MatchResult &newres)
@@ -1241,7 +1248,7 @@ class KeyInfo {
 
 class Border {
  public:
- Border(int l=0, int u=0) : low(l), upper(u) {};
+ Border(int l=0, int u=0) : low(l), upper(u) {}
   int low;
   int upper;
 };
@@ -1577,6 +1584,94 @@ void static fillMissingUnicodesymbols()
   addAccents("\\gimel", getutf8(0x05d2));
   addAccents("\\hebdalet", getutf8(0x05d3));
   addAccents("\\daleth", getutf8(0x05d3));
+  // Thai characters
+  addAccents("\\thaiKoKai", getutf8(0x0e01));
+  addAccents("\\thaiKhoKhai", getutf8(0x0e02));
+  addAccents("\\thaiKhoKhuat", getutf8(0x0e03));
+  addAccents("\\thaiKhoKhwai", getutf8(0x0e04));
+  addAccents("\\thaiKhoKhon", getutf8(0x0e05));
+  addAccents("\\thaiKhoRakhang", getutf8(0x0e06));
+  addAccents("\\thaiNgoNgu", getutf8(0x0e07));
+  addAccents("\\thaiChoChan", getutf8(0x0e08));
+  addAccents("\\thaiChoChing", getutf8(0x0e09));
+  addAccents("\\thaiChoChang", getutf8(0x0e0a));
+  addAccents("\\thaiSoSo", getutf8(0x0e0b));
+  addAccents("\\thaiChoChoe", getutf8(0x0e0c));
+  addAccents("\\thaiYoYing", getutf8(0x0e0d));
+  addAccents("\\thaiDoChada", getutf8(0x0e0e));
+  addAccents("\\thaiToPatak", getutf8(0x0e0f));
+  addAccents("\\thaiThoThan", getutf8(0x0e10));
+  addAccents("\\thaiThoNangmontho", getutf8(0x0e11));
+  addAccents("\\thaiThoPhuthao", getutf8(0x0e12));
+  addAccents("\\thaiNoNen", getutf8(0x0e13));
+  addAccents("\\thaiDoDek", getutf8(0x0e14));
+  addAccents("\\thaiToTao", getutf8(0x0e15));
+  addAccents("\\thaiThoThung", getutf8(0x0e16));
+  addAccents("\\thaiThoThahan", getutf8(0x0e17));
+  addAccents("\\thaiThoThong", getutf8(0x0e18));
+  addAccents("\\thaiNoNu", getutf8(0x0e19));
+  addAccents("\\thaiBoBaimai", getutf8(0x0e1a));
+  addAccents("\\thaiPoPla", getutf8(0x0e1b));
+  addAccents("\\thaiPhoPhung", getutf8(0x0e1c));
+  addAccents("\\thaiFoFa", getutf8(0x0e1d));
+  addAccents("\\thaiPhoPhan", getutf8(0x0e1e));
+  addAccents("\\thaiFoFan", getutf8(0x0e1f));
+  addAccents("\\thaiPhoSamphao", getutf8(0x0e20));
+  addAccents("\\thaiMoMa", getutf8(0x0e21));
+  addAccents("\\thaiYoYak", getutf8(0x0e22));
+  addAccents("\\thaiRoRua", getutf8(0x0e23));
+  addAccents("\\thaiRu", getutf8(0x0e24));
+  addAccents("\\thaiLoLing", getutf8(0x0e25));
+  addAccents("\\thaiLu", getutf8(0x0e26));
+  addAccents("\\thaiWoWaen", getutf8(0x0e27));
+  addAccents("\\thaiSoSala", getutf8(0x0e28));
+  addAccents("\\thaiSoRusi", getutf8(0x0e29));
+  addAccents("\\thaiSoSua", getutf8(0x0e2a));
+  addAccents("\\thaiHoHip", getutf8(0x0e2b));
+  addAccents("\\thaiLoChula", getutf8(0x0e2c));
+  addAccents("\\thaiOAng", getutf8(0x0e2d));
+  addAccents("\\thaiHoNokhuk", getutf8(0x0e2e));
+  addAccents("\\thaiPaiyannoi", getutf8(0x0e2f));
+  addAccents("\\thaiSaraA", getutf8(0x0e30));
+  addAccents("\\thaiMaiHanakat", getutf8(0x0e31));
+  addAccents("\\thaiSaraAa", getutf8(0x0e32));
+  addAccents("\\thaiSaraAm", getutf8(0x0e33));
+  addAccents("\\thaiSaraI", getutf8(0x0e34));
+  addAccents("\\thaiSaraIi", getutf8(0x0e35));
+  addAccents("\\thaiSaraUe", getutf8(0x0e36));
+  addAccents("\\thaiSaraUee", getutf8(0x0e37));
+  addAccents("\\thaiSaraU", getutf8(0x0e38));
+  addAccents("\\thaiSaraUu", getutf8(0x0e39));
+  addAccents("\\thaiPhinthu", getutf8(0x0e3a));
+  addAccents("\\thaiSaraE", getutf8(0x0e40));
+  addAccents("\\thaiSaraAe", getutf8(0x0e41));
+  addAccents("\\thaiSaraO", getutf8(0x0e42));
+  addAccents("\\thaiSaraAiMaimuan", getutf8(0x0e43));
+  addAccents("\\thaiSaraAiMaimalai", getutf8(0x0e44));
+  addAccents("\\thaiLakkhangyao", getutf8(0x0e45));
+  addAccents("\\thaiMaiyamok", getutf8(0x0e46));
+  addAccents("\\thaiMaitaikhu", getutf8(0x0e47));
+  addAccents("\\thaiMaiEk", getutf8(0x0e48));
+  addAccents("\\thaiMaiTho", getutf8(0x0e49));
+  addAccents("\\thaiMaiTri", getutf8(0x0e4a));
+  addAccents("\\thaiMaiChattawa", getutf8(0x0e4b));
+  addAccents("\\thaiThanthakhat", getutf8(0x0e4c));
+  addAccents("\\thaiNikhahit", getutf8(0x0e4d));
+  addAccents("\\thaiYamakkan", getutf8(0x0e4e));
+  addAccents("\\thaiFongman", getutf8(0x0e4f));
+  addAccents("\\thaizero", getutf8(0x0e50));
+  addAccents("\\thaione", getutf8(0x0e51));
+  addAccents("\\thaitwo", getutf8(0x0e52));
+  addAccents("\\thaithree", getutf8(0x0e53));
+  addAccents("\\thaifour", getutf8(0x0e54));
+  addAccents("\\thaifive", getutf8(0x0e55));
+  addAccents("\\thaisix", getutf8(0x0e56));
+  addAccents("\\thaiseven", getutf8(0x0e57));
+  addAccents("\\thaieight", getutf8(0x0e58));
+  addAccents("\\thainine", getutf8(0x0e59));
+  addAccents("\\thaiAngkhankhu", getutf8(0x0e5a));
+  addAccents("\\thaiKhomut", getutf8(0x0e5b));
+
   addAccents("\\dag", getutf8(0x2020));
   addAccents("\\dagger", getutf8(0x2020));
   addAccents("\\ddag", getutf8(0x2021));
@@ -1825,7 +1920,7 @@ class LatexInfo {
     buildKeys(isPatternString);
     entries_ = vector<KeyInfo>();
     buildEntries(isPatternString);
-  };
+  }
   int getFirstKey() {
     entidx_ = 0;
     if (entries_.empty()) {
@@ -1846,7 +1941,7 @@ class LatexInfo {
         return -1;
     }
     return 0;
-  };
+  }
   int getNextKey() {
     entidx_++;
     if (int(entries_.size()) > entidx_) {
@@ -1855,7 +1950,7 @@ class LatexInfo {
     else {
       return -1;
     }
-  };
+  }
   bool setNextKey(int idx) {
     if ((idx == entidx_) && (entidx_ >= 0)) {
       entidx_--;
@@ -1863,7 +1958,7 @@ class LatexInfo {
     }
     else
       return false;
-  };
+  }
   int find(int start, KeyInfo::KeyType keytype) const {
     if (start < 0)
       return -1;
@@ -1874,20 +1969,20 @@ class LatexInfo {
       tmpIdx++;
     }
     return -1;
-  };
+  }
   int process(ostringstream & os, KeyInfo const & actual);
   int dispatch(ostringstream & os, int previousStart, KeyInfo & actual);
-  // string show(int lastpos) { return interval.show(lastpos);};
-  int nextNotIgnored(int start) { return interval_.nextNotIgnored(start);};
+  // string show(int lastpos) { return interval.show(lastpos);}
+  int nextNotIgnored(int start) { return interval_.nextNotIgnored(start);}
   KeyInfo &getKeyInfo(int keyinfo) {
     static KeyInfo invalidInfo = KeyInfo();
     if ((keyinfo < 0) || ( keyinfo >= int(entries_.size())))
       return invalidInfo;
     else
       return entries_[keyinfo];
-  };
-  void setForDefaultLang(KeyInfo const & defLang) {interval_.setForDefaultLang(defLang);};
-  void addIntervall(int low, int up) { interval_.addIntervall(low, up); };
+  }
+  void setForDefaultLang(KeyInfo const & defLang) {interval_.setForDefaultLang(defLang);}
+  void addIntervall(int low, int up) { interval_.addIntervall(low, up); }
 };
 
 
@@ -1941,7 +2036,7 @@ class MathInfo {
     m.mathSize = m.mathEnd - m.mathStart;
     entries_.push_back(m);
   }
-  bool empty() const { return entries_.empty(); };
+  bool empty() const { return entries_.empty(); }
   size_t getEndPos() const {
     if (entries_.empty() || (actualIdx_ >= entries_.size())) {
       return 0;
@@ -1976,7 +2071,7 @@ class MathInfo {
     }
     return entries_[actualIdx_].mathSize;
   }
-  void incrEntry() { actualIdx_++; };
+  void incrEntry() { actualIdx_++; }
 };
 
 void LatexInfo::buildEntries(bool isPatternString)
@@ -3895,14 +3990,14 @@ MatchResult findAdvFinalize(DocIterator & cur, MatchStringAdv const & match, Mat
              max_match.match_len = actual_match_len;
               maxl = len;
               if (maxl - minl < 4)
-                len = (int)((maxl + minl)/2);
+                len = (maxl + minl)/2;
               else
-                len = (int)(minl + (maxl - minl + 3)/4);
+                len = minl + (maxl - minl + 3)/4;
             }
             else {
               // (actual_match_len < max_match.match_len)
               minl = len + 1;
-              len = (int)((maxl + minl)/2);
+              len = (maxl + minl)/2;
             }
           }
          len = minl;