From ba14d604adfee8b7596e0bfca81ad2720bbc0cf5 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Tue, 21 Feb 2012 21:35:23 +0000 Subject: Show filename in the subwindow title. --- src/mainwindow.cc | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'src/mainwindow.cc') diff --git a/src/mainwindow.cc b/src/mainwindow.cc index d1069d7..a92fb8b 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -80,6 +80,21 @@ EditorWindow *MainWindow::active_child() return 0; } +QMdiSubWindow *MainWindow::find_child(const QString &filename) +{ + + QString canonical = QFileInfo(filename).canonicalFilePath(); + + foreach (QMdiSubWindow *subwindow, mainwindow_mdiarea->subWindowList()) { + EditorWindow *editorwindow = qobject_cast(subwindow->widget()); + + if (editorwindow->filename() == canonical) + return subwindow; + } + return 0; + +} + EditorWindow *MainWindow::add_child() { // create a child widget @@ -90,6 +105,7 @@ EditorWindow *MainWindow::add_child() QMdiSubWindow *subwindow = mainwindow_mdiarea->addSubWindow(child_widget); child_widget->show(); + mainwindow_mdiarea->setActiveSubWindow(subwindow); // FIXME check if maximized subwindow->resize(768, 512); @@ -107,8 +123,19 @@ void MainWindow::slot_open() QString filename = QFileDialog::getOpenFileName(this, tr("Open file")); if (!filename.isEmpty()) { - EditorWindow *editorwindow = add_child(); - editorwindow->loadFile(filename); + QMdiSubWindow *subwindow = find_child(filename); + + if (subwindow) { + mainwindow_mdiarea->setActiveSubWindow(subwindow); + } else { + EditorWindow *editorwindow = add_child(); + editorwindow->loadFile(filename); + + subwindow = find_child(filename); + if (subwindow) { + subwindow->setWindowTitle(editorwindow->filename()); + } + } } } -- cgit v1.2.3