Commit 3d2d1224 authored by Thorbjørn Lindeijer's avatar Thorbjørn Lindeijer
Browse files

Moved the mouse navigation option to the Behaviour settings page

It used to be hidden on the Display settings page.

Task-number: QTCREATORBUG-135
parent 2774c9c0
......@@ -34,6 +34,7 @@
#include "texteditorplugin.h"
#include "completionsupport.h"
#endif
#include "behaviorsettings.h"
#include "basetextdocument.h"
#include "basetexteditor_p.h"
#include "codecselector.h"
......@@ -48,8 +49,8 @@
#include <extensionsystem/pluginmanager.h>
#include <find/basetextfind.h>
#include <utils/stylehelper.h>
#endif
#include <utils/linecolumnlabel.h>
#include <utils/qtcassert.h>
......@@ -4659,7 +4660,6 @@ void BaseTextEditor::setDisplaySettings(const DisplaySettings &ds)
setCodeFoldingVisible(ds.m_displayFoldingMarkers);
setHighlightCurrentLine(ds.m_highlightCurrentLine);
setRevisionsVisible(ds.m_markTextChanges);
setMouseNavigationEnabled(ds.m_mouseNavigation);
if (d->m_displaySettings.m_visualizeWhitespace != ds.m_visualizeWhitespace) {
if (QSyntaxHighlighter *highlighter = baseTextDocument()->syntaxHighlighter())
......@@ -4684,6 +4684,11 @@ void BaseTextEditor::setDisplaySettings(const DisplaySettings &ds)
extraArea()->update();
}
void BaseTextEditor::setBehaviorSettings(const TextEditor::BehaviorSettings &bs)
{
setMouseNavigationEnabled(bs.m_mouseNavigation);
}
void BaseTextEditor::setStorageSettings(const StorageSettings &storageSettings)
{
d->m_document->setStorageSettings(storageSettings);
......
......@@ -62,6 +62,7 @@ class ITextMarkable;
class TextEditorActionHandler;
class BaseTextDocument;
class FontSettings;
struct BehaviorSettings;
struct StorageSettings;
struct Parenthesis;
......@@ -505,6 +506,7 @@ public slots:
void setFontSettingsIfVisible(const TextEditor::FontSettings &);
virtual void setTabSettings(const TextEditor::TabSettings &);
virtual void setDisplaySettings(const TextEditor::DisplaySettings &);
virtual void setBehaviorSettings(const TextEditor::BehaviorSettings &);
virtual void setStorageSettings(const TextEditor::StorageSettings &);
protected:
......
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#include "behaviorsettings.h"
#include <QtCore/QSettings>
#include <QtCore/QString>
static const char * const mouseNavigationKey = "MouseNavigation";
static const char * const groupPostfix = "BehaviorSettings";
namespace TextEditor {
BehaviorSettings::BehaviorSettings() :
m_mouseNavigation(true)
{
}
void BehaviorSettings::toSettings(const QString &category, QSettings *s) const
{
QString group = QLatin1String(groupPostfix);
if (!category.isEmpty())
group.insert(0, category);
s->beginGroup(group);
s->setValue(QLatin1String(mouseNavigationKey), m_mouseNavigation);
s->endGroup();
}
void BehaviorSettings::fromSettings(const QString &category, const QSettings *s)
{
QString group = QLatin1String(groupPostfix);
if (!category.isEmpty())
group.insert(0, category);
group += QLatin1Char('/');
*this = BehaviorSettings(); // Assign defaults
m_mouseNavigation = s->value(group + QLatin1String(mouseNavigationKey), m_mouseNavigation).toBool();
}
bool BehaviorSettings::equals(const BehaviorSettings &ds) const
{
return m_mouseNavigation == ds.m_mouseNavigation
;
}
} // namespace TextEditor
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#ifndef BEHAVIORSETTINGS_H
#define BEHAVIORSETTINGS_H
#include "texteditor_global.h"
QT_BEGIN_NAMESPACE
class QSettings;
QT_END_NAMESPACE
namespace TextEditor {
/**
* Settings that describe how the text editor behaves. This does not include
* the TabSettings and StorageSettings.
*/
struct TEXTEDITOR_EXPORT BehaviorSettings
{
BehaviorSettings();
void toSettings(const QString &category, QSettings *s) const;
void fromSettings(const QString &category, const QSettings *s);
bool equals(const BehaviorSettings &bs) const;
bool m_mouseNavigation;
};
inline bool operator==(const BehaviorSettings &t1, const BehaviorSettings &t2) { return t1.equals(t2); }
inline bool operator!=(const BehaviorSettings &t1, const BehaviorSettings &t2) { return !t1.equals(t2); }
} // namespace TextEditor
#endif // BEHAVIORSETTINGS_H
......@@ -28,6 +28,8 @@
**************************************************************************/
#include "behaviorsettingspage.h"
#include "behaviorsettings.h"
#include "storagesettings.h"
#include "tabsettings.h"
#include "ui_behaviorsettingspage.h"
......@@ -45,8 +47,11 @@ struct BehaviorSettingsPage::BehaviorSettingsPagePrivate
const BehaviorSettingsPageParameters m_parameters;
Ui::BehaviorSettingsPage m_page;
TabSettings m_tabSettings;
StorageSettings m_storageSettings;
BehaviorSettings m_behaviorSettings;
QString m_searchKeywords;
};
......@@ -57,11 +62,12 @@ BehaviorSettingsPage::BehaviorSettingsPagePrivate::BehaviorSettingsPagePrivate
if (const QSettings *s = Core::ICore::instance()->settings()) {
m_tabSettings.fromSettings(m_parameters.settingsPrefix, s);
m_storageSettings.fromSettings(m_parameters.settingsPrefix, s);
m_behaviorSettings.fromSettings(m_parameters.settingsPrefix, s);
}
}
BehaviorSettingsPage::BehaviorSettingsPage(const BehaviorSettingsPageParameters &p,
QObject *parent)
QObject *parent)
: Core::IOptionsPage(parent),
m_d(new BehaviorSettingsPagePrivate(p))
{
......@@ -102,8 +108,10 @@ QWidget *BehaviorSettingsPage::createPage(QWidget *parent)
<< ' ' << m_d->m_page.smartBackspace->text()
<< ' ' << m_d->m_page.cleanWhitespace->text()
<< ' ' << m_d->m_page.addFinalNewLine->text()
<< ' ' << m_d->m_page.mouseNavigation->text()
<< ' ' << m_d->m_page.groupBoxTabAndIndentSettings->title()
<< ' ' << m_d->m_page.groupBoxStorageSettings->title();
<< ' ' << m_d->m_page.groupBoxStorageSettings->title()
<< ' ' << m_d->m_page.groupBoxNavigation->title();
m_d->m_searchKeywords.remove(QLatin1Char('&'));
}
return w;
......@@ -113,8 +121,9 @@ void BehaviorSettingsPage::apply()
{
TabSettings newTabSettings;
StorageSettings newStorageSettings;
BehaviorSettings newBehaviorSettings;
settingsFromUI(newTabSettings, newStorageSettings);
settingsFromUI(newTabSettings, newStorageSettings, newBehaviorSettings);
Core::ICore *core = Core::ICore::instance();
QSettings *s = core->settings();
......@@ -134,10 +143,19 @@ void BehaviorSettingsPage::apply()
emit storageSettingsChanged(newStorageSettings);
}
if (newBehaviorSettings != m_d->m_behaviorSettings) {
m_d->m_behaviorSettings = newBehaviorSettings;
if (s)
m_d->m_behaviorSettings.toSettings(m_d->m_parameters.settingsPrefix, s);
emit behaviorSettingsChanged(newBehaviorSettings);
}
}
void BehaviorSettingsPage::settingsFromUI(TabSettings &tabSettings,
StorageSettings &storageSettings) const
StorageSettings &storageSettings,
BehaviorSettings &behaviorSettings) const
{
tabSettings.m_spacesForTabs = m_d->m_page.insertSpaces->isChecked();
tabSettings.m_autoIndent = m_d->m_page.autoIndent->isChecked();
......@@ -150,6 +168,8 @@ void BehaviorSettingsPage::settingsFromUI(TabSettings &tabSettings,
storageSettings.m_inEntireDocument = m_d->m_page.inEntireDocument->isChecked();
storageSettings.m_cleanIndentation = m_d->m_page.cleanIndentation->isChecked();
storageSettings.m_addFinalNewLine = m_d->m_page.addFinalNewLine->isChecked();
behaviorSettings.m_mouseNavigation = m_d->m_page.mouseNavigation->isChecked();
}
void BehaviorSettingsPage::settingsToUI()
......@@ -167,6 +187,9 @@ void BehaviorSettingsPage::settingsToUI()
m_d->m_page.inEntireDocument->setChecked(storageSettings.m_inEntireDocument);
m_d->m_page.cleanIndentation->setChecked(storageSettings.m_cleanIndentation);
m_d->m_page.addFinalNewLine->setChecked(storageSettings.m_addFinalNewLine);
const BehaviorSettings &behaviorSettings = m_d->m_behaviorSettings;
m_d->m_page.mouseNavigation->setChecked(behaviorSettings.m_mouseNavigation);
}
TabSettings BehaviorSettingsPage::tabSettings() const
......@@ -179,6 +202,11 @@ StorageSettings BehaviorSettingsPage::storageSettings() const
return m_d->m_storageSettings;
}
BehaviorSettings BehaviorSettingsPage::behaviorSettings() const
{
return m_d->m_behaviorSettings;
}
bool BehaviorSettingsPage::matches(const QString &s) const
{
return m_d->m_searchKeywords.contains(s, Qt::CaseInsensitive);
......
......@@ -40,6 +40,7 @@ namespace TextEditor {
struct TabSettings;
struct StorageSettings;
struct BehaviorSettings;
struct BehaviorSettingsPageParameters
{
......@@ -70,16 +71,19 @@ public:
TabSettings tabSettings() const;
StorageSettings storageSettings() const;
BehaviorSettings behaviorSettings() const;
virtual bool matches(const QString &s) const;
signals:
void tabSettingsChanged(const TextEditor::TabSettings &);
void storageSettingsChanged(const TextEditor::StorageSettings &);
void behaviorSettingsChanged(const TextEditor::BehaviorSettings &);
private:
void settingsFromUI(TabSettings &rc,
StorageSettings &storageSettings) const;
StorageSettings &storageSettings,
BehaviorSettings &behaviorSettings) const;
void settingsToUI();
struct BehaviorSettingsPagePrivate;
BehaviorSettingsPagePrivate *m_d;
......
......@@ -6,11 +6,11 @@
<rect>
<x>0</x>
<y>0</y>
<width>615</width>
<height>367</height>
<width>463</width>
<height>421</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGroupBox" name="groupBoxTabAndIndentSettings">
<property name="title">
......@@ -276,6 +276,22 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBoxNavigation">
<property name="title">
<string>Navigation</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QCheckBox" name="mouseNavigation">
<property name="text">
<string>Enable &amp;mouse navigation</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
......
......@@ -31,8 +31,6 @@
#include <QtCore/QSettings>
#include <QtCore/QString>
#include <QtGui/QTextCursor>
#include <QtGui/QTextDocument>
static const char * const displayLineNumbersKey = "DisplayLineNumbers";
static const char * const textWrappingKey = "TextWrapping";
......@@ -43,7 +41,6 @@ static const char * const displayFoldingMarkersKey = "DisplayFoldingMarkers";
static const char * const highlightCurrentLineKey = "HighlightCurrentLine2Key";
static const char * const highlightBlocksKey = "HighlightBlocksKey";
static const char * const animateMatchingParenthesesKey= "AnimateMatchingParenthesesKey";
static const char * const mouseNavigationKey = "MouseNavigation";
static const char * const markTextChangesKey = "MarkTextChanges";
static const char * const autoFoldFirstCommentKey= "AutoFoldFirstComment";
static const char * const groupPostfix = "DisplaySettings";
......@@ -60,7 +57,6 @@ DisplaySettings::DisplaySettings() :
m_highlightCurrentLine(false),
m_highlightBlocks(false),
m_animateMatchingParentheses(true),
m_mouseNavigation(true),
m_markTextChanges(true),
m_autoFoldFirstComment(true)
{
......@@ -81,7 +77,6 @@ void DisplaySettings::toSettings(const QString &category, QSettings *s) const
s->setValue(QLatin1String(highlightCurrentLineKey), m_highlightCurrentLine);
s->setValue(QLatin1String(highlightBlocksKey), m_highlightBlocks);
s->setValue(QLatin1String(animateMatchingParenthesesKey), m_animateMatchingParentheses);
s->setValue(QLatin1String(mouseNavigationKey), m_mouseNavigation);
s->setValue(QLatin1String(markTextChangesKey), m_markTextChanges);
s->setValue(QLatin1String(autoFoldFirstCommentKey), m_autoFoldFirstComment);
s->endGroup();
......@@ -105,7 +100,6 @@ void DisplaySettings::fromSettings(const QString &category, const QSettings *s)
m_highlightCurrentLine = s->value(group + QLatin1String(highlightCurrentLineKey), m_highlightCurrentLine).toBool();
m_highlightBlocks = s->value(group + QLatin1String(highlightBlocksKey), m_highlightBlocks).toBool();
m_animateMatchingParentheses = s->value(group + QLatin1String(animateMatchingParenthesesKey), m_animateMatchingParentheses).toBool();
m_mouseNavigation = s->value(group + QLatin1String(mouseNavigationKey), m_mouseNavigation).toBool();
m_markTextChanges = s->value(group + QLatin1String(markTextChangesKey), m_markTextChanges).toBool();
m_autoFoldFirstComment = s->value(group + QLatin1String(autoFoldFirstCommentKey), m_autoFoldFirstComment).toBool();
}
......@@ -121,7 +115,6 @@ bool DisplaySettings::equals(const DisplaySettings &ds) const
&& m_highlightCurrentLine == ds.m_highlightCurrentLine
&& m_highlightBlocks == ds.m_highlightBlocks
&& m_animateMatchingParentheses == ds.m_animateMatchingParentheses
&& m_mouseNavigation == ds.m_mouseNavigation
&& m_markTextChanges == ds.m_markTextChanges
&& m_autoFoldFirstComment== ds.m_autoFoldFirstComment
;
......
......@@ -54,7 +54,6 @@ struct TEXTEDITOR_EXPORT DisplaySettings
bool m_highlightCurrentLine;
bool m_highlightBlocks;
bool m_animateMatchingParentheses;
bool m_mouseNavigation;
bool m_markTextChanges;
bool m_autoFoldFirstComment;
......
......@@ -102,7 +102,6 @@ QWidget *DisplaySettingsPage::createPage(QWidget *parent)
<< ' ' << m_d->m_page.visualizeWhitespace->text()
<< ' ' << m_d->m_page.animateMatchingParentheses->text()
<< ' ' << m_d->m_page.enableTextWrapping->text()
<< ' ' << m_d->m_page.mouseNavigation->text()
<< ' ' << m_d->m_page.autoFoldFirstComment->text();
m_d->m_searchKeywords.remove(QLatin1Char('&'));
}
......@@ -138,7 +137,6 @@ void DisplaySettingsPage::settingsFromUI(DisplaySettings &displaySettings) const
displaySettings.m_highlightCurrentLine = m_d->m_page.highlightCurrentLine->isChecked();
displaySettings.m_highlightBlocks = m_d->m_page.highlightBlocks->isChecked();
displaySettings.m_animateMatchingParentheses = m_d->m_page.animateMatchingParentheses->isChecked();
displaySettings.m_mouseNavigation = m_d->m_page.mouseNavigation->isChecked();
displaySettings.m_markTextChanges = m_d->m_page.markTextChanges->isChecked();
displaySettings.m_autoFoldFirstComment = m_d->m_page.autoFoldFirstComment->isChecked();
}
......@@ -155,7 +153,6 @@ void DisplaySettingsPage::settingsToUI()
m_d->m_page.highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
m_d->m_page.highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
m_d->m_page.animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
m_d->m_page.mouseNavigation->setChecked(displaySettings.m_mouseNavigation);
m_d->m_page.markTextChanges->setChecked(displaySettings.m_markTextChanges);
m_d->m_page.autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
}
......
......@@ -7,11 +7,11 @@
<x>0</x>
<y>0</y>
<width>450</width>
<height>330</height>
<height>288</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="3" column="0">
<item row="2" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
......@@ -142,22 +142,6 @@
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QGroupBox" name="groupBoxNavigation">
<property name="title">
<string>Navigation</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QCheckBox" name="mouseNavigation">
<property name="text">
<string>Enable &amp;mouse navigation</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
......
......@@ -9,6 +9,7 @@ SOURCES += texteditorplugin.cpp \
plaintexteditorfactory.cpp \
basetextdocument.cpp \
basetexteditor.cpp \
behaviorsettings.cpp \
behaviorsettingspage.cpp \
texteditoractionhandler.cpp \
icompletioncollector.cpp \
......@@ -39,6 +40,7 @@ HEADERS += texteditorplugin.h \
plaintexteditorfactory.h \
basetexteditor_p.h \
basetextdocument.h \
behaviorsettings.h \
behaviorsettingspage.h \
completionsupport.h \
completionwidget.h \
......
......@@ -31,6 +31,7 @@
#include "texteditorconstants.h"
#include "basetexteditor.h"
#include "behaviorsettings.h"
#include "behaviorsettingspage.h"
#include "displaysettings.h"
#include "displaysettingspage.h"
......@@ -135,6 +136,8 @@ TextEditorSettings::TextEditorSettings(QObject *parent)
this, SIGNAL(tabSettingsChanged(TextEditor::TabSettings)));
connect(m_behaviorSettingsPage, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)),
this, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)));
connect(m_behaviorSettingsPage, SIGNAL(behaviorSettingsChanged(TextEditor::BehaviorSettings)),
this, SIGNAL(behaviorSettingsChanged(TextEditor::BehaviorSettings)));
connect(m_displaySettingsPage, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)),
this, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)));
}
......@@ -167,6 +170,8 @@ void TextEditorSettings::initializeEditor(BaseTextEditor *editor)
editor, SLOT(setTabSettings(TextEditor::TabSettings)));
connect(this, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)),
editor, SLOT(setStorageSettings(TextEditor::StorageSettings)));
connect(this, SIGNAL(behaviorSettingsChanged(TextEditor::BehaviorSettings)),
editor, SLOT(setBehaviorSettings(TextEditor::BehaviorSettings)));
connect(this, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)),
editor, SLOT(setDisplaySettings(TextEditor::DisplaySettings)));
......@@ -179,6 +184,7 @@ void TextEditorSettings::initializeEditor(BaseTextEditor *editor)
editor->setFontSettings(fontSettings());
editor->setTabSettings(tabSettings());
editor->setStorageSettings(storageSettings());
editor->setBehaviorSettings(behaviorSettings());
editor->setDisplaySettings(displaySettings());
}
......@@ -212,6 +218,11 @@ StorageSettings TextEditorSettings::storageSettings() const
return m_behaviorSettingsPage->storageSettings();
}
BehaviorSettings TextEditorSettings::behaviorSettings() const
{
return m_behaviorSettingsPage->behaviorSettings();
}
DisplaySettings TextEditorSettings::displaySettings() const
{
return m_displaySettingsPage->displaySettings();
......
......@@ -43,12 +43,13 @@ class FontSettingsPage;
class FontSettings;
struct TabSettings;
struct StorageSettings;
struct BehaviorSettings;
struct DisplaySettings;
/**
* This class provides a central place for basic text editor settings. These
* settings include font settings, tab settings, storage settings and display
* settings.
* settings include font settings, tab settings, storage settings, behavior
* settings and display settings.
*/
class TEXTEDITOR_EXPORT TextEditorSettings : public QObject
{
......@@ -65,12 +66,14 @@ public:
FontSettings fontSettings() const;
TabSettings tabSettings() const;
StorageSettings storageSettings() const;
BehaviorSettings behaviorSettings() const;
DisplaySettings displaySettings() const;
signals:
void fontSettingsChanged(const TextEditor::FontSettings &);
void tabSettingsChanged(const TextEditor::TabSettings &);
void storageSettingsChanged(const TextEditor::StorageSettings &);
void behaviorSettingsChanged(const TextEditor::BehaviorSettings &);
void displaySettingsChanged(const TextEditor::DisplaySettings &);
private slots:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment