diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h
index cfd0d7c..77a23c5 100644
--- a/src/plugins/projectexplorer/projectnodes.h
+++ b/src/plugins/projectexplorer/projectnodes.h
@@ -72,6 +72,7 @@ enum FileType {
     FormType,
     ResourceType,
     ProjectFileType,
+	HeaderAndSourceType,
     FileTypeSize
 };
 
diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp
index f76df79..9a22c72 100644
--- a/src/plugins/projectexplorer/projecttreewidget.cpp
+++ b/src/plugins/projectexplorer/projecttreewidget.cpp
@@ -120,6 +120,7 @@ ProjectTreeWidget::ProjectTreeWidget(QWidget *parent)
           m_view(0),
           m_model(0),
           m_filterProjectsAction(0),
+		  m_filterMergeSourcesAction(0),
           m_autoSync(false)
 {
     m_model = new FlatModel(m_explorer->session()->sessionNode(), this);
@@ -146,6 +147,13 @@ ProjectTreeWidget::ProjectTreeWidget(QWidget *parent)
     m_filterProjectsAction->setChecked(false); // default is the traditional complex tree
     connect(m_filterProjectsAction, SIGNAL(toggled(bool)), this, SLOT(setProjectFilter(bool)));
 
+	m_filterMergeSourcesAction = new QAction(tr("Merge Sources And Headers"), this);
+	m_filterMergeSourcesAction->setCheckable(true);
+	m_filterMergeSourcesAction->setChecked(false); // default is the traditional separate sources and headers tree
+	connect(m_filterMergeSourcesAction, SIGNAL(toggled(bool)), this, SLOT(setMergeSourcesFilter(bool)));
+
+
+
     m_filterGeneratedFilesAction = new QAction(tr("Hide generated files"), this);
     m_filterGeneratedFilesAction->setCheckable(true);
     m_filterGeneratedFilesAction->setChecked(true);
@@ -331,6 +339,14 @@ void ProjectTreeWidget::setProjectFilter(bool filter)
 {
     m_model->setProjectFilterEnabled(filter);
     m_filterProjectsAction->setChecked(filter);
+	m_filterMergeSourcesAction->setEnabled(!filter);
+}
+
+void ProjectTreeWidget::setMergeSourcesFilter(bool filter)
+{
+//    m_model->setProjectFilterEnabled(filter);
+	m_filterMergeSourcesAction->setChecked(filter);
+
 }
 
 void ProjectTreeWidget::setGeneratedFilesFilter(bool filter)
@@ -380,6 +396,7 @@ Core::NavigationView ProjectTreeWidgetFactory::createWidget()
     filter->setPopupMode(QToolButton::InstantPopup);
     QMenu *filterMenu = new QMenu(filter);
     filterMenu->addAction(ptw->m_filterProjectsAction);
+	filterMenu->addAction(ptw->m_filterMergeSourcesAction);
     filterMenu->addAction(ptw->m_filterGeneratedFilesAction);
     filter->setMenu(filterMenu);
 
diff --git a/src/plugins/projectexplorer/projecttreewidget.h b/src/plugins/projectexplorer/projecttreewidget.h
index 732035f..d9ffe93 100644
--- a/src/plugins/projectexplorer/projecttreewidget.h
+++ b/src/plugins/projectexplorer/projecttreewidget.h
@@ -66,6 +66,7 @@ public slots:
 private slots:
     void setCurrentItem(ProjectExplorer::Node *node, ProjectExplorer::Project *project);
     void setProjectFilter(bool filter);
+	void setMergeSourcesFilter(bool filter);
     void setGeneratedFilesFilter(bool filter);
 
     void handleCurrentItemChange(const QModelIndex &current);
@@ -83,6 +84,7 @@ private:
     QTreeView *m_view;
     FlatModel *m_model;
     QAction *m_filterProjectsAction;
+	QAction *m_filterMergeSourcesAction;
     QAction *m_filterGeneratedFilesAction;
     QToolButton *m_toggleSync;
 
diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
index c428cdd..ffac507 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.cpp
+++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
@@ -338,12 +338,14 @@ void Qt4PriFileNode::update(ProFile *includeFile, ProFileReader *reader)
     static QList<FileType> fileTypes =
                (QList<FileType>() << ProjectExplorer::HeaderType
                                   << ProjectExplorer::SourceType
+								  << ProjectExplorer::HeaderAndSourceType
                                   << ProjectExplorer::FormType
                                   << ProjectExplorer::ResourceType
                                   << ProjectExplorer::UnknownFileType);
     static QStringList fileTypeNames =
                 QStringList() << tr("Headers")
-                              << tr("Sources")
+							  << tr("Sources")
+							  << tr("Headers&Sources")
                               << tr("Forms")
                               << tr("Resources")
                               << tr("Other files");
@@ -352,6 +354,7 @@ void Qt4PriFileNode::update(ProFile *includeFile, ProFileReader *reader)
         QStringList iconPaths;
         iconPaths << ":/qt4projectmanager/images/headers.png"
                   << ":/qt4projectmanager/images/sources.png"
+				  << ":/qt4projectmanager/images/unknown.png"
                   << ":/qt4projectmanager/images/forms.png"
                   << ":/qt4projectmanager/images/qt_qrc.png"
                   << ":/qt4projectmanager/images/unknown.png";
@@ -706,16 +709,25 @@ QStringList Qt4PriFileNode::varNames(FileType type)
 {
     QStringList vars;
     switch (type) {
-    case ProjectExplorer::HeaderType:
-        vars << QLatin1String("HEADERS");
-        vars << QLatin1String("OBJECTIVE_HEADERS");
-        break;
-    case ProjectExplorer::SourceType:
-        vars << QLatin1String("SOURCES");
-        vars << QLatin1String("OBJECTIVE_SOURCES");
-        vars << QLatin1String("LEXSOURCES");
-        vars << QLatin1String("YACCSOURCES");
-        break;
+
+	case ProjectExplorer::HeaderType:
+		vars << QLatin1String("HEADERS");
+		vars << QLatin1String("OBJECTIVE_HEADERS");
+		break;
+	case ProjectExplorer::SourceType:
+		vars << QLatin1String("SOURCES");
+		vars << QLatin1String("OBJECTIVE_SOURCES");
+		vars << QLatin1String("LEXSOURCES");
+		vars << QLatin1String("YACCSOURCES");
+		break;
+	case ProjectExplorer::HeaderAndSourceType:
+		vars << QLatin1String("HEADERS");
+		vars << QLatin1String("OBJECTIVE_HEADERS");
+		vars << QLatin1String("SOURCES");
+		vars << QLatin1String("OBJECTIVE_SOURCES");
+		vars << QLatin1String("LEXSOURCES");
+		vars << QLatin1String("YACCSOURCES");
+		break;
     case ProjectExplorer::ResourceType:
         vars << QLatin1String("RESOURCES");
         break;
