Skip to content

Commit 38f8093

Browse files
[common] Fixed problem with opening of already opened files (#363)
1 parent 16f4c3f commit 38f8093

File tree

5 files changed

+39
-19
lines changed

5 files changed

+39
-19
lines changed

docs/changelog.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
<li class="fix">Fixed plugin loading on linux</li>
2525
<li class="fix">Fixed dock widget positions save/load</li>
2626
<li class="fix">Fixed main window title</li>
27+
<li class="fix">Fixed problems with opening already opened files <p class="comment">Now if file already opened, then it makes tab active</p></li>
28+
<li class="change">Change license to MIT</li>
2729

2830
<p class="header">SCg-editor</p>
2931
<li class="add">Added load/save of content state</li>
@@ -38,6 +40,7 @@
3840

3941
<p class="header">SCs editor</p>
4042
<li class="add">Added support of scs 0.2.0 standard</li>
43+
<li class="add">Added new line into the end of file<p class="comment">Less lines changes in diff's</p></li>
4144
<li class="fix">Fixed default encoding to utf-8</li>
4245

4346
</ul>

sources/kbe/extendedtabwidget.cpp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,12 @@ bool ExtendedTabWidget::closeWindow(QWidget* wnd)
7979
"bool ExtendedTabWidget::close(int index)",
8080
"Can't get window");
8181

82-
if(emit tabBeforeClose(wnd))
82+
if (emit tabBeforeClose(wnd))
8383
{
8484
wnd->close();
8585
removeTab(indexOf(wnd));
8686
delete wnd;
87+
8788
tabsUpdate();
8889
return true;
8990
}
@@ -95,12 +96,26 @@ QList<QWidget*> ExtendedTabWidget::subWindowList() const
9596
{
9697
QList<QWidget*> res;
9798
int cnt = count();
98-
for(int i =0; i < cnt; ++i)
99+
for (int i = 0; i < cnt; ++i)
99100
res.push_back(widget(i));
100101

101102
return res;
102103
}
103104

105+
bool ExtendedTabWidget::activateTab(QString const & fileName)
106+
{
107+
for (int i = 0; i < count(); ++i)
108+
{
109+
EditorInterface const * editor = qobject_cast<EditorInterface*>(widget(i));
110+
if (editor && editor->currentFileName() == fileName)
111+
{
112+
setCurrentWidget(widget(i));
113+
return true;
114+
}
115+
}
116+
return false;
117+
}
118+
104119
void ExtendedTabWidget::closeOtherDocuments()
105120
{
106121
QWidget* currentWindow = currentWidget();

sources/kbe/extendedtabwidget.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,14 @@ class ExtendedTabWidget : public QTabWidget
2727
*/
2828
bool closeWindow(QWidget* wnd);
2929

30-
//!@return list with tab widgets;
30+
//! @return list with tab widgets;
3131
QList<QWidget*> subWindowList() const;
3232

33+
/*! Makes tab active by filename
34+
* @return If specified tab exists, then returns true; otherwise returns false
35+
*/
36+
bool activateTab(QString const & fileName);
37+
3338
protected:
3439
//! Watches for all child widgets (windows).
3540
bool eventFilter (QObject* watched, QEvent* event);
@@ -39,7 +44,7 @@ class ExtendedTabWidget : public QTabWidget
3944
* @param w Widget in closed tab.
4045
* @return True, if tab will be closed.
4146
*/
42-
bool tabBeforeClose(QWidget* w);
47+
bool tabBeforeClose(QWidget * w);
4348

4449
/*! Tabs updated signal. Calls when new tab added, or any tab removed.
4550
*/

sources/kbe/mainwindow.cpp

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -388,28 +388,22 @@ void MainWindow::fileOpen(QString fileName)
388388
mBlurEffect->setEnabled(true);
389389
dlg.setDirectory(mLastDir);
390390
fileName = dlg.getOpenFileName(this,
391-
tr("Open file"),
392-
"",
393-
PluginManager::instance()->openFilters(),
394-
&selectedFilter,
395-
options);
396-
if (!fileName.isEmpty())
397-
load(fileName);
391+
tr("Open file"),
392+
"",
393+
PluginManager::instance()->openFilters(),
394+
&selectedFilter,
395+
options);
398396
mLastDir = QDir(fileName);
399397
mBlurEffect->setEnabled(false);
400-
return;
401398
}
402399

403400
if (!fileName.isEmpty() && QFile::exists(fileName))
404401
{
405-
load(fileName);
402+
if (!mTabWidget->activateTab(fileName))
403+
load(fileName);
406404
return;
407405
}
408406

409-
QFileInfo fileInfo(fileName);
410-
EditorInterface* childWindow = createSubWindowByExt(fileInfo.suffix());
411-
saveWindow(childWindow, fileName, fileInfo.suffix());
412-
413407
}
414408

415409
void MainWindow::load(QString fileName)

tools/DEBIAN/changelog

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ kbe (0.3.1-ubuntu) unstable; urgency=low
77
* Fixed dock widget positions save/load
88
* Fixed main window title
99
* Port code to use qt5
10+
* Change license to MIT
11+
* Fixed problems with opening of already opened files
1012

1113
* scg. Added load/save of content state
1214
* scg. Added command to show/hide all contents
@@ -17,8 +19,9 @@ kbe (0.3.1-ubuntu) unstable; urgency=low
1719
* scg. Fixed visual style of scg-elements
1820
* scg. Fixed default encoding to utf-8
1921

20-
* scg. Added support of scs 0.2.0 standard
21-
* scg. Fixed default encoding to utf-8
22+
* scs. Added support of scs 0.2.0 standard
23+
* scs. Fixed default encoding to utf-8
24+
* scs. Added new line into the end of file
2225

2326
-- Denis Koronchik <denis.koronchik@gmail.com> Tue, 5 May 2014 01:06:43 +0300
2427

0 commit comments

Comments
 (0)