diff --git a/src/catalog.cpp b/src/catalog.cpp index dbc77ac97..fdc57bc6a 100644 --- a/src/catalog.cpp +++ b/src/catalog.cpp @@ -1365,19 +1365,13 @@ void Catalog::RemoveDeletedItems() CatalogItemPtr Catalog::FindItemByLine(int lineno) { - int i = FindItemIndexByLine(lineno); - return i == -1 ? CatalogItemPtr() : m_items[i]; -} - -int Catalog::FindItemIndexByLine(int lineno) -{ - int last = -1; + CatalogItemPtr last; for (auto& i: m_items) { - if (i->GetLineNumber() > lineno) + if ( i->GetLineNumber() > lineno ) return last; - last++; + last = i; } return last; diff --git a/src/catalog.h b/src/catalog.h index 710a7e40f..494497dbd 100644 --- a/src/catalog.h +++ b/src/catalog.h @@ -709,9 +709,6 @@ class Catalog /// Finds item by line number CatalogItemPtr FindItemByLine(int lineno); - /// Finds catalog index by line number - int FindItemIndexByLine(int lineno); - /// Sets the given item to have the given bookmark and returns the index /// of the item that previously had this bookmark (or -1) int SetBookmark(int id, Bookmark bookmark); diff --git a/src/edapp.cpp b/src/edapp.cpp index 2d08b8d93..f220c5b1f 100644 --- a/src/edapp.cpp +++ b/src/edapp.cpp @@ -148,27 +148,19 @@ private: wxString payload; if (data == "Activate") { - dispatch::on_main([=] { - m_app->OpenNewFile(); - }); + m_app->OpenNewFile(); return true; } if (data.StartsWith("OpenURI:", &payload)) { - dispatch::on_main([=] { - m_app->HandleCustomURI(payload); - }); + m_app->HandleCustomURI(payload); return true; } if (data.StartsWith("OpenFile:", &payload)) { - long lineno = 0; - payload.BeforeFirst(':').ToLong(&lineno); wxArrayString a; - a.push_back(payload.AfterFirst(':')); - dispatch::on_main([=] { - m_app->OpenFiles(a, lineno); - }); + a.push_back(payload); + m_app->OpenFiles(a); return true; } return false; @@ -242,11 +234,11 @@ public: Command("OpenURI:" + uri); } - void OpenFile(const wxString& filename, int lineno = 0) + void OpenFile(const wxString& filename) { wxFileName fn(filename); fn.MakeAbsolute(); - Command(wxString::Format("OpenFile:%d:%s", lineno, fn.GetFullPath())); + Command("OpenFile:" + fn.GetFullPath()); } private: @@ -320,7 +312,6 @@ bool PoeditApp::CheckForBetaUpdates() const #ifndef __WXOSX__ static wxArrayString gs_filesToOpen; #endif -static int gs_lineToOpen = 0; extern void InitXmlResource(); @@ -456,9 +447,8 @@ bool PoeditApp::OnInit() // passing files on command line if (!gs_filesToOpen.empty()) { - OpenFiles(gs_filesToOpen, gs_lineToOpen); + OpenFiles(gs_filesToOpen); gs_filesToOpen.clear(); - gs_lineToOpen = 0; } else { @@ -615,7 +605,7 @@ void PoeditApp::OpenNewFile() PoeditFrame::CreateWelcome(); } -void PoeditApp::OpenFiles(const wxArrayString& names, int lineno) +void PoeditApp::OpenFiles(const wxArrayString& names) { PoeditFrame *active = PoeditFrame::UnusedActiveWindow(); @@ -638,12 +628,12 @@ void PoeditApp::OpenFiles(const wxArrayString& names, int lineno) if (active) { - active->OpenFile(name, lineno); + active->OpenFile(name); active = nullptr; } else { - PoeditFrame::Create(name, lineno); + PoeditFrame::Create(name); } } } @@ -674,7 +664,6 @@ namespace { const char *CL_KEEP_TEMP_FILES = "keep-temp-files"; const char *CL_HANDLE_POEDIT_URI = "handle-poedit-uri"; -const char *CL_LINE = "line"; } void PoeditApp::OnInitCmdLine(wxCmdLineParser& parser) @@ -685,8 +674,6 @@ void PoeditApp::OnInitCmdLine(wxCmdLineParser& parser) _("don't delete temporary files (for debugging)")); parser.AddLongOption(CL_HANDLE_POEDIT_URI, _("handle a poedit:// URI"), wxCMD_LINE_VAL_STRING); - parser.AddLongOption(CL_LINE, - _("go to item at given line number"), wxCMD_LINE_VAL_NUMBER); parser.AddParam("catalog.po", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL | wxCMD_LINE_PARAM_MULTIPLE); } @@ -696,10 +683,6 @@ bool PoeditApp::OnCmdLineParsed(wxCmdLineParser& parser) if (!wxApp::OnCmdLineParsed(parser)) return false; - long lineno = 0; - if (parser.Found(CL_LINE, &lineno)) - gs_lineToOpen = (int)lineno; - if ( parser.Found(CL_KEEP_TEMP_FILES) ) TempDirectory::KeepFiles(); @@ -727,7 +710,7 @@ bool PoeditApp::OnCmdLineParsed(wxCmdLineParser& parser) else { for (size_t i = 0; i < parser.GetParamCount(); i++) - client.OpenFile(parser.GetParam(i), (int)lineno); + client.OpenFile(parser.GetParam(i)); } return false; // terminate program } @@ -1021,13 +1004,6 @@ void PoeditApp::OpenPoeditWeb(const wxString& path) #ifdef __WXOSX__ -void PoeditApp::MacOpenFiles(const wxArrayString& names) -{ - OpenFiles(names, gs_lineToOpen); - gs_lineToOpen = 0; -} - - static NSMenuItem *AddNativeItem(NSMenu *menu, int pos, const wxString&text, SEL ac, NSString *key) { NSString *str = str::to_NS(text); diff --git a/src/edapp.h b/src/edapp.h index 4e46452af..19e1cd176 100644 --- a/src/edapp.h +++ b/src/edapp.h @@ -61,7 +61,7 @@ class PoeditApp : public wxApp bool CheckForBetaUpdates() const; // opens files in new frame - void OpenFiles(const wxArrayString& filenames, int lineno = 0); + void OpenFiles(const wxArrayString& filenames); // opens empty frame or catalogs manager void OpenNewFile(); @@ -70,7 +70,7 @@ class PoeditApp : public wxApp #endif #ifdef __WXOSX__ - virtual void MacOpenFiles(const wxArrayString& names); + virtual void MacOpenFiles(const wxArrayString& names) { OpenFiles(names); } virtual void MacNewFile() { OpenNewFile(); } virtual void MacOpenURL(const wxString &url) { HandleCustomURI(url); } #endif diff --git a/src/edframe.cpp b/src/edframe.cpp index 59a383d27..0478dc202 100644 --- a/src/edframe.cpp +++ b/src/edframe.cpp @@ -212,7 +212,7 @@ bool g_focusToText = false; return false; } -/*static*/ PoeditFrame *PoeditFrame::Create(const wxString& filename, int lineno) +/*static*/ PoeditFrame *PoeditFrame::Create(const wxString& filename) { PoeditFrame *f = PoeditFrame::Find(filename); if (f) @@ -245,9 +245,7 @@ bool g_focusToText = false; } f->Show(true); - - // HACK: make sure this is called *after* the delayed call in PoeditListCtrl::CatalogChanged - f->m_list->CallAfter([=]{ f->PlaceInitialFocus(lineno); }); + f->PlaceInitialFocus(); return f; } @@ -788,23 +786,15 @@ PoeditFrame::~PoeditFrame() } -void PoeditFrame::PlaceInitialFocus(int lineno) +void PoeditFrame::PlaceInitialFocus() { if (g_focusToText && m_editingArea) m_editingArea->SetTextFocus(); else if (m_list) m_list->SetFocus(); - if (m_catalog && m_list && m_list->GetItemCount() > 0) - { - int item = 0; - if (lineno > 0) - { - item = m_catalog->FindItemIndexByLine(lineno); - item = (item == -1) ? 0 : m_list->CatalogIndexToList(item); - } - m_list->SelectAndFocus(item); - } + if (m_list && m_list->GetItemCount() > 0) + m_list->SelectAndFocus(0); } @@ -926,20 +916,19 @@ void PoeditFrame::OnCloseCmd(wxCommandEvent&) #endif -void PoeditFrame::OpenFile(const wxString& filename, int lineno) +void PoeditFrame::OpenFile(const wxString& filename) { DoIfCanDiscardCurrentDoc([=]{ - DoOpenFile(filename, lineno); + DoOpenFile(filename); }); } -void PoeditFrame::DoOpenFile(const wxString& filename, int lineno) +void PoeditFrame::DoOpenFile(const wxString& filename) { ReadCatalog(filename); - // HACK: make sure this is called *after* the delayed call in PoeditListCtrl::CatalogChanged - m_list->CallAfter([=]{ PlaceInitialFocus(lineno); }); + PlaceInitialFocus(); } diff --git a/src/edframe.h b/src/edframe.h index 1ed599851..0ba310192 100644 --- a/src/edframe.h +++ b/src/edframe.h @@ -69,7 +69,7 @@ class PoeditFrame : public PoeditFrameBase \param catalog filename of catalog to open. */ - static PoeditFrame *Create(const wxString& catalog, int lineno = 0); + static PoeditFrame *Create(const wxString& catalog); /** Public constructor functions. Creates and shows frame without catalog or other content. @@ -83,7 +83,7 @@ class PoeditFrame : public PoeditFrameBase /// Opens given file in this frame. Asks user for permission first /// if there's unsaved document. - void OpenFile(const wxString& filename, int lineno = 0); + void OpenFile(const wxString& filename); /** Returns pointer to existing instance of PoeditFrame that currently exists and edits \a catalog. If no such frame exists, returns NULL. @@ -183,7 +183,7 @@ class PoeditFrame : public PoeditFrameBase wxWindow* CreateContentViewEmptyPO(); void DestroyContentView(); - void PlaceInitialFocus(int lineno = 0); + void PlaceInitialFocus(); typedef std::set PoeditFramesList; static PoeditFramesList ms_instances; @@ -206,7 +206,7 @@ class PoeditFrame : public PoeditFrameBase wxWindowPtr CreateAskAboutSavingDialog(); // implements opening of files, without asking user - void DoOpenFile(const wxString& filename, int lineno = 0); + void DoOpenFile(const wxString& filename); /// Updates statistics in statusbar. void UpdateStatusBar();