diff options
Diffstat (limited to 'src')
43 files changed, 149 insertions, 76 deletions
diff --git a/src/libs/3rdparty/botan/src/src.pro b/src/libs/3rdparty/botan/src/src.pro index 15967fbd1e..63646891e0 100644 --- a/src/libs/3rdparty/botan/src/src.pro +++ b/src/libs/3rdparty/botan/src/src.pro @@ -1,8 +1,6 @@ TEMPLATE = lib TARGET = Botan -CONFIG += dll - PRECOMPILED_HEADER = ../../precompiled_headers/botan_pch.h include(../../../../qtcreatorlibrary.pri) diff --git a/src/libs/cplusplus/cplusplus.pro b/src/libs/cplusplus/cplusplus.pro index 57d009f161..82ee8bfded 100644 --- a/src/libs/cplusplus/cplusplus.pro +++ b/src/libs/cplusplus/cplusplus.pro @@ -1,5 +1,4 @@ TEMPLATE = lib -CONFIG+=dll TARGET = CPlusPlus DEFINES += NDEBUG diff --git a/src/libs/glsl/glsl.pro b/src/libs/glsl/glsl.pro index 3041ec1d65..14dc79d67c 100644 --- a/src/libs/glsl/glsl.pro +++ b/src/libs/glsl/glsl.pro @@ -1,5 +1,4 @@ TEMPLATE = lib -CONFIG += dll TARGET = GLSL DEFINES += GLSL_BUILD_LIB QT_CREATOR diff --git a/src/libs/languageutils/languageutils.pro b/src/libs/languageutils/languageutils.pro index c1478a8e0d..ecf4888922 100644 --- a/src/libs/languageutils/languageutils.pro +++ b/src/libs/languageutils/languageutils.pro @@ -1,5 +1,4 @@ TEMPLATE = lib -CONFIG += dll TARGET = LanguageUtils DEFINES += QT_CREATOR diff --git a/src/libs/qmleditorwidgets/qmleditorwidgets.pro b/src/libs/qmleditorwidgets/qmleditorwidgets.pro index ad9e1dfa21..c449baac71 100644 --- a/src/libs/qmleditorwidgets/qmleditorwidgets.pro +++ b/src/libs/qmleditorwidgets/qmleditorwidgets.pro @@ -1,5 +1,4 @@ TEMPLATE = lib -CONFIG+=dll TARGET = QmlEditorWidgets DEFINES += QWEAKPOINTER_ENABLE_ARROW diff --git a/src/libs/qmljs/qmljs.pro b/src/libs/qmljs/qmljs.pro index 30dfe3d6d9..0c46c7a6d0 100644 --- a/src/libs/qmljs/qmljs.pro +++ b/src/libs/qmljs/qmljs.pro @@ -1,5 +1,4 @@ TEMPLATE = lib -CONFIG += dll TARGET = QmlJS DEFINES += QMLJS_BUILD_DIR QT_CREATOR diff --git a/src/libs/qmljs/qmljstypedescriptionreader.cpp b/src/libs/qmljs/qmljstypedescriptionreader.cpp index a5c49d5b11..2b0770a259 100644 --- a/src/libs/qmljs/qmljstypedescriptionreader.cpp +++ b/src/libs/qmljs/qmljstypedescriptionreader.cpp @@ -149,7 +149,11 @@ void TypeDescriptionReader::readModule(UiObjectDefinition *ast) for (UiObjectMemberList *it = ast->initializer->members; it; it = it->next) { UiObjectMember *member = it->member; UiObjectDefinition *component = dynamic_cast<UiObjectDefinition *>(member); - const QString typeName = toString(component->qualifiedTypeNameId); + + QString typeName; + if (component) + typeName = toString(component->qualifiedTypeNameId); + if (!component || (typeName != "Component" && typeName != "ModuleApi")) { addWarning(member->firstSourceLocation(), "Expected only 'Component' and 'ModuleApi' object definitions"); continue; diff --git a/src/libs/qmljsdebugclient/qmljsdebugclient.pro b/src/libs/qmljsdebugclient/qmljsdebugclient.pro index 43300f4b39..6e82922235 100644 --- a/src/libs/qmljsdebugclient/qmljsdebugclient.pro +++ b/src/libs/qmljsdebugclient/qmljsdebugclient.pro @@ -1,5 +1,4 @@ TEMPLATE = lib -CONFIG += dll TARGET = QmlJSDebugClient QT += network DEFINES += QMLJSDEBUGCLIENT_LIBRARY diff --git a/src/libs/symbianutils/symbianutils.pro b/src/libs/symbianutils/symbianutils.pro index ed2ff004eb..a9ab5d5c0f 100644 --- a/src/libs/symbianutils/symbianutils.pro +++ b/src/libs/symbianutils/symbianutils.pro @@ -1,5 +1,4 @@ TEMPLATE = lib -CONFIG+=dll TARGET = symbianutils DEFINES += SYMBIANUTILS_BUILD_LIB JSON_BUILD_LIB include(../../qtcreatorlibrary.pri) diff --git a/src/libs/utils/utils.pro b/src/libs/utils/utils.pro index f42fec090c..5762de3631 100644 --- a/src/libs/utils/utils.pro +++ b/src/libs/utils/utils.pro @@ -3,7 +3,6 @@ TARGET = Utils QT += gui \ network -CONFIG += dll include(../../qtcreatorlibrary.pri) include(utils_dependencies.pri) diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp index 40059923d3..481de46419 100644 --- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp @@ -143,7 +143,6 @@ void CMakeOpenProjectWizard::init() { setOption(QWizard::NoBackButtonOnStartPage); setWindowTitle(tr("CMake Wizard")); - setMinimumSize(800, 600); } CMakeManager *CMakeOpenProjectWizard::cmakeManager() const @@ -354,6 +353,7 @@ void CMakeRunPage::initWidgets() fl->addRow(m_exitCodeLabel); setTitle(tr("Run CMake")); + setMinimumSize(600, 400); } void CMakeRunPage::initializePage() diff --git a/src/plugins/coreplugin/ioutputpane.h b/src/plugins/coreplugin/ioutputpane.h index edcdb9d218..df033e7658 100644 --- a/src/plugins/coreplugin/ioutputpane.h +++ b/src/plugins/coreplugin/ioutputpane.h @@ -78,15 +78,16 @@ public: virtual void goToPrev() = 0; public slots: - void popup() { popup(true); } - void popup(bool withFocus) { emit showPage(withFocus); } + void popup() { popup(true, false); } + void popup(bool withFocus) { popup(withFocus, false); } + void popup(bool withFocus, bool ensureSizeHint) { emit showPage(withFocus, ensureSizeHint); } void hide() { emit hidePage(); } void toggle() { toggle(true); } void toggle(bool withFocusIfShown) { emit togglePage(withFocusIfShown); } void navigateStateChanged() { emit navigateStateUpdate(); } signals: - void showPage(bool withFocus); + void showPage(bool withFocus, bool ensureSizeHint); void hidePage(); void togglePage(bool withFocusIfShown); void navigateStateUpdate(); diff --git a/src/plugins/coreplugin/outputpane.cpp b/src/plugins/coreplugin/outputpane.cpp index 336e7bc656..95543b0d7f 100644 --- a/src/plugins/coreplugin/outputpane.cpp +++ b/src/plugins/coreplugin/outputpane.cpp @@ -143,6 +143,28 @@ bool OutputPanePlaceHolder::isMaximized() const return Internal::OutputPaneManager::instance()->isMaximized(); } +void OutputPanePlaceHolder::ensureSizeHintAsMinimum() +{ + if (!d->m_splitter) + return; + int idx = d->m_splitter->indexOf(this); + if (idx < 0) + return; + + QList<int> sizes = d->m_splitter->sizes(); + Internal::OutputPaneManager *om = Internal::OutputPaneManager::instance(); + int minimum = (d->m_splitter->orientation() == Qt::Vertical + ? om->sizeHint().height() : om->sizeHint().width()); + int difference = minimum - sizes.at(idx); + if (difference <= 0) // is already larger + return; + for (int i = 0; i < sizes.count(); ++i) { + sizes[i] += difference / (sizes.count()-1); + } + sizes[idx] = minimum; + d->m_splitter->setSizes(sizes); +} + void OutputPanePlaceHolder::unmaximize() { if (Internal::OutputPaneManager::instance()->isMaximized()) diff --git a/src/plugins/coreplugin/outputpane.h b/src/plugins/coreplugin/outputpane.h index 5c4c7dc413..b0dbf6af66 100644 --- a/src/plugins/coreplugin/outputpane.h +++ b/src/plugins/coreplugin/outputpane.h @@ -64,6 +64,7 @@ public: void unmaximize(); bool isMaximized() const; + void ensureSizeHintAsMinimum(); private slots: void currentModeChanged(Core::IMode *); diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp index 3bf6bc3c60..f4d7c5a9c4 100644 --- a/src/plugins/coreplugin/outputpanemanager.cpp +++ b/src/plugins/coreplugin/outputpanemanager.cpp @@ -254,7 +254,7 @@ void OutputPaneManager::init() const int idx = m_outputWidgetPane->addWidget(outPane->outputWidget(this)); m_pageMap.insert(idx, outPane); - connect(outPane, SIGNAL(showPage(bool)), this, SLOT(showPage(bool))); + connect(outPane, SIGNAL(showPage(bool,bool)), this, SLOT(showPage(bool,bool))); connect(outPane, SIGNAL(hidePage()), this, SLOT(slotHide())); connect(outPane, SIGNAL(togglePage(bool)), this, SLOT(togglePage(bool))); connect(outPane, SIGNAL(navigateStateUpdate()), this, SLOT(updateNavigateState())); @@ -431,10 +431,12 @@ void OutputPaneManager::updateNavigateState() } // Slot connected to showPage signal of each page -void OutputPaneManager::showPage(bool focus) +void OutputPaneManager::showPage(bool focus, bool ensureSizeHint) { int idx = findIndexForPage(qobject_cast<IOutputPane*>(sender())); showPage(idx, focus); + if (ensureSizeHint && OutputPanePlaceHolder::getCurrent()) + OutputPanePlaceHolder::getCurrent()->ensureSizeHintAsMinimum(); } void OutputPaneManager::showPage(int idx, bool focus) diff --git a/src/plugins/coreplugin/outputpanemanager.h b/src/plugins/coreplugin/outputpanemanager.h index 0f0423792a..280a470310 100644 --- a/src/plugins/coreplugin/outputpanemanager.h +++ b/src/plugins/coreplugin/outputpanemanager.h @@ -78,7 +78,7 @@ protected: private slots: void changePage(); - void showPage(bool focus); + void showPage(bool focus, bool ensureSizeHint); void togglePage(bool focus); void clearPage(); void buttonTriggered(); diff --git a/src/plugins/debugger/dumper.pro b/src/plugins/debugger/dumper.pro index 3e51d3d3b2..9c352f85d1 100644 --- a/src/plugins/debugger/dumper.pro +++ b/src/plugins/debugger/dumper.pro @@ -4,7 +4,6 @@ include(../../qtcreatorlibrary.pri) TEMPLATE = lib TARGET = DebuggingHelper -CONFIG += shared DESTDIR = $$IDE_LIBRARY_PATH # /tmp would be better in some respect ... linux-* { diff --git a/src/plugins/debugger/ptracepreload.pro b/src/plugins/debugger/ptracepreload.pro index 1a9e00aa74..4c0b0d9846 100644 --- a/src/plugins/debugger/ptracepreload.pro +++ b/src/plugins/debugger/ptracepreload.pro @@ -3,7 +3,6 @@ include(../../qtcreatorlibrary.pri) TEMPLATE = lib TARGET = ptracepreload -CONFIG += shared CONFIG -= qt DESTDIR = $$IDE_LIBRARY_PATH diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 3de5f5bc0f..aacebc2332 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -457,16 +457,16 @@ QString WatchModel::formattedValue(const WatchData &data) const QString result = value; if (result.startsWith(QLatin1Char('<'))) { if (result == QLatin1String("<Edit>")) - result = WatchHandler::tr("<Edit>"); - else if (result == QLatin1String("<empty>")) - result = WatchHandler::tr("<empty>"); - else if (result == QLatin1String("<uninitialized>")) - result = WatchHandler::tr("<uninitialized>"); - else if (result == QLatin1String("<invalid>")) - result = WatchHandler::tr("<invalid>"); - else if (result == QLatin1String("<not accessible>")) - result = WatchHandler::tr("<not accessible>"); - else if (result.endsWith(" items>")) { + return WatchHandler::tr("<Edit>"); + if (result == QLatin1String("<empty>")) + return WatchHandler::tr("<empty>"); + if (result == QLatin1String("<uninitialized>")) + return WatchHandler::tr("<uninitialized>"); + if (result == QLatin1String("<invalid>")) + return WatchHandler::tr("<invalid>"); + if (result == QLatin1String("<not accessible>")) + return WatchHandler::tr("<not accessible>"); + if (result.endsWith(" items>")) { // '<10 items>' or '<>10 items>' (more than) bool ok; const bool moreThan = result.at(1) == QLatin1Char('>'); @@ -475,7 +475,7 @@ QString WatchModel::formattedValue(const WatchData &data) const const int size = result.mid(numberPos, len).toInt(&ok); QTC_ASSERT(ok, qWarning("WatchHandler: Invalid item count '%s'", qPrintable(result))) - result = moreThan ? + return moreThan ? WatchHandler::tr("<more than %n items>", 0, size) : WatchHandler::tr("<%n items>", 0, size); } diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index fc714fe962..9e31c05ee5 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -991,7 +991,7 @@ bool FakeVimPluginPrivate::initialize() for (int i = 1; i < 10; ++i) { QAction *act = new QAction(this); - act->setText(QString("Execute User Action #%1").arg(i)); + act->setText(tr("Execute User Action #%1").arg(i)); act->setData(i); QString id = QString("FakeVim.UserAction%1").arg(i); QString keys = QString("Alt+V,%1").arg(i); diff --git a/src/plugins/find/searchresultwindow.cpp b/src/plugins/find/searchresultwindow.cpp index f5e04a2ece..27233ef970 100644 --- a/src/plugins/find/searchresultwindow.cpp +++ b/src/plugins/find/searchresultwindow.cpp @@ -48,6 +48,7 @@ #include <QtGui/QFont> #include <QtGui/QAction> #include <QtGui/QComboBox> +#include <QtGui/QScrollArea> #include <QtGui/QStackedWidget> static const char SETTINGSKEYSECTIONNAME[] = "SearchResults"; @@ -209,7 +210,10 @@ SearchResultWindow::SearchResultWindow(QWidget *newSearchPanel) d->m_widget = new QStackedWidget; d->m_widget->setWindowTitle(displayName()); - d->m_widget->addWidget(newSearchPanel); + QScrollArea *newSearchArea = new QScrollArea(d->m_widget); + newSearchArea->setFrameStyle(QFrame::NoFrame); + newSearchArea->setWidget(newSearchPanel); + d->m_widget->addWidget(newSearchArea); d->m_currentIndex = 0; d->m_expandCollapseButton = new QToolButton(d->m_widget); @@ -400,7 +404,7 @@ void SearchResultWindow::setTextEditorFont(const QFont &font) void SearchResultWindow::openNewSearchPanel() { d->setCurrentIndex(0); - popup(); + popup(true/*focus*/, true/*sizeHint*/); } /*! diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp index e5caea75d1..33f9e6ccc6 100644 --- a/src/plugins/projectexplorer/appoutputpane.cpp +++ b/src/plugins/projectexplorer/appoutputpane.cpp @@ -427,7 +427,7 @@ bool AppOutputPane::closeTab(int index) bool AppOutputPane::closeTab(int tabIndex, CloseTabMode closeTabMode) { - const int index = indexOf(m_tabWidget->widget(tabIndex)); + int index = indexOf(m_tabWidget->widget(tabIndex)); QTC_ASSERT(index != -1, return true;) RunControlTab &tab = m_runControlTabs[index]; @@ -441,13 +441,29 @@ bool AppOutputPane::closeTab(int tabIndex, CloseTabMode closeTabMode) case CloseTabNoPrompt: break; case CloseTabWithPrompt: + QWidget *tabWidget = m_tabWidget->widget(tabIndex); if (!tab.runControl->promptToStop()) return false; + // The event loop has run, thus the ordering might have changed, a tab might + // have been closed, so do some strange things... + tabIndex = m_tabWidget->indexOf(tabWidget); + index = indexOf(tabWidget); + if (tabIndex == -1 || index == -1) + return false; + tab = m_runControlTabs[index]; break; } - if (tab.runControl->stop() == RunControl::AsynchronousStop) { - tab.asyncClosing = true; - return false; + if (tab.runControl->isRunning()) { // yes it might have stopped already, then just close + QWidget *tabWidget = m_tabWidget->widget(tabIndex); + if (tab.runControl->stop() == RunControl::AsynchronousStop) { + tab.asyncClosing = true; + return false; + } + tabIndex = m_tabWidget->indexOf(tabWidget); + index = indexOf(tabWidget); + if (tabIndex == -1 || index == -1) + return false; + tab = m_runControlTabs[index]; } } diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 0841ec719b..3f94a892d0 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -187,6 +187,10 @@ bool BuildConfiguration::fromMap(const QVariantMap &map) delete list; return false; } + if (list->id() == QLatin1String(Constants::BUILDSTEPS_BUILD)) + list->setDefaultDisplayName(tr("Build")); + else if (list->id() == QLatin1String(Constants::BUILDSTEPS_CLEAN)) + list->setDefaultDisplayName(tr("Clean")); m_stepLists.append(list); } diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index 13dc89fff0..24aeb95908 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -382,7 +382,6 @@ void GccToolChain::addToEnvironment(Utils::Environment &env) const { if (!m_compilerPath.isEmpty()) env.prependOrSetPath(QFileInfo(m_compilerPath).absolutePath()); - env.set(QLatin1String("LANG"), QLatin1String("C")); } void GccToolChain::setDebuggerCommand(const QString &d) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 6cbed896af..ef448b1216 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1178,7 +1178,7 @@ void ProjectExplorerPlugin::showSessionManager() } else { d->m_session->save(); } - SessionDialog sessionDialog(d->m_session); + SessionDialog sessionDialog(d->m_session, Core::ICore::instance()->mainWindow()); sessionDialog.setAutoLoadSession(d->m_projectExplorerSettings.autorestoreLastSession); sessionDialog.exec(); d->m_projectExplorerSettings.autorestoreLastSession = sessionDialog.autoLoadSession(); diff --git a/src/plugins/projectexplorer/sessiondialog.cpp b/src/plugins/projectexplorer/sessiondialog.cpp index b943b62b7a..0c593463e4 100644 --- a/src/plugins/projectexplorer/sessiondialog.cpp +++ b/src/plugins/projectexplorer/sessiondialog.cpp @@ -145,8 +145,8 @@ bool SessionNameInputDialog::isSwitchToRequested() const } -SessionDialog::SessionDialog(SessionManager *sessionManager) - : m_sessionManager(sessionManager) +SessionDialog::SessionDialog(SessionManager *sessionManager, QWidget *parent) + : QDialog(parent), m_sessionManager(sessionManager) { m_ui.setupUi(this); diff --git a/src/plugins/projectexplorer/sessiondialog.h b/src/plugins/projectexplorer/sessiondialog.h index b8e3da69ef..d9700bc05f 100644 --- a/src/plugins/projectexplorer/sessiondialog.h +++ b/src/plugins/projectexplorer/sessiondialog.h @@ -48,7 +48,7 @@ class SessionDialog : public QDialog { Q_OBJECT public: - SessionDialog(SessionManager *sessionManager); + SessionDialog(SessionManager *sessionManager, QWidget *parent = 0); void setAutoLoadSession(bool); bool autoLoadSession() const; diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp index c2a48ea89f..a90e4d8bd7 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp @@ -132,12 +132,12 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view) addAction(m_selectOnlyContentItemsAction.data()); upperActions.append(m_selectOnlyContentItemsAction.data()); - m_rootWidthAction = new LineEditAction("width", this); + m_rootWidthAction = new LineEditAction(tr("width"), this); connect(m_rootWidthAction.data(), SIGNAL(textChanged(QString)), this, SLOT(changeRootItemWidth(QString))); addAction(m_rootWidthAction.data()); upperActions.append(m_rootWidthAction.data()); - m_rootHeightAction = new LineEditAction("height", this); + m_rootHeightAction = new LineEditAction(tr("height"), this); connect(m_rootHeightAction.data(), SIGNAL(textChanged(QString)), this, SLOT(changeRootItemHeight(QString))); addAction(m_rootHeightAction.data()); upperActions.append(m_rootHeightAction.data()); diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index 1a47517977..482aea9656 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -187,8 +187,8 @@ public: bool renameId(const QString& oldId, const QString& newId); - const QmlJS::ScopeChain &scopeChain() const; const QmlJS::Document *document() const; + const QmlJS::ScopeChain *scopeChain() const; QString convertTypeToImportAlias(const QString &type) const; diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index 4b1f4a350c..a77facd865 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -490,8 +490,8 @@ const QmlJS::ObjectValue *NodeMetaInfoPrivate::getObjectValue() const QmlJS::ContextPtr NodeMetaInfoPrivate::context() const { - if (m_model && m_model->rewriterView()) { - return m_model->rewriterView()->scopeChain().context(); + if (m_model && m_model->rewriterView() && m_model->rewriterView()->scopeChain()) { + return m_model->rewriterView()->scopeChain()->context(); } return QmlJS::ContextPtr(0); } diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index e0b01c7b47..ade173a2f0 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -624,7 +624,7 @@ bool RewriterView::renameId(const QString& oldId, const QString& newId) return false; } -const QmlJS::ScopeChain &RewriterView::scopeChain() const +const QmlJS::ScopeChain *RewriterView::scopeChain() const { return textToModelMerger()->scopeChain(); } diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h index 57a55f687e..84b20a9b12 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h @@ -68,8 +68,8 @@ public: RewriterView *view() const { return m_rewriterView; } - const QmlJS::ScopeChain &scopeChain() const - { return *m_scopeChain; } + const QmlJS::ScopeChain *scopeChain() const + { return m_scopeChain.data(); } const QmlJS::Document *document() const { return m_document.data(); } diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp index b3e96de9ce..beb90c1ed2 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.cpp +++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp @@ -354,8 +354,9 @@ void ModelManager::updateProjectInfo(const ProjectInfo &pinfo) } updateSourceFiles(newFiles, false); - // dump builtin types if the shipped definitions are probably outdated - if (QtSupport::QtVersionNumber(pinfo.qtVersionString) > QtSupport::QtVersionNumber(4, 7, 3)) + // dump builtin types if the shipped definitions are probably outdated and the + // Qt version ships qmlplugindump + if (QtSupport::QtVersionNumber(pinfo.qtVersionString) >= QtSupport::QtVersionNumber(4, 8, 0)) m_pluginDumper->loadBuiltinTypes(pinfo); emit projectInfoUpdated(pinfo); diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp index a7d540e224..835aa560a1 100644 --- a/src/plugins/qt4projectmanager/makestep.cpp +++ b/src/plugins/qt4projectmanager/makestep.cpp @@ -190,6 +190,9 @@ bool MakeStep::init() } Utils::Environment env = bc->environment(); + // Force output to english for the parsers. Do this here and not in the toolchain's + // addToEnvironment() to not screw up the users run environment. + env.set(QLatin1String("LC_ALL"), QLatin1String("C")); // -w option enables "Enter"/"Leaving directory" messages, which we need for detecting the // absolute file path // FIXME doing this without the user having a way to override this is rather bad @@ -361,6 +364,9 @@ void MakeStepConfigWidget::updateDetails() } Utils::Environment env = bc->environment(); + // Force output to english for the parsers. Do this here and not in the toolchain's + // addToEnvironment() to not screw up the users run environment. + env.set(QLatin1String("LC_ALL"), QLatin1String("C")); // -w option enables "Enter"/"Leaving directory" messages, which we need for detecting the // absolute file path // FIXME doing this without the user having a way to override this is rather bad diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index fba68d7562..12831a5a0b 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -165,7 +165,7 @@ enum { debug = 0 }; using namespace Qt4ProjectManager; using namespace Qt4ProjectManager::Internal; -Qt4PriFile::Qt4PriFile(Qt4PriFileNode *qt4PriFile) +Qt4PriFile::Qt4PriFile(Qt4ProjectManager::Qt4PriFileNode *qt4PriFile) : IFile(qt4PriFile), m_priFile(qt4PriFile) { @@ -243,6 +243,8 @@ bool Qt4PriFile::reload(QString *errorString, ReloadFlag flag, ChangeType type) Implements abstract ProjectNode class */ +namespace Qt4ProjectManager { + Qt4PriFileNode::Qt4PriFileNode(Qt4Project *project, Qt4ProFileNode* qt4ProFileNode, const QString &filePath) : ProjectNode(filePath), m_project(project), @@ -266,7 +268,6 @@ void Qt4PriFileNode::scheduleUpdate() m_qt4ProFileNode->scheduleUpdate(); } -namespace Qt4ProjectManager { namespace Internal { struct InternalNode { @@ -375,7 +376,7 @@ struct InternalNode } // Makes the projectNode's subtree below the given folder match this internal node's subtree - void updateSubFolders(Qt4PriFileNode *projectNode, ProjectExplorer::FolderNode *folder) + void updateSubFolders(Qt4ProjectManager::Qt4PriFileNode *projectNode, ProjectExplorer::FolderNode *folder) { updateFiles(projectNode, folder, type); @@ -440,7 +441,7 @@ struct InternalNode } // Makes the folder's files match this internal node's file list - void updateFiles(Qt4PriFileNode *projectNode, FolderNode *folder, FileType type) + void updateFiles(Qt4ProjectManager::Qt4PriFileNode *projectNode, FolderNode *folder, FileType type) { QList<FileNode*> existingFileNodes; foreach (FileNode *fileNode, folder->fileNodes()) { @@ -485,7 +486,6 @@ struct InternalNode } }; } -} QStringList Qt4PriFileNode::baseVPaths(QtSupport::ProFileReader *reader, const QString &projectDir) { @@ -1291,6 +1291,8 @@ QSet<Utils::FileName> Qt4PriFileNode::filterFilesRecursiveEnumerata(ProjectExplo return result; } +} // namespace Qt4ProjectManager + static Qt4ProjectType proFileTemplateTypeToProjectType(ProFileEvaluator::TemplateType type) { switch (type) { diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 208958487f..a99037840b 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -118,8 +118,8 @@ class CentralizedFolderWatcher : public QObject public: CentralizedFolderWatcher(QObject *parent); ~CentralizedFolderWatcher(); - void watchFolders(const QList<QString> &folders, Qt4PriFileNode *node); - void unwatchFolders(const QList<QString> &folders, Qt4PriFileNode *node); + void watchFolders(const QList<QString> &folders, Qt4ProjectManager::Qt4PriFileNode *node); + void unwatchFolders(const QList<QString> &folders, Qt4ProjectManager::Qt4PriFileNode *node); private slots: void folderChanged(const QString &folder); @@ -129,7 +129,7 @@ private slots: private: QSet<QString> recursiveDirs(const QString &folder); QFileSystemWatcher m_watcher; - QMultiMap<QString, Qt4PriFileNode *> m_map; + QMultiMap<QString, Qt4ProjectManager::Qt4PriFileNode *> m_map; QSet<QString> m_recursiveWatchedFolders; QTimer m_compressTimer; @@ -1198,7 +1198,7 @@ QSet<QString> CentralizedFolderWatcher::recursiveDirs(const QString &folder) return result; } -void CentralizedFolderWatcher::watchFolders(const QList<QString> &folders, Qt4PriFileNode *node) +void CentralizedFolderWatcher::watchFolders(const QList<QString> &folders, Qt4ProjectManager::Qt4PriFileNode *node) { if (debugCFW) qDebug()<<"CFW::watchFolders()"<<folders<<"for node"<<node->path(); @@ -1222,7 +1222,7 @@ void CentralizedFolderWatcher::watchFolders(const QList<QString> &folders, Qt4Pr } } -void CentralizedFolderWatcher::unwatchFolders(const QList<QString> &folders, Qt4PriFileNode *node) +void CentralizedFolderWatcher::unwatchFolders(const QList<QString> &folders, Qt4ProjectManager::Qt4PriFileNode *node) { if (debugCFW) qDebug()<<"CFW::unwatchFolders()"<<folders<<"for node"<<node->path(); @@ -1246,7 +1246,7 @@ void CentralizedFolderWatcher::unwatchFolders(const QList<QString> &folders, Qt4 // So the rwf is a subdirectory of a folder we aren't watching // but maybe someone else wants us to watch bool needToWatch = false; - QMultiMap<QString, Qt4PriFileNode *>::const_iterator it, end; + QMultiMap<QString, Qt4ProjectManager::Qt4PriFileNode *>::const_iterator it, end; end = m_map.constEnd(); for (it = m_map.constEnd(); it != end; ++it) { if (rwf.startsWith(it.key())) { @@ -1293,8 +1293,8 @@ void CentralizedFolderWatcher::delayedFolderChanged(const QString &folder) while (true) { if (!dir.endsWith('/')) dir.append('/'); - QList<Qt4PriFileNode *> nodes = m_map.values(dir); - foreach (Qt4PriFileNode *node, nodes) { + QList<Qt4ProjectManager::Qt4PriFileNode *> nodes = m_map.values(dir); + foreach (Qt4ProjectManager::Qt4PriFileNode *node, nodes) { node->folderChanged(folder); } diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 018a5d3d17..6b6bb525b0 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -746,6 +746,10 @@ QtVersionManager::MakefileCompatible QtVersionManager::makefileIsFor(const QStri if (proFile.isEmpty()) return CouldNotParse; + // The Makefile.Debug / Makefile.Release lack a # Command: line + if (findQMakeLine(makefile, QLatin1String("# Command:")).trimmed().isEmpty()) + return CouldNotParse; + QString line = findQMakeLine(makefile, QLatin1String("# Project:")).trimmed(); if (line.isEmpty()) return CouldNotParse; diff --git a/src/qtcreatorlibrary.pri b/src/qtcreatorlibrary.pri index 335e2ea978..e46e3a2d28 100644 --- a/src/qtcreatorlibrary.pri +++ b/src/qtcreatorlibrary.pri @@ -13,6 +13,8 @@ include(rpath.pri) TARGET = $$qtLibraryName($$TARGET) +CONFIG += shared dll + contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols !macx { diff --git a/src/shared/qrceditor/qrceditor.cpp b/src/shared/qrceditor/qrceditor.cpp index 8ac36dc299..82751b8158 100644 --- a/src/shared/qrceditor/qrceditor.cpp +++ b/src/shared/qrceditor/qrceditor.cpp @@ -417,6 +417,7 @@ void QrcEditor::onAddFiles() : m_treeview->model()->parent(current).row(); int const cursorFileArrayIndex = currentIsPrefixNode ? 0 : current.row(); QStringList fileNames = m_treeview->fileNamesToAdd(); + fileNames = m_treeview->existingFilesSubtracted(prefixArrayIndex, fileNames); resolveLocationIssues(fileNames); if (fileNames.isEmpty()) return; diff --git a/src/shared/qrceditor/resourcefile.cpp b/src/shared/qrceditor/resourcefile.cpp index 9b2466c8b9..9699632b46 100644 --- a/src/shared/qrceditor/resourcefile.cpp +++ b/src/shared/qrceditor/resourcefile.cpp @@ -793,36 +793,45 @@ QModelIndex ResourceModel::addFiles(const QModelIndex &model_idx, const QStringL return index(lastFileArrayIndex, 0, prefixModelIndex); } +QStringList ResourceModel::existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const +{ + const QModelIndex prefixModelIdx = index(prefixIndex, 0, QModelIndex()); + QStringList uniqueList; + + if (prefixModelIdx.isValid()) { + foreach (const QString &file, fileNames) { + if (!m_resource_file.contains(prefixIndex, file) && !uniqueList.contains(file)) + uniqueList.append(file); + } + } + return uniqueList; +} + void ResourceModel::addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile, int &firstFile, int &lastFile) { Q_UNUSED(cursorFile) const QModelIndex prefix_model_idx = index(prefixIndex, 0, QModelIndex()); - const QStringList &file_list = fileNames; firstFile = -1; lastFile = -1; if (!prefix_model_idx.isValid()) { return; } - const int prefix_idx = prefixIndex; - QStringList unique_list; - foreach (const QString &file, file_list) { - if (!m_resource_file.contains(prefix_idx, file) && !unique_list.contains(file)) - unique_list.append(file); - } + QStringList unique_list = existingFilesSubtracted(prefixIndex, fileNames); if (unique_list.isEmpty()) { return; } - const int cnt = m_resource_file.fileCount(prefix_idx); + + const int cnt = m_resource_file.fileCount(prefixIndex); beginInsertRows(prefix_model_idx, cnt, cnt + unique_list.count() - 1); // ### FIXME foreach (const QString &file, unique_list) - m_resource_file.addFile(prefix_idx, file); + m_resource_file.addFile(prefixIndex, file); - const QFileInfo fi(file_list.last()); + const QFileInfo fi(unique_list.last()); m_lastResourceDir = fi.absolutePath(); endInsertRows(); diff --git a/src/shared/qrceditor/resourcefile_p.h b/src/shared/qrceditor/resourcefile_p.h index 4ae2076309..ebcde729d8 100644 --- a/src/shared/qrceditor/resourcefile_p.h +++ b/src/shared/qrceditor/resourcefile_p.h @@ -216,6 +216,7 @@ public: virtual QModelIndex addNewPrefix(); virtual QModelIndex addFiles(const QModelIndex &idx, const QStringList &file_list); + QStringList existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const; void addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile, int &firstFile, int &lastFile); void insertPrefix(int prefixIndex, const QString &prefix, const QString &lang); void insertFile(int prefixIndex, int fileIndex, const QString &fileName, const QString &alias); diff --git a/src/shared/qrceditor/resourceview.cpp b/src/shared/qrceditor/resourceview.cpp index 07fd1f36b3..4437a7fad5 100644 --- a/src/shared/qrceditor/resourceview.cpp +++ b/src/shared/qrceditor/resourceview.cpp @@ -305,6 +305,11 @@ EntryBackup * ResourceView::removeEntry(const QModelIndex &index) return m_qrcModel->removeEntry(index); } +QStringList ResourceView::existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const +{ + return m_qrcModel->existingFilesSubtracted(prefixIndex, fileNames); +} + void ResourceView::addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile, int &firstFile, int &lastFile) { diff --git a/src/shared/qrceditor/resourceview.h b/src/shared/qrceditor/resourceview.h index a00afd95a4..5b8a458fa9 100644 --- a/src/shared/qrceditor/resourceview.h +++ b/src/shared/qrceditor/resourceview.h @@ -117,6 +117,7 @@ public: void findSamePlacePostDeletionModelIndex(int &row, QModelIndex &parent) const; EntryBackup *removeEntry(const QModelIndex &index); + QStringList existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const; void addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile, int &firstFile, int &lastFile); void removeFiles(int prefixIndex, int firstFileIndex, int lastFileIndex); |