diff --git a/doc/images/qt-simulator.png b/doc/images/qt-simulator.png
index 94f2906481e334204de9984e09b82b55661e8cbd..77db21123beb6f1c9f916bdf763a376a8230da98 100644
Binary files a/doc/images/qt-simulator.png and b/doc/images/qt-simulator.png differ
diff --git a/doc/images/qtcreator-add-resource-wizard.png b/doc/images/qtcreator-add-resource-wizard.png
index 688f1efae83bf108817a7a0b6bd5ea1ba4f40f10..5109123f16e15b50f1dac39127dcf5d0d3353376 100644
Binary files a/doc/images/qtcreator-add-resource-wizard.png and b/doc/images/qtcreator-add-resource-wizard.png differ
diff --git a/doc/images/qtcreator-build-dependencies.png b/doc/images/qtcreator-build-dependencies.png
index d51a11be8afe4a5eac36d571b48ff959e0b78535..de5b3ca59a9f53f704c3943583984eb9f63301d0 100644
Binary files a/doc/images/qtcreator-build-dependencies.png and b/doc/images/qtcreator-build-dependencies.png differ
diff --git a/doc/images/qtcreator-cmake-build-settings.png b/doc/images/qtcreator-cmake-build-settings.png
index d1db5840083be66b074bfd2de503b22923f22138..406c447eafa7e9591fe0e0c5797ca5edd3ea0757 100644
Binary files a/doc/images/qtcreator-cmake-build-settings.png and b/doc/images/qtcreator-cmake-build-settings.png differ
diff --git a/doc/images/qtcreator-cmakeexecutable.png b/doc/images/qtcreator-cmakeexecutable.png
index 08391df622c7434e5788be9a63551ec0e24c8981..b6f8f3a9218434ce96477fe663a0bb95fd625bae 100644
Binary files a/doc/images/qtcreator-cmakeexecutable.png and b/doc/images/qtcreator-cmakeexecutable.png differ
diff --git a/doc/images/qtcreator-custom-project-wizards.png b/doc/images/qtcreator-custom-project-wizards.png
index fa96ec606f44d479b22bad4e5348aa38e805b64d..e201501c690063d65e184a0c6713044b631101d3 100644
Binary files a/doc/images/qtcreator-custom-project-wizards.png and b/doc/images/qtcreator-custom-project-wizards.png differ
diff --git a/doc/images/qtcreator-debugger-views.png b/doc/images/qtcreator-debugger-views.png
index d00acb7a9e0600a98a212428aaefb23fcc573df6..dc6dde6b318105a33378018395c2cdd8c1a609aa 100644
Binary files a/doc/images/qtcreator-debugger-views.png and b/doc/images/qtcreator-debugger-views.png differ
diff --git a/doc/images/qtcreator-editor-settings.png b/doc/images/qtcreator-editor-settings.png
index 3074d58a680d5fad62fe8458d27e75189546259a..27da784a8eb5802b10bf6909c6b125e792066af7 100644
Binary files a/doc/images/qtcreator-editor-settings.png and b/doc/images/qtcreator-editor-settings.png differ
diff --git a/doc/images/qtcreator-gs-build-example-open.png b/doc/images/qtcreator-gs-build-example-open.png
index 1ebdc4d6c7f69367c92f29e24681fafaf81270b4..27fce0197b0e20d96c7adb57dd8e5e0d561e28a8 100644
Binary files a/doc/images/qtcreator-gs-build-example-open.png and b/doc/images/qtcreator-gs-build-example-open.png differ
diff --git a/doc/images/qtcreator-locator-customize.png b/doc/images/qtcreator-locator-customize.png
index 2239070d72967300aa7eefe82a14bbf92bc6e209..d5dde2b313ebb575498a6805a99f70aba526683e 100644
Binary files a/doc/images/qtcreator-locator-customize.png and b/doc/images/qtcreator-locator-customize.png differ
diff --git a/doc/images/qtcreator-locator-open.png b/doc/images/qtcreator-locator-open.png
index 451580afcf1cdc2327ed9ec3905a32884a92331c..9f2255baaae9f3b58a20a35e1cfef58bea12f243 100644
Binary files a/doc/images/qtcreator-locator-open.png and b/doc/images/qtcreator-locator-open.png differ
diff --git a/doc/images/qtcreator-locator.png b/doc/images/qtcreator-locator.png
index 5b5e2dae00545b4c74ab84a5846c324beadf3ff2..f0f23c525dd45270ac95772e5055824bb06e25f4 100644
Binary files a/doc/images/qtcreator-locator.png and b/doc/images/qtcreator-locator.png differ
diff --git a/doc/images/qtcreator-navigate-customfilter.png b/doc/images/qtcreator-navigate-customfilter.png
index 6ccb2a79da480f90e46ca8ded42869e28c742788..2d8c30e15152561609b2257ec32f9cf6eae52556 100644
Binary files a/doc/images/qtcreator-navigate-customfilter.png and b/doc/images/qtcreator-navigate-customfilter.png differ
diff --git a/doc/images/qtcreator-navigate-popup.png b/doc/images/qtcreator-navigate-popup.png
index 175b0a41b46ca9a2048112f8e19f80a6b2d1aed5..6ba97e88c8c288526e3e38d016017a45e7575ce9 100644
Binary files a/doc/images/qtcreator-navigate-popup.png and b/doc/images/qtcreator-navigate-popup.png differ
diff --git a/doc/images/qtcreator-new-mobile-project.png b/doc/images/qtcreator-new-mobile-project.png
index adc657cd9e706f1ae49c3351af9e3e1f0151bb70..b47951da16252abe6d43dede9d18b3c13ba64d68 100644
Binary files a/doc/images/qtcreator-new-mobile-project.png and b/doc/images/qtcreator-new-mobile-project.png differ
diff --git a/doc/images/qtcreator-new-project.png b/doc/images/qtcreator-new-project.png
index 54c74efac0e920016552aa17c0bd8c538e9e8262..fed25bfdbd0f1be80123b9d25a40cf94b1dad8f0 100644
Binary files a/doc/images/qtcreator-new-project.png and b/doc/images/qtcreator-new-project.png differ
diff --git a/doc/images/qtcreator-projectpane.png b/doc/images/qtcreator-projectpane.png
index 5a6322b7099b62effc22f2752172e72fd2bfc66a..7a01673fcf06238384749b3a3bcc7fc36bb9f4ee 100644
Binary files a/doc/images/qtcreator-projectpane.png and b/doc/images/qtcreator-projectpane.png differ
diff --git a/doc/images/qtcreator-qt4-qtversions-win-mingw.png b/doc/images/qtcreator-qt4-qtversions-win-mingw.png
index c210a8ef4cd337c664cb46a35a311fea4fa80653..61ed8589756967fe27627802266b3a75b1a0e7ae 100644
Binary files a/doc/images/qtcreator-qt4-qtversions-win-mingw.png and b/doc/images/qtcreator-qt4-qtversions-win-mingw.png differ
diff --git a/doc/images/qtcreator-qt4-qtversions-win-msvc.png b/doc/images/qtcreator-qt4-qtversions-win-msvc.png
index 86811a3fa552c718bc24476a92022264e471cd1c..090247c503ea60e2e4e9e1b87a8917e6da028107 100644
Binary files a/doc/images/qtcreator-qt4-qtversions-win-msvc.png and b/doc/images/qtcreator-qt4-qtversions-win-msvc.png differ
diff --git a/doc/images/qtcreator-qt4-qtversions-win-symbian.png b/doc/images/qtcreator-qt4-qtversions-win-symbian.png
index 455179365d600e161354a5f7f06a3974713d54b2..eaf9beaaa0060b34d69db6b3db8424375f6bd35e 100644
Binary files a/doc/images/qtcreator-qt4-qtversions-win-symbian.png and b/doc/images/qtcreator-qt4-qtversions-win-symbian.png differ
diff --git a/doc/images/qtcreator-qt4-s60sdks.png b/doc/images/qtcreator-qt4-s60sdks.png
index cefbcffc92a50dea20759abce7703c5481f36956..71256929c23ddb86f12dd9b73ac040df7d12102e 100644
Binary files a/doc/images/qtcreator-qt4-s60sdks.png and b/doc/images/qtcreator-qt4-s60sdks.png differ
diff --git a/doc/images/qtcreator-session-manager.png b/doc/images/qtcreator-session-manager.png
index 786239c183b8afaa814e2c09393d299679f739ea..d20c531936e3783eb61d54286c00809f675b1187 100644
Binary files a/doc/images/qtcreator-session-manager.png and b/doc/images/qtcreator-session-manager.png differ
diff --git a/doc/images/qtcreator-togglebookmark.png b/doc/images/qtcreator-togglebookmark.png
index 57c78815a4437c2e81c681192176045ffb230455..7d946b7122f267dc1d9c2b05035fe47272bc52ef 100644
Binary files a/doc/images/qtcreator-togglebookmark.png and b/doc/images/qtcreator-togglebookmark.png differ
diff --git a/doc/images/qtcreator-welcome-session.png b/doc/images/qtcreator-welcome-session.png
index 9e1acbba3673617d52463eef324a4c9de026df66..0c0f5036ff0ef1adb12170d66a4466455d13c330 100644
Binary files a/doc/images/qtcreator-welcome-session.png and b/doc/images/qtcreator-welcome-session.png differ
diff --git a/doc/qt-defines.qdocconf b/doc/qt-defines.qdocconf
index 1470f19c95d40c189456116cdedec03a6d71d6f8..f3239272c78f9eea6d32c7aed00c004330708070 100644
--- a/doc/qt-defines.qdocconf
+++ b/doc/qt-defines.qdocconf
@@ -65,7 +65,8 @@ styledirs               = $SRCDIR/templates/style
 scripts.HTML		= functions.js \
 			  jquery.js
 
-styles.HTML		= style.css \
-			  style_ie6.css \
-			  style_ie7.css \
-			  style_ie8.css
+styles.HTML		= OfflineStyle.css \
+			style.css \
+			style_ie6.css \
+			style_ie7.css \
+			style_ie8.css
diff --git a/doc/templates/scripts/functions.js b/doc/templates/scripts/functions.js
index 013542764d2b8c5d5fd6a949858c14e9e488a2e8..58a02485910795af2fc1d6ac2c141d7a298b3aec 100644
--- a/doc/templates/scripts/functions.js
+++ b/doc/templates/scripts/functions.js
@@ -1,10 +1,8 @@
-
 /* START non link areas where cursor should change to pointing hand */
 $('.t_button').mouseover(function() {
     $('.t_button').css('cursor','pointer');
 		/*document.getElementById(this.id).style.cursor='pointer';*/
 });
-
 /* END non link areas  */
 $('#smallA').click(function() {
 		$('.content .heading,.content h1, .content h2, .content h3, .content p, .content li, .content table').css('font-size','smaller');
@@ -20,6 +18,7 @@ $('#medA').click(function() {
 		$('.content p').css('font','13px/20px Verdana');
 		$('.content li').css('font','400 13px/1 Verdana');
 		$('.content li').css('line-height','14px');
+		$('.content .toc li').css('font', 'normal 10px/1.2 Verdana');
 		$('.content table').css('font','13px/1.2 Verdana');
 		$('.content .heading').css('font','600 16px/1 Arial');
 		$('.content .indexboxcont li').css('font','600 13px/1 Verdana');
@@ -34,27 +33,160 @@ $('#bigA').click(function() {
 		$(this).addClass('active')
 });
 
-function doSearch(str){
-
-if (str.length>3)
-  {
-  alert('start search');
- // document.getElementById("refWrapper").innerHTML="";
-  return;
-  }
- else
-  return;
-    
-//    var url="indexSearch.php";
-//    url=url+"?q="+str;
- //   url=url+"&sid="+Math.random();
-   // var url="http://localhost:8983/solr/select?";
-   // url=url+"&q="+str;
-   // url=url+"&fq=&start=0&rows=10&fl=&qt=&wt=&explainOther=&hl.fl=";
-    
-  //  $.get(url, function(data){ 
-   // alert(data);
-  // document.getElementById("refWrapper").innerHTML=data; 
- //});
-   
-}
\ No newline at end of file
+$('.feedclose').click(function() {
+	$('.bd').show();
+	$('.hd').show();
+	$('.footer').show();
+	$('#feedbackBox').hide();
+	$('#blurpage').hide();
+});
+
+$('.feedback').click(function() {
+	$('.bd').hide();
+	$('.hd').hide();
+	$('.footer').hide();
+	$('#feedbackBox').show();
+	$('#blurpage').show();
+});
+var lookupCount = 0;
+var articleCount = 0;
+var exampleCount = 0;
+var qturl = ""; // change from "http://doc.qt.nokia.com/4.6/" to 0 so we can have relative links
+
+function processNokiaData(response){
+	var propertyTags = response.getElementsByTagName('page');
+	
+ 	for (var i=0; i< propertyTags.length; i++) {
+		var linkStart   = "<li class=\"liveResult\"><a href='"+qturl+"";
+		var linkEnd  = "</a></li>";
+		
+		if(propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'APIPage'){
+			lookupCount++;
+
+			
+			for (var j=0; j< propertyTags[i].getElementsByTagName('pageWords').length; j++){
+				full_li_element = linkStart + propertyTags[i].getElementsByTagName('pageUrl')[j].firstChild.nodeValue;
+				full_li_element = full_li_element + "'>" + propertyTags[i].getElementsByTagName('pageTitle')[0].firstChild.nodeValue + linkEnd;
+					
+				$('#ul001').append(full_li_element);
+			$('#ul001 .defaultLink').css('display','none');
+
+		   		}
+			}
+	 
+		if(propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Article'){
+			articleCount++;
+
+				 
+			for (var j=0; j< propertyTags[i].getElementsByTagName('pageWords').length; j++){
+			    full_li_element = linkStart + propertyTags[i].getElementsByTagName('pageUrl')[j].firstChild.nodeValue;
+				full_li_element =full_li_element + "'>" + propertyTags[i].getElementsByTagName('pageTitle')[0].firstChild.nodeValue + linkEnd ;
+					
+				$('#ul002').append(full_li_element);
+			$('#ul002 .defaultLink').css('display','none');
+
+	   		}
+		}
+		if(propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Example'){
+			exampleCount++;
+
+
+			for (var j=0; j< propertyTags[i].getElementsByTagName('pageWords').length; j++){
+			    full_li_element = linkStart + propertyTags[i].getElementsByTagName('pageUrl')[j].firstChild.nodeValue;
+				full_li_element =full_li_element + "'>" + propertyTags[i].getElementsByTagName('pageTitle')[0].firstChild.nodeValue + linkEnd ;
+					
+				$('#ul003').append(full_li_element);
+			$('#ul003 .defaultLink').css('display','none');
+
+	   		}
+		} 
+		if(i==propertyTags.length){$('#pageType').removeClass('loading');}
+
+	}	
+	 
+	if(lookupCount == 0){$('#ul001').prepend('<li class=\"liveResult noMatch\">Found no result</li>');$('#ul001 li').css('display','block');$('.sidebar .search form input').removeClass('loading');}
+    if(articleCount == 0){$('#ul002').prepend('<li class=\"liveResult noMatch\">Found no result</li>');$('#ul002 li').css('display','block');}
+	if(exampleCount == 0){$('#ul003').prepend('<li class=\"liveResult noMatch\">Found no result</li>');$('#ul003 li').css('display','block');}
+	// reset count variables;
+	 lookupCount=0;
+	 articleCount = 0;
+     exampleCount = 0;
+	
+}
+//build regular expression object to find empty string or any number of blank
+var blankRE=/^\s*$/;
+function CheckEmptyAndLoadList()
+{
+	var pageUrl = window.location.href;
+	var pageVal = $('title').html();
+	$('#feedUrl').remove();
+	$('#pageVal').remove();
+	$('#feedform').append('<input id="feedUrl" name="feedUrl" value="'+pageUrl+'" style="display:none;">');
+	$('#feedform').append('<input id="pageVal" name="pageVal" value="'+pageVal+'" style="display:none;">');
+	$('.liveResult').remove();
+    $('.defaultLink').css('display','block');
+	var value = document.getElementById('pageType').value; 
+	if((blankRE.test(value)) || (value.length < 3))
+	{
+	//empty inputbox
+		// load default li elements into the ul if empty
+	//	loadAllList(); // replaced
+	 $('.defaultLink').css('display','block');
+	// $('.liveResult').css('display','none');
+	}else{
+	 $('.defaultLink').css('display','none');
+	}
+}
+/*
+$(window).resize(function(){
+if($(window).width()<400)
+	$('body').addClass('offline');
+else
+	$('body').removeClass('offline');
+	});
+	*/
+// Loads on doc ready
+	$(document).ready(function () {
+	//alert(pageUrl);
+	//$('#pageUrl').attr('foo',pageUrl);
+	var pageTitle = $('title').html();
+          var currentString = $('#pageType').val() ;
+		  if(currentString.length < 1){
+			$('.defaultLink').css('display','block');
+      	   		CheckEmptyAndLoadList();			
+		  }
+
+        $('#pageType').keyup(function () {
+          var searchString = $('#pageType').val() ;
+          if ((searchString == null) || (searchString.length < 3)) {
+				$('#pageType').removeClass('loading');
+				 $('.liveResult').remove(); // replaces removeResults();
+      	   		CheckEmptyAndLoadList();
+				$('.report').remove();
+				// debug$('.content').prepend('<li>too short or blank</li>'); // debug
+				return;
+		   }
+            if (this.timer) clearTimeout(this.timer);
+            this.timer = setTimeout(function () {
+				$('#pageType').addClass('loading');
+				// debug$('.content').prepend('<li>new search started </li>');// debug
+				// debug$('.content').prepend('<p class=\"report\">Search string ' +searchString +'</p>'); // debug
+
+               $.ajax({
+                contentType: "application/x-www-form-urlencoded",
+                url: 'http://' + location.host + '/nokiasearch/GetDataServlet',
+                data: 'searchString='+searchString,
+                dataType:'xml',
+				type: 'post',	 
+                success: function (response, textStatus) {
+
+				$('.liveResult').remove(); // replaces removeResults();
+								$('#pageType').removeClass('loading');
+
+                processNokiaData(response);
+
+ }     
+              });
+            }, 500);
+        });
+      }); 
diff --git a/doc/templates/scripts/narrow.js b/doc/templates/scripts/narrow.js
new file mode 100644
index 0000000000000000000000000000000000000000..12d0ce89d566ae1d2418f5859c31a2d84f974dc3
--- /dev/null
+++ b/doc/templates/scripts/narrow.js
@@ -0,0 +1,78 @@
+var narrowInit = function() {
+  /* TODO:
+  Could probably be more efficient, not hardcoding each element to be created
+  */
+  // 1: Create search form
+  var narrowSearch = $('<div id="narrowsearch"></div>');
+  var searchform = $("#qtdocsearch");
+  narrowSearch.append(searchform);
+  $("#qtdocheader .content .qtref").after(narrowSearch);
+
+  // 2: Create dropdowns
+  var narrowmenu = $('<ul id="narrowmenu" class="sf-menu"></ul>');
+
+  // Lookup
+  var lookuptext = $("#lookup h2").attr("title");
+  $("#lookup ul").removeAttr("id");
+  $("#lookup ul li").removeAttr("class");
+  $("#lookup ul li").removeAttr("style");
+  var lookupul = $("#lookup ul");
+  var lookuplist = $('<li></li>');
+  var lookuplink = $('<a href="#"></a>');
+  lookuplink.append(lookuptext);
+  lookuplist.append(lookuplink);
+  lookuplist.append(lookupul);
+  narrowmenu.append(lookuplist);
+
+  // Topics
+  var topicstext = $("#topics h2").attr("title");
+  $("#topics ul").removeAttr("id");
+  $("#topics ul li").removeAttr("class");
+  $("#topics ul li").removeAttr("style");
+  var topicsul = $("#topics ul");
+  var topicslist = $('<li></li>');
+  var topicslink = $('<a href="#"></a>');
+  topicslink.append(topicstext);
+  topicslist.append(topicslink);
+  topicslist.append(topicsul);
+  narrowmenu.append(topicslist);
+
+  // Examples
+  var examplestext = $("#examples h2").attr("title");
+  $("#examples ul").removeAttr("id");
+  $("#examples ul li").removeAttr("class");
+  $("#examples ul li").removeAttr("style");
+  var examplesul = $("#examples ul");
+  var exampleslist = $('<li></li>');
+  var exampleslink = $('<a href="#"></a>');
+  exampleslink.append(examplestext);
+  exampleslist.append(exampleslink);
+  exampleslist.append(examplesul);
+  narrowmenu.append(exampleslist);
+
+  $("#shortCut").after(narrowmenu);
+  $('ul#narrowmenu').superfish({
+    delay: 100,
+    autoArrows: false,
+    disableHI: true
+  });
+}
+
+$(document).ready(function(){
+  if ($('body').hasClass('narrow')) {
+    narrowInit();
+  }
+});
+
+$(window).bind('resize', function () {
+  if($(window).width()<600) {
+    $('body').addClass('narrow');
+
+    if ($("#narrowsearch").length == 0) {
+      narrowInit();
+    }
+  }
+  else {
+    $('body').removeClass('narrow');
+  }
+});
\ No newline at end of file
diff --git a/doc/templates/scripts/superfish.js b/doc/templates/scripts/superfish.js
new file mode 100644
index 0000000000000000000000000000000000000000..c6a9c7de0459ad3bec593e697175d60fa5b74228
--- /dev/null
+++ b/doc/templates/scripts/superfish.js
@@ -0,0 +1,121 @@
+
+/*
+ * Superfish v1.4.8 - jQuery menu widget
+ * Copyright (c) 2008 Joel Birch
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * 	http://www.opensource.org/licenses/mit-license.php
+ * 	http://www.gnu.org/licenses/gpl.html
+ *
+ * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
+ */
+
+;(function($){
+	$.fn.superfish = function(op){
+
+		var sf = $.fn.superfish,
+			c = sf.c,
+			$arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
+			over = function(){
+				var $$ = $(this), menu = getMenu($$);
+				clearTimeout(menu.sfTimer);
+				$$.showSuperfishUl().siblings().hideSuperfishUl();
+			},
+			out = function(){
+				var $$ = $(this), menu = getMenu($$), o = sf.op;
+				clearTimeout(menu.sfTimer);
+				menu.sfTimer=setTimeout(function(){
+					o.retainPath=($.inArray($$[0],o.$path)>-1);
+					$$.hideSuperfishUl();
+					if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
+				},o.delay);	
+			},
+			getMenu = function($menu){
+				var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
+				sf.op = sf.o[menu.serial];
+				return menu;
+			},
+			addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
+			
+		return this.each(function() {
+			var s = this.serial = sf.o.length;
+			var o = $.extend({},sf.defaults,op);
+			o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
+				$(this).addClass([o.hoverClass,c.bcClass].join(' '))
+					.filter('li:has(ul)').removeClass(o.pathClass);
+			});
+			sf.o[s] = sf.op = o;
+			
+			$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
+				if (o.autoArrows) addArrow( $('>a:first-child',this) );
+			})
+			.not('.'+c.bcClass)
+				.hideSuperfishUl();
+			
+			var $a = $('a',this);
+			$a.each(function(i){
+				var $li = $a.eq(i).parents('li');
+				$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
+			});
+			o.onInit.call(this);
+			
+		}).each(function() {
+			var menuClasses = [c.menuClass];
+			if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
+			$(this).addClass(menuClasses.join(' '));
+		});
+	};
+
+	var sf = $.fn.superfish;
+	sf.o = [];
+	sf.op = {};
+	sf.IE7fix = function(){
+		var o = sf.op;
+		if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
+			this.toggleClass(sf.c.shadowClass+'-off');
+		};
+	sf.c = {
+		bcClass     : 'sf-breadcrumb',
+		menuClass   : 'sf-js-enabled',
+		anchorClass : 'sf-with-ul',
+		arrowClass  : 'sf-sub-indicator',
+		shadowClass : 'sf-shadow'
+	};
+	sf.defaults = {
+		hoverClass	: 'sfHover',
+		pathClass	: 'overideThisToUse',
+		pathLevels	: 1,
+		delay		: 800,
+		animation	: {opacity:'show'},
+		speed		: 'normal',
+		autoArrows	: true,
+		dropShadows : true,
+		disableHI	: false,		// true disables hoverIntent detection
+		onInit		: function(){}, // callback functions
+		onBeforeShow: function(){},
+		onShow		: function(){},
+		onHide		: function(){}
+	};
+	$.fn.extend({
+		hideSuperfishUl : function(){
+			var o = sf.op,
+				not = (o.retainPath===true) ? o.$path : '';
+			o.retainPath = false;
+			var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
+					.find('>ul').hide().css('visibility','hidden');
+			o.onHide.call($ul);
+			return this;
+		},
+		showSuperfishUl : function(){
+			var o = sf.op,
+				sh = sf.c.shadowClass+'-off',
+				$ul = this.addClass(o.hoverClass)
+					.find('>ul:hidden').css('visibility','visible');
+			sf.IE7fix.call($ul);
+			o.onBeforeShow.call($ul);
+			$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
+			return this;
+		}
+	});
+
+})(jQuery);
diff --git a/doc/templates/style/OfflineStyle.css b/doc/templates/style/OfflineStyle.css
new file mode 100644
index 0000000000000000000000000000000000000000..51ea3541b1e889dbead077e3cd43bddf66a3f028
--- /dev/null
+++ b/doc/templates/style/OfflineStyle.css
@@ -0,0 +1,836 @@
+@media screen
+{
+    html
+    {
+        color: #000000;
+        background: #FFFFFF;
+    }
+    body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td
+    {
+        margin: 0;
+        padding: 0;
+    }
+    table
+    {
+        border-collapse: collapse;
+        border-spacing: 0;
+    }
+    fieldset, img
+    {
+        border: 0;
+    }
+    address, caption, cite, code, dfn, em, strong, th, var, optgroup
+    {
+        font-style: inherit;
+        font-weight: inherit;
+    }
+    del, ins
+    {
+        text-decoration: none;
+    }
+    li
+    {
+        list-style: none;
+    }
+    caption, th
+    {
+        text-align: left;
+    }
+    h1, h2, h3, h4, h5, h6
+    {
+        font-size: 100%;
+    }
+    q:before, q:after
+    {
+        content: '';
+    }
+    abbr, acronym
+    {
+        border: 0;
+        font-variant: normal;
+    }
+    sup
+    {
+        vertical-align: baseline;
+    }
+    sub
+    {
+        vertical-align: baseline;
+    }
+	tt, .qmlreadonly span, .qmldefault span
+	{
+		word-spacing:5px;
+	}
+    .heading
+    {
+        font: normal 600 16px/1.0 Arial;
+    }
+    .subtitle
+    {
+        font-size: 13px;
+    }
+    .small-subtitle
+    {
+        font-size: 13px;
+    }
+    legend
+    {
+        color: #000000;
+    }
+    input, button, textarea, select, optgroup, option
+    {
+        font-family: inherit;
+        font-size: inherit;
+        font-style: inherit;
+        font-weight: inherit;
+    }
+    input, button, textarea, select
+    {
+        font-size: 100%;
+    }
+    body
+    {
+        font: normal 13px/1.2 Verdana;
+        color: #363534;
+    }
+    strong
+    {
+        font-weight: bold;
+    }
+    em
+    {
+        font-style: italic;
+    }
+    a
+    {
+        color: #00732f;
+        text-decoration: none;
+    }
+    .header, .footer, .wrapper
+    {
+        /*min-width: 600px;*/
+        max-width: 1500px;
+        margin: 0 5px;
+    }
+    .wrapper
+    {
+	position:relative;
+	top:50px;
+    }
+    .wrapper .bd
+    {
+        position: relative;
+    }
+
+    .header, .footer
+    {
+        display: block;
+        clear: both;
+        overflow: hidden;
+    }
+    .header
+    {
+        height: 115px;
+        position: relative;
+    }
+    
+    
+    .header .qtref
+    {
+        position: absolute;
+        top: 28px;
+        left: 88px;
+        width: 302px;
+        height: 22px;
+    }
+    .header .qtref span
+    {
+        display: block;
+        height: 22px;
+    }
+    .wrap .content h1
+    {
+        font: 600 18px/1.2 Arial;
+    }
+    .wrap .content h2
+    {
+        font: 600 16px/1.2 Arial;
+    }
+    .wrap .content h3
+    {
+        font: 600 14px/1.2 Arial;
+    }
+    .wrap .content h4
+    {
+        font: 600 12px/1.2 Arial;
+    }
+	
+    .wrap .content p
+    {
+        line-height: 20px;
+        padding: 5px;
+    }
+    .wrap .content table p
+    {
+        line-height: 20px;
+        padding: 0px;
+    }	
+    .wrap .content ul
+    {
+        padding-left: 25px;
+        padding-top: 10px;
+    }
+    a:hover
+    {
+        color: #4c0033;
+        text-decoration: underline;
+    }
+    .content a:visited
+    {
+        color: #4c0033;
+        text-decoration: none;
+    }
+     .content a:visited:hover
+    {
+        color: #4c0033;
+        text-decoration: underline;
+    }   
+
+    pre
+    {
+        border: 1px solid #DDDDDD;
+        margin: 0 20px 10px 10px;
+        padding: 20px 15px 20px 20px;
+        overflow-x: auto;
+    }
+    table, pre
+    {
+        -moz-border-radius: 7px 7px 7px 7px;
+        background-color: #F6F6F6;
+        border: 1px solid #E6E6E6;
+        border-collapse: separate;
+        font-size: 11px;
+        /*min-width: 395px;*/
+        margin-bottom: 25px;
+        display: inline-block;
+    }
+    thead
+    {
+        margin-top: 5px;
+		font:600 12px/1.2 Arial;
+    }
+    th
+    {
+        padding: 5px 15px 5px 15px;
+        background-color: #E1E1E1;
+      /*  border-bottom: 1px solid #E6E6E6;*/
+        border-left: 1px solid #E6E6E6;
+      /*  border-right: 1px solid #E6E6E6;*/
+    }
+    td
+    {
+        padding: 3px 15px 3px 20px;
+  /*      border-left: 1px solid #E6E6E6;
+        border-right: 1px solid #E6E6E6;*/
+    }
+    tr.odd td:hover,  tr.even td:hover
+    {
+    /*    border-right: 1px solid #C3C3C3;
+        border-left: 1px solid #C3C3C3;*/
+    }
+		
+	td.rightAlign
+	{
+        padding: 3px 15px 3px 10px;
+	}
+    table tr.odd
+    {
+        border-left: 1px solid #E6E6E6;
+        background-color: #F6F6F6;
+        color: #66666E;
+    }
+    table tr.even
+    {
+        border-left: 1px solid #E6E6E6;
+        background-color: #ffffff;
+        color: #66666E;
+    }
+    table tr.odd td:hover, table tr.even td:hover
+    {
+        background-color: #E6E6E6;
+    }
+    		
+    span.comment
+    {
+        color: #8B0000;
+        font-style: italic;
+    }
+    span.string, span.char
+    {
+        color: #254117;
+    }
+
+    .qmltype
+    {
+        text-align: center;
+        font-size: 160%;
+    }
+    .qmlreadonly
+    {
+        float: right;
+        color: #254117;
+    }
+
+    .qmldefault
+    {
+        float: right;
+        color: red;
+    }
+
+	.footer
+    {
+		border-top:1px solid #E5E5E5;
+        min-height: 100px;
+        color: #797775;
+        font: normal 9px/1 Verdana;
+        text-align: center;
+        padding-top: 40px;
+        margin: 0;
+    }
+
+    
+     .wrap
+    {
+        margin: 0 5px 0 5px;
+    }
+    .wrap .toolbar
+    {
+     display:block;
+    }
+
+    .wrap .breadcrumb ul li
+    {
+        float: left;
+        background: url(../images/breadcrumb.png) no-repeat 0 5px;
+        padding-left: 15px;
+        margin-left: 15px;
+        font-weight: bold;
+    }
+    .wrap .breadcrumb ul li.last
+    {
+        font-weight: normal;
+    }
+    .wrap .breadcrumb ul li a
+    {
+      /*  color: #363534;*/
+        color: #00732F;
+    }
+    .wrap .breadcrumb ul li.first
+    {
+        background-image: none;
+        padding-left: 0;
+        margin-left: 0;
+    }
+    .wrap .content
+    {
+		word-wrap:break-word;
+    }
+    .wrap .content li
+    {
+        padding-left: 12px;
+        background: url(../images/bullet_sq.png) no-repeat 0 5px; 
+        font: inherit; 
+       /* color: #44a51c;*/ 
+        margin-bottom: 10px;
+    } 
+
+    .wrap .content ol li { 
+        background:none; 
+        font: inherit; 
+        margin-bottom:10px; 
+        padding-left: 0px;
+    } 
+
+    .wrap .content ol li { 
+    	list-style-type:decimal; 
+    }
+
+    .wrap .content .descr ol li {
+	margin-left: 45px;
+
+    }
+
+    .offline .wrap .content
+    {
+        padding-top: 15px;
+    }
+
+    .header:after, .footer:after, .breadcrumb:after, .wrap .content:after, .group:after
+    {
+        content: ".";
+        display: block;
+        height: 0;
+        clear: both;
+        visibility: hidden;
+    }
+    
+    hr
+    {
+        background-color: #E6E6E6;
+        border: 1px solid #E6E6E6;
+        height: 1px;
+        width: 100%;
+        text-align: left;
+        margin: 5px 0px 5px 0px;
+    }
+
+    .content .alignedsummary
+    {
+        margin: 5px;
+		width:100%;
+    }
+
+     
+    .toc
+    {
+        float: right;
+        -moz-border-radius: 7px 7px 7px 7px;
+        background-color: #F6F6F6;
+        border: 1px solid #DDDDDD;
+        margin: 0 20px 10px 10px;
+        padding: 20px 15px 20px 20px;
+        height: auto;
+        width: 200px;
+    }
+
+    .toc h3, .generic a
+    {
+        font: 600 12px/1.2 Arial;
+    }
+
+    .wrap .content .toc ul
+    {
+        padding-left: 0px;
+    }
+
+
+    .wrap .content .toc .level2
+    {
+        margin-left: 15px;
+    }
+
+    .wrap .content .toc .level3
+    {
+        margin-left: 30px;
+    }
+
+    .content .toc li
+    {
+        font: normal 10px/1.2 Verdana;
+        background: url(../images/bullet_dn.png) no-repeat 0 5px;
+    }
+	
+	
+	.generic{
+		max-width:75%;
+	}
+	.generic td{
+		padding:0;
+	}
+	
+	.generic .odd .alphaChar{
+        background-color: #F6F6F6;
+	}
+	
+	.generic .even .alphaChar{
+        background-color: #FFFFFF;
+	}
+
+	.highlightedCode
+	{
+	margin:10px;
+	}
+
+	.flowList{
+	vertical-align:top;
+	}	
+	.alphaChar{
+	width:100%;
+	background-color:#F6F6F6;
+	border:1px solid #E6E6E6;
+	font-size:12pt;
+	padding-left:10px;
+	margin-top:10px;
+	margin-bottom:10px;
+	}
+
+	.flowList dl{
+	}
+	.flowList dd{
+	display:inline-block;
+	margin-left:10px;
+	width:250px;
+	}
+	.wrap .content .flowList p{
+	padding:0px;
+	}
+	
+    .relpage
+    {
+        -moz-border-radius: 7px 7px 7px 7px;
+        border: 1px solid #DDDDDD;
+        padding: 25px 25px;
+        clear: both;
+    }
+    .relpage ul
+    {
+        float: none;
+        padding: 15px;
+    }
+    .content .relpage li
+    {
+        font: normal 11px/1.2 Verdana;
+    }
+    h3.fn, span.fn
+    {
+        background-color: #F6F6F6;
+        border-width: 1px;
+        border-style: solid;
+        border-color: #E6E6E6;
+        font-weight: bold;
+		word-spacing:3px;
+    }
+
+	.functionIndex {
+	font-size:12pt;
+	word-spacing:10px;
+	margin-bottom:10px;
+    background-color: #F6F6F6;
+    border-width: 1px;
+    border-style: solid;
+    border-color: #E6E6E6;
+	width:100%;
+	}
+	
+	.centerAlign {	text-align:center;}
+	.rightAlign {text-align:right;}
+	.leftAlign {text-align:left;}
+	.topAlign{vertical-align:top	}
+	.functionIndex a{display:inline-block;}
+
+    /* start index box */
+    .indexbox
+    {
+        width: 100%;
+		display:inline-block;
+    }
+
+    .indexboxcont { display: block; }
+
+    .indexboxbar
+    {
+		border-bottom:1px solid #E5E5E5;
+        margin-bottom: 25px;
+    }
+
+    .indexboxcont .section
+    {
+        display: inline-block;
+        padding:0 2% 0 1%;
+        vertical-align:top;
+	}
+
+	.indexboxcont .section {
+	  float: left;
+	}
+
+    .indexboxcont .section p
+    {
+        padding-top: 20px;
+        padding-bottom: 20px;
+    }
+    .indexboxcont .sectionlist
+    {
+        display: inline-block;
+		vertical-align:top;
+        padding: 0;
+    }
+    .indexboxcont .sectionlist ul
+    {
+        margin-bottom: 20px;
+    }
+
+    .indexboxcont .sectionlist ul li
+    {
+        line-height: 12px;
+    }
+
+    .content .indexboxcont li
+    {
+        font: normal 600 13px/1 Verdana;
+    }
+
+    .indexbox a:hover, .indexbox a:visited:hover
+    {
+        color: #4c0033;
+        text-decoration: underline;
+    }
+
+    .indexbox a:visited
+    {
+        color: #00732f;
+        text-decoration: none;
+    }
+	
+	.indexbox .indexIcon {
+	width: 11%;
+	}
+	
+   
+    .indexboxcont:after
+    {
+        content: ".";
+        display: block;
+        height: 0;
+        clear: both;
+        visibility: hidden;
+    }
+	
+    body.offline
+    {
+      background-image: none;
+    }
+
+    .offline .footer {
+      margin: 0;
+    }
+    .offline .header
+    {
+      width: 100%;
+      margin: 0;
+      height: auto;
+      background-color: #ffffff;
+      padding: 10px 0 5px 0;
+      overflow: visible;
+	  border-bottom: solid #E5E5E5 1px;
+	  z-index:1;
+	  position:fixed;
+    }
+
+    .offline .header .content
+    {
+    }
+    .offline .header .qtref
+    {
+      color: #00732F;
+      position: static;
+      float: left;
+      margin-left: 5px;
+      font: bold 18px/1 Arial;
+    }
+
+    .offline .header .qtref:visited
+    {
+      color: #00732F;
+	  }
+    .offline .header .qtref:hover
+    {
+      color: #00732F;
+	  text-decoration:none;
+	  }
+    .offline .header .qtref span
+    {
+      background-image: none;
+      text-indent: 0;
+	  text-decoration:none;
+    }
+
+    .offline .wrap
+    {
+        margin: 0 5px 0 5px;
+    }
+
+    .offline .wrap .toolbar
+    {
+      display:block;
+	  padding-top:5px;
+    }
+
+    .offline .wrap .breadcrumb ul li {
+      font-weight: normal;
+    }
+
+    .offline .wrap .breadcrumb ul li a {
+      /*color: #44a51c;*/
+    }
+
+    .offline .wrap .breadcrumb ul li.last a {
+      /*color: #363534;*/
+    }
+    
+
+    
+    .narrow .indexboxcont .section {
+      width: 64%;
+      padding-left: 0;
+    }
+    
+    .narrow .indexboxcont .sectionlist {
+      width: 32.5%;
+    }
+
+    .header .icon,
+	.sidebar,
+	.feedback,
+	.t_button,
+    .feedback,
+	#feedbackBox,
+	#feedback,
+	#blurpage,
+	.indexbox .indexIcon span,
+	.wrapper .hd,
+	.offline .indexbox .indexIcon,
+	.offline .header #nav-logo,
+	#offlinemenu,
+	#offlinesearch,
+	.offline .header #nav-topright,
+    .offline .header #shortCut ,
+	.offline .wrapper .hd,
+    .offline .wrapper .ft,
+	.offline .sidebar,
+	.offline .wrap .feedback
+    {
+	display:none;
+    }
+
+    /* end offline mode */
+#narrowmenu {
+      display: none;
+      float: right;
+      margin: 15px 40px 0 0;
+      font-size: 11px;
+    }
+
+    .narrow #narrowmenu {
+      display: block;
+    }
+	
+	#narrowsearch{
+		display:none;
+	}
+
+	#narrowmenu ul
+	{
+	  border-bottom:solid 1px #E5E5E5;
+	  border-left:solid 1px #E5E5E5;
+	  border-right:solid 1px #E5E5E5;
+	}
+
+    #narrowmenu a {
+      line-height: 1.1;
+      background: url(../images/arrow_down.png) no-repeat 100% 50%;
+      white-space: nowrap;
+      padding: 0 16px 0 5px;
+    }
+
+    #narrowmenu li {
+      margin-left: 20px;
+    }
+
+    #narrowmenu li li {
+      margin: 0 0 5px 0;
+    }
+
+    #narrowmenu li li a {
+      padding: 0;
+      background-image: none;
+    }
+
+    #narrowmenu li,
+    #narrowmenu li ul {
+      background-color: #fff;
+    }
+
+    #narrowmenu li ul {
+      width: auto;
+      padding: 5px;
+      margin-top:-15px;
+   }
+
+    .sf-menu li:hover ul, .sf-menu li.sfHover ul {
+      top: 1.2em;
+    }
+.sf-menu, .sf-menu * {
+	margin:			0;
+	padding:		0;
+	list-style:		none;
+}
+.sf-menu {
+	line-height:	1.0;
+}
+.sf-menu ul {
+	position:		absolute;
+	top:			-999em;
+	width:			10em; /* left offset of submenus need to match (see below) */
+}
+.sf-menu ul li {
+	width:			100%;
+}
+.sf-menu li:hover {
+	visibility:		inherit; /* fixes IE7 'sticky bug' */
+}
+.sf-menu li {
+	float:			left;
+	position:		relative;
+}
+.sf-menu a {
+	display:		block;
+	position:		relative;
+}
+.sf-menu li:hover ul,
+.sf-menu li.sfHover ul {
+	left:			0;
+	top:			2.5em; /* match top ul list item height */
+	z-index:		99;
+}
+ul.sf-menu li:hover li ul,
+ul.sf-menu li.sfHover li ul {
+	top:			-999em;
+}
+ul.sf-menu li li:hover ul,
+ul.sf-menu li li.sfHover ul {
+	left:			10em; /* match ul width */
+	top:			0;
+}
+ul.sf-menu li li:hover li ul,
+ul.sf-menu li li.sfHover li ul {
+	top:			-999em;
+}
+ul.sf-menu li li li:hover ul,
+ul.sf-menu li li li.sfHover ul {
+	left:			10em; /* match ul width */
+	top:			0;
+}
+
+}
+/* end of screen media */
+
+/* start of print media */
+
+@media print
+{
+     input, textarea, .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft
+    {
+        display: none;
+        background: none;
+    }
+    .content
+    {
+        position: absolute;
+        top: 0px;
+        left: 0px;
+        background: none;
+        display: block;
+    }
+}
+/* end of print media */
diff --git a/doc/templates/style/narrow.css b/doc/templates/style/narrow.css
new file mode 100644
index 0000000000000000000000000000000000000000..05159aa568db9471e8b07a42cbbe96f7e50d97f8
--- /dev/null
+++ b/doc/templates/style/narrow.css
@@ -0,0 +1,250 @@
+    /* start narrow mode */
+
+    body.narrow
+    {
+      background-image: none;
+    }
+
+    .narrow a {
+      color: #44a51c;
+    }
+
+    .narrow .header, .narrow .header .content, .narrow .footer, .narrow .wrapper {
+      margin: 0 7px;
+      min-width: 300px;
+    }
+
+    .narrow .footer {
+      margin: 0;
+    }
+    .narrow .header
+    {
+      width: 100%;
+      margin: 0;
+      height: auto;
+      background: #fff url(../images/header_bg.png) repeat-x 0 100%;
+      padding: 10px 0 5px 0;
+      overflow: visible;
+    }
+
+    .narrow .header .content
+    {
+    }
+
+    .narrow .header #nav-logo
+    {
+      display: none;
+    }
+
+    .narrow .header .qtref
+    {
+      width: auto;
+      height: auto;
+      color: #363534;
+      position: static;
+      float: left;
+      margin-left: 25px;
+      font: bold 18px/1 Arial;
+    }
+
+    .narrow .header .qtref a
+    {
+      color: #363534;
+    }
+
+    .narrow .header .qtref span
+    {
+      background-image: none;
+      text-indent: 0;
+    }
+
+    .narrow .header #nav-topright
+    {
+      display: none;
+    }
+
+    .narrow .header #shortCut
+    {
+      clear: both;
+      font-weight: normal;
+      position: static;
+      float: left;
+      margin: 15px 0 0 25px;
+      overflow: hidden;
+      padding: 0;
+      height: auto;
+    }
+
+    .narrow .header #shortCut ul
+    {
+      float: none;
+      margin: 0;
+      width: auto;
+      font-size: 11px;
+    }
+
+    .narrow .header #shortCut ul li
+    {
+      background-image: none;
+    }
+
+    .narrow .header #shortCut ul .shortCut-topleft-active,
+    .narrow .header #shortCut ul .shortCut-topleft-inactive
+    {
+      background-image: none;
+      height: auto;
+      padding: 0;
+      width: auto;
+    }
+    .narrow .header #shortCut ul li a
+    {
+      color: #44a51c;
+    }
+
+    .narrow .wrapper .hd
+    {
+        background: url(../images/bg_ul_blank.png) no-repeat 0 0;
+    }
+
+    .narrow .wrapper .bd
+    {
+        background: url(../images/bg_l_blank.png) repeat-y 0 0;
+    }
+
+    .narrow .wrapper .ft
+    {
+        background: url(../images/bg_ll_blank.png) no-repeat 0 0;
+    }
+
+    .narrow .sidebar
+    {
+        display: none;
+    }
+
+    .narrow .wrap
+    {
+        margin: 0 5px 0 5px;
+    }
+
+    .narrow .wrap .toolbar
+    {
+      border-bottom: none;
+    }
+
+    .narrow .wrap .content
+    {
+        padding-top: 15px;
+    }
+
+    .narrow .wrap .feedback
+    {
+        display: none;
+    }
+
+    .narrow .wrap .breadcrumb ul li {
+      font-weight: normal;
+    }
+
+    .narrow .wrap .breadcrumb ul li a {
+      color: #44a51c;
+    }
+
+    .narrow .wrap .breadcrumb ul li.last a {
+      color: #363534;
+    }
+    
+    #narrowsearch {
+      display: none;
+    }
+
+    .narrow #narrowsearch {
+      display: block;
+      float: right;
+      margin-right: 25px;
+      _position: relative;
+    }
+
+    .narrow #narrowsearch fieldset {
+      _position: absolute;
+      _margin-top: -1px;
+    }
+
+    .narrow #narrowsearch {
+      background: url("http://doc.qt.nokia.com/prototype/html/images/sprites-combined.png") no-repeat scroll -6px -348px transparent;
+      height: 21px;
+      padding: 2px 0 0 5px;
+      width: 167px;
+    }
+
+    .narrow #narrowsearch input {
+      border: none;
+      font: 13px/1.2 Verdana;
+      height: 19px;
+      outline: none;
+      padding: 0;
+      width: 158px;
+      *border: 1px solid #fff;
+      *height: 17px;
+      _height: 18px;
+    }
+
+    .narrow .indexbox .indexIcon {
+      display: none;
+    }
+
+    .narrow .indexboxcont .section {
+      width: 64%;
+      padding-left: 0;
+    }
+    
+    .narrow .indexboxcont .sectionlist {
+      width: 32.5%;
+    }
+
+    #narrowmenu {
+      display: none;
+      float: right;
+      margin: 15px 40px 0 0;
+      font-size: 11px;
+    }
+
+    .narrow #narrowmenu {
+      display: block;
+    }
+
+    #narrowmenu a {
+      line-height: 1.1;
+      background: url(../images/arrow_down.png) no-repeat 100% 50%;
+      white-space: nowrap;
+      padding: 0 16px 0 5px;
+    }
+
+    #narrowmenu li {
+      margin-left: 20px;
+    }
+
+    #narrowmenu li li {
+      margin: 0 0 5px 0;
+    }
+
+    #narrowmenu li li a {
+      padding: 0;
+      background-image: none;
+    }
+
+    #narrowmenu li,
+    #narrowmenu li ul {
+      background-color: #fff;
+	  margin-top:-1px;
+    }
+
+    #narrowmenu li ul {
+      width: auto;
+      padding: 5px;
+    }
+
+    .sf-menu li:hover ul, .sf-menu li.sfHover ul {
+      top: 1.2em;
+    }
+
+    /* end narrow mode */
diff --git a/doc/templates/style/style.css b/doc/templates/style/style.css
index 7be80d5f153d4fc9014e55db58b87614c4672973..47fe2e0a04ad2d2e2ef25cfa291aaec056436ef0 100644
--- a/doc/templates/style/style.css
+++ b/doc/templates/style/style.css
@@ -39,7 +39,7 @@
     h1, h2, h3, h4, h5, h6
     {
         font-size: 100%;
-        font-weight: normal;
+/*        font-weight: normal; */
     }
     q:before, q:after
     {
@@ -57,6 +57,23 @@
     sub
     {
         vertical-align: baseline;
+    }
+	tt, .qmlreadonly span, .qmldefault span
+	{
+		word-spacing:5px;
+	}
+    .heading
+    {
+        font: normal 600 16px/1.0 Arial;
+        padding-bottom: 15px;
+    }
+    .subtitle
+    {
+        font-size: 13px;
+    }
+    .small-subtitle
+    {
+        font-size: 13px;
     }
     legend
     {
@@ -73,7 +90,6 @@
     {
         font-size: 100%;
     }
-    /* Page style */
     html
     {
         background-color: #e5e5e5;
@@ -92,11 +108,16 @@
     {
         font-style: italic;
     }
+    a
+    {
+        color: #00732f;
+        text-decoration: none;
+    }
     .header, .footer, .wrapper
     {
         min-width: 600px;
         max-width: 1500px;
-        margin: 0 6px;
+        margin: 0 30px;
     }
     .wrapper
     {
@@ -106,23 +127,19 @@
     {
         padding-left: 216px;
         height: 15px;
-        background: url(../images/bg_ul.png) no-repeat 0 0;
+        background: url(../images/page.png) no-repeat 0 0;
         overflow: hidden;
     }
     .offline .wrapper .hd
     {
-        background: url(../images/bg_ul_blank.png) no-repeat 0 0;
+        background: url(../images/page.png) no-repeat 0 -15px;
     }
     .wrapper .hd span
     {
         height: 15px;
         display: block;
-        background: url(../images/bg_ur.png) no-repeat 100% 0;
         overflow: hidden;
-    }
-    .offline .wrapper .hd span
-    {
-        /*         background: url(../images/bg_ur_blank.png) no-repeat 100% 0; */
+        background: url(../images/page.png) no-repeat 100% -30px;
     }
     .wrapper .bd
     {
@@ -137,18 +154,18 @@
     {
         padding-left: 216px;
         height: 15px;
-        background: url(../images/bg_ll.png) no-repeat 0 0;
+        background: url(../images/page.png) no-repeat 0 -75px;
         overflow: hidden;
     }
     .offline .wrapper .ft
     {
-        background: url(../images/bg_ll_blank.png) no-repeat 0 0;
+        background: url(../images/page.png) no-repeat 0 -90px;
     }
     .wrapper .ft span
     {
         height: 15px;
         display: block;
-        background: url(../images/bg_lr.png) no-repeat 100% 0;
+        background: url(../images/page.png) no-repeat 100% -60px;
         overflow: hidden;
     }
     .header, .footer
@@ -182,186 +199,9 @@
         width: 302px;
         height: 22px;
         text-indent: -999em;
-        background: url(../images/header.png) no-repeat 0 0;
-    }
-    /* header elements */
-    #nav-topright
-    {
-        height: 70px;
-    }
-
-    #nav-topright ul
-    {
-        list-style-type: none;
-        float: right;
-        width: 370px;
-        margin-top: 11px;
-    }
-
-    #nav-topright li
-    {
-        display: inline-block;
-        margin-right: 20px;
-        float: left;
-    }
-
-    #nav-topright li.nav-topright-last
-    {
-        margin-right: 0;
-    }
-
-    #nav-topright li a
-    {
-        background: transparent url(../images/sprites-combined.png) no-repeat;
-        height: 18px;
-        display: block;
-        overflow: hidden;
-        text-indent: -9999px;
-    }
-
-    #nav-topright li.nav-topright-home a
-    {
-        width: 65px;
-        background-position: -2px -91px;
-    }
-
-    #nav-topright li.nav-topright-home a:hover
-    {
-        background-position: -2px -117px;
-    }
-
-
-    #nav-topright li.nav-topright-dev a
-    {
-        width: 30px;
-        background-position: -76px -91px;
-    }
-
-    #nav-topright li.nav-topright-dev a:hover
-    {
-        background-position: -76px -117px;
-    }
-
-
-    #nav-topright li.nav-topright-labs a
-    {
-        width: 40px;
-        background-position: -114px -91px;
-    }
-
-    #nav-topright li.nav-topright-labs a:hover
-    {
-        background-position: -114px -117px;
-    }
-
-    #nav-topright li.nav-topright-doc a
-    {
-        width: 32px;
-        background-position: -162px -91px;
-    }
-
-    #nav-topright li.nav-topright-doc a:hover, #nav-topright li.nav-topright-doc-active a
-    {
-        background-position: -162px -117px;
-    }
-
-    #nav-topright li.nav-topright-blog a
-    {
-        width: 40px;
-        background-position: -203px -91px;
-    }
-
-    #nav-topright li.nav-topright-blog a:hover, #nav-topright li.nav-topright-blog-active a
-    {
-        background-position: -203px -117px;
-    }
-
-    #nav-topright li.nav-topright-shop a
-    {
-        width: 40px;
-        background-position: -252px -91px;
-    }
-
-    #nav-topright li.nav-topright-shop a:hover, #nav-topright li.nav-topright-shop-active a
-    {
-        background-position: -252px -117px;
-    }
-
-    #nav-logo
-    {
-        background: transparent url(     "../images/sprites-combined.png" ) no-repeat 0 -225px;
-        left: -3px;
-        position: absolute;
-        width: 75px;
-        height: 75px;
-        top: 13px;
-    }
-    #nav-logo a
-    {
-        width: 75px;
-        height: 75px;
-        display: block;
-        text-indent: -9999px;
-        overflow: hidden;
-    }
-    /* Clearing */
-    .header:after, .footer:after, .breadcrumb:after, .wrap .content:after, .group:after
-    {
-        content: ".";
-        display: block;
-        height: 0;
-        clear: both;
-        visibility: hidden;
-    }
-    /* ^ Clearing */
-
-
-
-    .shortCut-topleft-inactive
-    {
-        padding-left: 3px;
-        background: transparent url(     "../images/sprites-combined.png" ) repeat 0px -58px;
-        height: 20px;
-        /*width: 93px;*/
-    }
-    .shortCut-topleft-inactive span
-    {
-        font-variant: normal;
-    }
-    #shortCut
-    {
-        padding-top: 10px;
-        font-weight: bolder;
-        color: #b0adab;
-    }
-    #shortCut ul
-    {
-        list-style-type: none;
-        float: left;
-        width: 347px;
-        margin-left: 100px;
-    }
-    #shortCut li
-    {
-        display: inline-block;
-        margin-right: 25px;
-        float: left;
-        white-space: nowrap;
-    }
-    #shortCut li a
-    {
-        color: #b0adab;
-        text-decoration: none;
-    }
-    #shortCut li a:hover
-    {
-        color: #44a51c;
-        text-decoration: none;
+        background: url(../images/sprites-combined.png) no-repeat -78px -235px;
     }
 
-    /* end of header elements */    
-    
-    /* menu element */
     .sidebar
     {
         float: left;
@@ -369,32 +209,32 @@
         width: 200px;
         font-size: 11px;
     }
-    .sidebar a
-    {
-        color: #00732f;
-        text-decoration: none;
-    }
-    .offline .sidebar, .offline .feedback
+
+    .offline .sidebar, .offline .feedback, .offline .t_button
     {
         display: none;
     }
+
     .sidebar .searchlabel
     {
         padding: 0 0 2px 17px;
         font: normal bold 11px/1.2 Verdana;
     }
+
     .sidebar .search
     {
         padding: 0 15px 0 16px;
     }
+
     .sidebar .search form
     {
-        width: 167px;
-        height: 21px;
-        padding: 2px 0 0 5px;
-        background: url(../images/form_bg.png) no-repeat 0 0;
+        background: url(../images/sprites-combined.png) no-repeat -6px -348px;
+		height:21px;
+		padding:2px 0 0 5px;
+		width:167px;
     }
-    .sidebar .search form fieldset input#searchstring
+
+    .sidebar .search form input#pageType
     {
         width: 158px;
         height: 19px;
@@ -403,35 +243,68 @@
         outline: none;
         font: 13px/1.2 Verdana;
     }
+
     .sidebar .box
     {
         padding: 17px 15px 5px 16px;
     }
+
     .sidebar .box .first
     {
         background-image: none;
     }
+
     .sidebar .box h2
     {
         font: normal 18px/1.2 Arial;
-        padding: 15px 0 0 40px;
+        padding: 0;
         min-height: 32px;
     }
+    .sidebar .box h2 span
+    {
+        overflow: hidden;
+        display: inline-block;
+    }
     .sidebar .box#lookup h2
     {
-        background: url(../images/api_lookup.png) no-repeat 0 0;
+        background-image: none;
+    }
+    .sidebar #lookup.box h2 span
+    {
+        background: url(../images/sprites-combined.png) no-repeat -6px -311px;
+        width: 27px;
+        height: 35px;
+        margin-right: 13px;
     }
     .sidebar .box#topics h2
     {
-        background: url(../images/api_topics.png) no-repeat 0 0;
+        background-image: none;
+    }
+    .sidebar #topics.box h2 span
+    {
+        background: url(../images/sprites-combined.png) no-repeat -94px -311px;
+        width: 27px;
+        height: 32px;
+        margin-right: 13px;
     }
     .sidebar .box#examples h2
     {
-        background: url(../images/api_examples.png) no-repeat 0 0;
+        background-image: none;
+    }
+    .sidebar #examples.box h2 span
+    {
+        background: url(../images/sprites-combined.png) no-repeat -48px -311px;
+        width: 30px;
+        height: 31px;
+        margin-right: 9px;
     }
+
     .sidebar .box .list
     {
         display: block;
+		max-height:200px;
+		overflow-y:auto;
+		overflow-x:none;
     }
     .sidebar .box .live
     {
@@ -443,33 +316,34 @@
     {
         text-decoration: underline;
     }
+    .sidebar .box ul
+    {
+	padding:10px;
+    }
     .sidebar .box ul li
     {
         padding-left: 12px;
         background: url(../images/bullet_gt.png) no-repeat 0 5px;
-        margin-bottom: 15px;
+        margin-bottom: 5px;
     }
     .sidebar .bottombar
     {
         background: url(../images/box_bg.png) repeat-x 0 bottom;
     }
-    /* content elements */
     .wrap
     {
-        overflow: hidden;
+        margin: 0 5px 0 208px;
+        overflow: visible; 
     }
     .offline .wrap
     {
         margin: 0 5px 0 5px;
     }
-    /* tool bar */
     .wrap .toolbar
     {
         background-color: #fafafa;
         border-bottom: 1px solid #d1d1d1;
-        height: 20px;
-        margin-left: 3px;
-        margin-right: 5px;
+        height: 20px; 
         position: relative;
     }
     .wrap .toolbar .toolblock
@@ -487,7 +361,7 @@
     {
         padding: 0 0 10px 21px;
         right: 5px;
-        vertical-align: top;
+        vertical-align: middle;
         overflow: hidden;
     }
     .wrap .toolbar .toolbuttons .active
@@ -507,32 +381,56 @@
         font-weight: bold;
         color: #B0ADAB;
     }
-    #smallA
+
+    .toolbuttons #print
+    {
+        border-left: 1px solid #c5c4c4;
+        margin-top: 0;
+        padding-left: 7px;
+        text-indent: 0;
+    }
+    .toolbuttons #print a
+    {
+        width: 16px;
+        height: 16px;
+    }
+
+    .toolbuttons #print a span
+    {
+        width: 16px;
+        height: 16px;
+        text-indent: -999em;
+        display: block;
+        overflow: hidden;
+        background: url(../images/sprites-combined.png) no-repeat -137px -311px;
+    }
+
+    .toolbuttons #smallA
     {
         font-size: 10pt;
     }
-    #medA
+    .toolbuttons #medA
     {
         font-size: 12pt;
     }
-    #bigA
+    .toolbuttons #bigA
     {
         font-size: 14pt;
+        margin-right: 7px;
     }
+
     #smallA:hover, #medA:hover, #bigA:hover
     {
         color: #00732F;
     }
-    #print
+
+    .offline .wrap .breadcrumb
     {
-        font-size: 14pt;
-        line-height: 20pt;
     }
-    #printIcon
+
+    .wrap .breadcrumb ul
     {
-        margin-left: 5px;
     }
-    /* bread crumbs */
     .wrap .breadcrumb ul li
     {
         float: left;
@@ -545,6 +443,10 @@
     {
         font-weight: normal;
     }
+    .wrap .breadcrumb ul li a
+    {
+        color: #363534;
+    }
     .wrap .breadcrumb ul li.first
     {
         background-image: none;
@@ -553,30 +455,31 @@
     }
     .wrap .content
     {
-        padding: 8px;
-        position: relative;
+        padding: 30px;
+		word-wrap:break-word;
     }
-    /* text elements */
-    .heading
+
+    .wrap .content li
     {
-        font: normal 600 16px/1.0 Arial;
-        padding-bottom: 15px;
+        padding-left: 12px;
+        background: url(../images/bullet_sq.png) no-repeat 0 5px;
+        font: normal 400 10pt/1 Verdana;
+       /* color: #44a51c;*/
+        margin-bottom: 10px; 
     }
-
-    .subtitle
+    .content li:hover
     {
-        font-size: 13px;
+      /*  text-decoration: underline;*/
     }
 
-    .small-subtitle
+    .offline .wrap .content
     {
-        font-size: 13px;
+        padding-top: 15px;
     }
-    
+
     .wrap .content h1
     {
         font: 600 18px/1.2 Arial;
-        padding-bottom: 15px;
     }
     .wrap .content h2
     {
@@ -588,31 +491,18 @@
     }
     .wrap .content p
     {
-        line-height:20px;
-        padding:10px 5px 10px 5px;
-    }
-    .wrap .content ul
-    {
-        padding-left: 10px;
-    }
-    .wrap .content li
-    {
-        padding-left: 12px;
-        background: url(../images/bullet_sq.png) no-repeat 0 5px;
-        font: normal 400 10pt/1 Verdana;
-        margin-bottom: 10px;
-        line-height: 14px;
+        line-height: 20px;
+        padding: 5px;
     }
-
-    .wrap .content li ul
+    .wrap .content table p
     {
-        margin-top: 10px;
-    }
-
-    a
+        line-height: 20px;
+        padding: 0px;
+    }	
+    .wrap .content ul
     {
-        color: #00732F;
-        text-decoration: none;
+        padding-left: 25px;
+        padding-top: 10px;
     }
     a:hover
     {
@@ -624,22 +514,26 @@
         color: #4c0033;
         text-decoration: none;
     }
-    .offline .wrap .content
+     .content a:visited:hover
     {
-        padding-top: 15px;
-    }
-    .footer
+        color: #4c0033;
+        text-decoration: underline;
+    }   .footer
     {
         min-height: 100px;
         color: #797775;
         font: normal 9px/1 Verdana;
         text-align: center;
         padding-top: 40px;
+        background-color: #E6E7E8;
+        margin: 0;
     }
     .feedback
     {
-        float: right;
-        padding-right: 10px;
+        float: none;
+        position: absolute;
+        right: 15px;
+        bottom: 10px;
         font: normal 8px/1 Verdana;
         color: #B0ADAB;
     }
@@ -650,37 +544,244 @@
         color: #00732F;
         text-decoration: underline;
     }
+    .header:after, .footer:after, .breadcrumb:after, .wrap .content:after, .group:after
+    {
+        content: ".";
+        display: block;
+        height: 0;
+        clear: both;
+        visibility: hidden;
+    }
+    #nav-topright
+    {
+        height: 70px;
+    }
+
+    #nav-topright ul
+    {
+        list-style-type: none;
+        float: right;
+        width: 370px;
+        margin-top: 11px;
+    }
+
+    #nav-topright li
+    {
+        display: inline-block;
+        margin-right: 20px;
+        float: left;
+    }
+
+    #nav-topright li.nav-topright-last
+    {
+        margin-right: 0;
+    }
+
+    #nav-topright li a
+    {
+        background: transparent url(../images/sprites-combined.png) no-repeat;
+        height: 18px;
+        display: block;
+        overflow: hidden;
+        text-indent: -9999px;
+    }
+
+    #nav-topright li.nav-topright-home a
+    {
+        width: 65px;
+        background-position: -2px -91px;
+    }
+
+    #nav-topright li.nav-topright-home a:hover
+    {
+        background-position: -2px -117px;
+    }
+
+
+    #nav-topright li.nav-topright-dev a
+    {
+        width: 30px;
+        background-position: -76px -91px;
+    }
+
+    #nav-topright li.nav-topright-dev a:hover
+    {
+        background-position: -76px -117px;
+    }
+
+
+    #nav-topright li.nav-topright-labs a
+    {
+        width: 40px;
+        background-position: -114px -91px;
+    }
+
+    #nav-topright li.nav-topright-labs a:hover
+    {
+        background-position: -114px -117px;
+    }
+
+    #nav-topright li.nav-topright-doc a
+    {
+        width: 32px;
+        background-position: -162px -91px;
+    }
+
+    #nav-topright li.nav-topright-doc a:hover, #nav-topright li.nav-topright-doc-active a
+    {
+        background-position: -162px -117px;
+    }
+
+    #nav-topright li.nav-topright-blog a
+    {
+        width: 40px;
+        background-position: -203px -91px;
+    }
+
+    #nav-topright li.nav-topright-blog a:hover, #nav-topright li.nav-topright-blog-active a
+    {
+        background-position: -203px -117px;
+    }
+
+    #nav-topright li.nav-topright-shop a
+    {
+        width: 40px;
+        background-position: -252px -91px;
+    }
+
+    #nav-topright li.nav-topright-shop a:hover, #nav-topright li.nav-topright-shop-active a
+    {
+        background-position: -252px -117px;
+    }
+
+    #nav-logo
+    {
+        background: transparent url(../images/sprites-combined.png ) no-repeat 0 -225px;
+        left: -3px;
+        position: absolute;
+        width: 75px;
+        height: 75px;
+        top: 13px;
+    }
+    #nav-logo a
+    {
+        width: 75px;
+        height: 75px;
+        display: block;
+        text-indent: -9999px;
+        overflow: hidden;
+    }
+
+
+    .shortCut-topleft-inactive
+    {
+        padding-left: 3px;
+        background: transparent url( ../images/sprites-combined.png) no-repeat 0px -58px;
+        height: 20px;
+        width: 47px;
+    }
+    .shortCut-topleft-inactive span
+    {
+        font-variant: normal;
+    }
+	    .shortCut-topleft-inactive span a:hover,     .shortCut-topleft-active a:hover
+	{
+		text-decoration:none;
+	}
+    #shortCut
+    {
+        padding-top: 10px;
+        font-weight: bolder;
+        color: #b0adab;
+    }
+    #shortCut ul
+    {
+        list-style-type: none;
+        float: left;
+        width: 347px;
+        margin-left: 100px;
+    }
+    #shortCut li
+    {
+        display: inline-block;
+        margin-right: 25px;
+        float: left;
+        white-space: nowrap;
+    }
+    #shortCut li a
+    {
+        color: #b0adab;
+    }
+    #shortCut li a:hover
+    {
+        color: #44a51c;
+    }
+
     hr
     {
-        background-color: #e0e0e0;
+        background-color: #E6E6E6;
+        border: 1px solid #E6E6E6;
         height: 1px;
         width: 100%;
         text-align: left;
         margin: 15px 0px 15px 0px;
     }
-    
+
     .content .alignedsummary
     {
-        margin: 6px;
+        margin: 15px;
+    }
+    pre
+    {
+        border: 1px solid #DDDDDD;
+        margin: 0 20px 10px 10px;
+        padding: 20px 15px 20px 20px;
+        overflow-x: auto;
     }
-    /* tables */
     table, pre
     {
         -moz-border-radius: 7px 7px 7px 7px;
         background-color: #F6F6F6;
         border: 1px solid #E6E6E6;
         border-collapse: separate;
-        font-size: 11px; 
-        min-width: 395px; 
+        font-size: 11px;
+        /*min-width: 395px;*/
         margin-bottom: 25px;
+        display: inline-block;
+    }
+    thead
+    {
+        margin-top: 5px;
+		font:600 12px/1.2 Arial;
+    }
+    th
+    {
+        padding: 5px 15px 5px 15px;
+        background-color: #E1E1E1;
+      /*  border-bottom: 1px solid #E6E6E6;*/
+        border-left: 1px solid #E6E6E6;
+      /*  border-right: 1px solid #E6E6E6;*/
+    }
+    td
+    {
+        padding: 3px 15px 3px 20px;
+  /*      border-left: 1px solid #E6E6E6;
+        border-right: 1px solid #E6E6E6;*/
+    }
+    tr.odd td:hover,  tr.even td:hover
+    {
+    /*    border-right: 1px solid #C3C3C3;
+        border-left: 1px solid #C3C3C3;*/
     }
-    thead{margin-top: 5px;}
-    th{ padding: 3px 6px 3px 6px; font-weight: bold; }
-    td{padding: 3px 6px 3px 10px;}
+		
+	td.rightAlign
+	{
+        padding: 3px 15px 3px 10px;
+	}
     table tr.odd
     {
         border-left: 1px solid #E6E6E6;
-        background-color: #F6F6F6; 
+        background-color: #F6F6F6;
         color: #66666E;
     }
     table tr.even
@@ -689,14 +790,11 @@
         background-color: #ffffff;
         color: #66666E;
     }
-    table tr.odd:hover
-    {
-        background-color: #E6E6E6; 
-    }
-    table tr.even:hover
+    table tr.odd td:hover, table tr.even td:hover
     {
         background-color: #E6E6E6;
     }
+    		
     span.comment
     {
         color: #8B0000;
@@ -706,15 +804,7 @@
     {
         color: #254117;
     }
-    pre
-    {
-        -moz-border-radius:7px 7px 7px 7px;
-        background-color:#F6F6F6;
-        border:1px solid #DDDDDD;
-        margin:0 20px 10px 0;
-        padding:10px;
-        overflow-x:auto;
-    }
+
     .qmltype
     {
         text-align: center;
@@ -725,24 +815,28 @@
         float: right;
         color: #254117;
     }
-    .qmldefault.
+
+    .qmldefault
     {
         float: right;
         color: red;
     }
+
     .qmldoc
     {
     }
+
     *.qmlitem p
     {
     }
+
     #feedbackBox
     {
-        display:none;
-        -moz-border-radius:7px 7px 7px 7px;
-        border:1px solid #DDDDDD;
-        position:fixed;
-        top:100px;
+        display: none;
+        -moz-border-radius: 7px 7px 7px 7px;
+        border: 1px solid #DDDDDD;
+        position: fixed;
+        top: 100px;
         left: 33%;
         height: 190px;
         width: 400px;
@@ -750,29 +844,29 @@
         background-color: #e6e7e8;
         z-index: 4;
     }
-    #feedcloseX a
+    #feedcloseX 
     {
-        display:inline;
+        display: inline;
         padding: 5px 5px 0 0;
-        margin-bottom:3px;
+        margin-bottom: 3px;
         color: #363534;
-        font-weight:600;
+        font-weight: 600;
         float: right;
         text-decoration: none;
     }
+
     #feedbox
-    /* here */
     {
-        display:inline;
+        display: inline;
         width: 370px;
         height: 120px;
-        margin:0px 25px 10px 15px;
+        margin: 0px 25px 10px 15px;
     }
     #feedsubmit
     {
-        display:inline;
-        float:right;
-        margin:4px 32px 0 0;
+        display: inline;
+        float: right;
+        margin: 4px 32px 0 0;
     }
     #blurpage
     {
@@ -788,28 +882,77 @@
     }
     .toc
     {
-        float: right; 
-        -moz-border-radius:7px 7px 7px 7px;
-        background-color:#F6F6F6;
-        border:1px solid #DDDDDD;
-        margin:0 20px 10px 10px;
-        padding:10px 6px 10px 10px;
+        float: right;
+        -moz-border-radius: 7px 7px 7px 7px;
+        background-color: #F6F6F6;
+        border: 1px solid #DDDDDD;
+        margin: 0 20px 10px 10px;
+        padding: 20px 15px 20px 20px;
         height: auto;
         width: 200px;
     }
 
-    .toc h3
+    .toc h3, .generic a
     {
-        font:600 12px/1.2 Arial;
+        font: 600 12px/1.2 Arial;
     }
 
+	.generic{
+		max-width:75%;
+	}
+	.generic td{
+		padding:0;
+	}
+	
+	.generic .odd .alphaChar{
+        background-color: #F6F6F6;
+	}
+	
+	.generic .even .alphaChar{
+        background-color: #FFFFFF;
+	}
+
+	.alignedsummary{}
+	.propsummary{}
+	.memItemLeft{}
+	.memItemRight{}
+	.bottomAlign{}
+	.highlightedCode
+	{
+	margin:10px;
+	}
+	.LegaleseLeft{}
+	.valuelist{}
+	.annotated{}
+	.obsolete{}
+	.compat{}
+	.flags{}
+	.qmlsummary{}
+	.qmlitem{}
+	.qmlproto{}
+	.qmlname{}
+	.qmlreadonly{}
+	.qmldefault{}
+	.qmldoc{}
+	.qt-style{}
+	.redFont{}
+	code{}
+	
     .wrap .content .toc ul
     {
-        float: left;
-/*         padding: 6px; */
-        
+        padding-left: 0px;
+    }
+
+
+    .wrap .content .toc .level2
+    {
+        margin-left: 15px;
+    }
+
+    .wrap .content .toc .level3
+    {
+        margin-left: 30px;
     }
-  
 
     .content .toc li
     {
@@ -817,134 +960,220 @@
         background: url(../images/bullet_dn.png) no-repeat 0 5px;
     }
 
-    .relpage 
+    .relpage
     {
         -moz-border-radius: 7px 7px 7px 7px;
         border: 1px solid #DDDDDD;
         padding: 25px 25px;
-        clear:both;
+        clear: both;
     }
     .relpage ul
     {
         float: none;
         padding: 15px;
     }
-    .content .relpage li 
+    .content .relpage li
     {
         font: normal 11px/1.2 Verdana;
     }
-    /* edit */
     h3.fn, span.fn
     {
         background-color: #F6F6F6;
         border-width: 1px;
         border-style: solid;
         border-color: #E6E6E6;
-        font-weight: bold; 
-        padding-left: 3px;
-        /*  padding: 6px 0px 6px 10px;*/
-         /*     margin: 42px 0px 0px 0px;*/
+        font-weight: bold;
+		word-spacing:3px;
     }
-    /* edit */
 
-    .indexbox
-    {
-        width: 100%; 
-    }
-    .content .indexboxcont li
-    {
-        font: normal 600 13px/1 Verdana;
-    }
+	.functionIndex {
+	font-size:12pt;
+	word-spacing:10px;
+	margin-bottom:10px;
+    background-color: #F6F6F6;
+    border-width: 1px;
+    border-style: solid;
+    border-color: #E6E6E6;
+	width:100%;
+	}
+	
+	.centerAlign
+	{
+	text-align:center;	
+	}
+	
+	.rightAlign
+	{
+	text-align:right;	
+	}
 
- /*   .indexbox a
-    {
-        color: #00732f;
-        text-decoration: none;
-    }*/
-    .indexbox a:hover, .indexbox a:visited:hover
-    {
-        color: #4c0033;
-        text-decoration: underline;
-    }
-    .indexbox a:visited
+	
+	.leftAlign
+	{
+	text-align:left;	
+	}
+
+	.topAlign{
+	vertical-align:top
+	}
+	
+	.functionIndex a{
+	display:inline-block;
+	}
+
+    /* start index box */
+    .indexbox
     {
-        color: #00732f;
-        text-decoration: none;
+        width: 100%;
+		display:inline-block;
     }
 
     .indexboxcont
     {
         display: block;
+       /* overflow: hidden;*/
     }
 
     .indexboxbar
     {
-        background: transparent url(     "../images/horBar.png" ) repeat-x left bottom;
+        background: transparent url(../images/horBar.png ) repeat-x left bottom;
         margin-bottom: 25px;
+     /*   background-image: none;
+        border-bottom: 1px solid #e2e2e2;*/
     }
 
     .indexboxcont .section
     {
-        display: inline-block; 
+        display: inline-block;
         width: 49%; 
         *width:42%;
         _width:42%;
         padding:0 2% 0 1%;
         vertical-align:top;
+
 }
 
     .indexboxcont .indexIcon
-    { 
+    {
         width: 11%; 
         *width:18%;
         _width:18%;
         overflow:hidden;
+
 }
+
+.indexboxcont .section {
+  float: left;
+}
+
     .indexboxcont .section p
-    { 
+    {
         padding-top: 20px;
         padding-bottom: 20px;
     }
-
     .indexboxcont .sectionlist
     {
         display: inline-block;
-        width: 33%;
-        margin-right: -2px;
-        vertical-align: top;
+		vertical-align:top;
+		width: 32.5%;
         padding: 0;
-    }
-    .tricol
-    {
-       
     }
     .indexboxcont .sectionlist ul
     {
-        padding-left: 15px;
         margin-bottom: 20px;
     }
-/*
+
     .indexboxcont .sectionlist ul li
     {
         line-height: 12px;
     }
-*/
-    .lastcol
+
+    .content .indexboxcont li
+    {
+        font: normal 600 13px/1 Verdana;
+    }
+
+    .indexbox a:hover, .indexbox a:visited:hover
     {
-        display: inline-block;
-        vertical-align: top;
-        padding: 0;
-        max-width: 25%;
+        color: #4c0033;
+        text-decoration: underline;
     }
 
-    .tricol .lastcol
+    .indexbox a:visited
     {
-        margin-left:-6px;
+        color: #00732f;
+        text-decoration: none;
     }
+	
+	.indexbox .indexIcon {
+	width: 11%;
+	}
 
-    /*.toc ul*/
+	
+    .indexbox .indexIcon span
+    {
+        display: block;
+    }
+    
+    .indexbox.guide .indexIcon span
+    {
+        width: 96px;
+        height: 137px;
+        background: url(../images/sprites-combined.png) no-repeat -5px -376px;
+        padding: 0;
+    }
+    
+    .indexbox.tools .indexIcon span
+    {
+        width: 115px;
+        height: 137px;
+        background: url(../images/sprites-combined.png) no-repeat -111px -376px;
+        padding: 0;
+    }
+    .indexboxcont:after
+    {
+        content: ".";
+        display: block;
+        height: 0;
+        clear: both;
+        visibility: hidden;
+    }
+	
+.sidebar .search form input.loading
+{
+        background:url("../images/spinner.gif") no-repeat scroll right center transparent;
+}
+
+    /* end of screen media */
+
+.flowList{
+vertical-align:top;
+}	
+.alphaChar{
+width:100%;
+background-color:#F6F6F6;
+border:1px solid #E6E6E6;
+font-size:12pt;
+padding-left:10px;
+margin-top:10px;
+margin-bottom:10px;
+}
+
+.flowList dl{
+}
+.flowList dd{
+display:inline-block;
+margin-left:10px;
+width:250px;
+}
+.wrap .content .flowList p{
+padding:0px;
+}
+pre.highlightedCode {
+	display: block;
+	overflow:hidden;
+}
 
-    /* end page elements */
 }
 /* end of screen media */
 
@@ -952,7 +1181,7 @@
 
 @media print
 {
-    .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft
+     input, textarea, .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft
     {
         display: none;
         background: none;
diff --git a/doc/templates/style/superfish.css b/doc/templates/style/superfish.css
new file mode 100644
index 0000000000000000000000000000000000000000..0cf0f7dc960245acd4b5e77bf0f3310ffdd98a8b
--- /dev/null
+++ b/doc/templates/style/superfish.css
@@ -0,0 +1,51 @@
+.sf-menu, .sf-menu * {
+	margin:			0;
+	padding:		0;
+	list-style:		none;
+}
+.sf-menu {
+	line-height:	1.0;
+}
+.sf-menu ul {
+	position:		absolute;
+	top:			-999em;
+	width:			10em; /* left offset of submenus need to match (see below) */
+}
+.sf-menu ul li {
+	width:			100%;
+}
+.sf-menu li:hover {
+	visibility:		inherit; /* fixes IE7 'sticky bug' */
+}
+.sf-menu li {
+	float:			left;
+	position:		relative;
+}
+.sf-menu a {
+	display:		block;
+	position:		relative;
+}
+.sf-menu li:hover ul,
+.sf-menu li.sfHover ul {
+	left:			0;
+	top:			2.5em; /* match top ul list item height */
+	z-index:		99;
+}
+ul.sf-menu li:hover li ul,
+ul.sf-menu li.sfHover li ul {
+	top:			-999em;
+}
+ul.sf-menu li li:hover ul,
+ul.sf-menu li li.sfHover ul {
+	left:			10em; /* match ul width */
+	top:			0;
+}
+ul.sf-menu li li:hover li ul,
+ul.sf-menu li li.sfHover li ul {
+	top:			-999em;
+}
+ul.sf-menu li li li:hover ul,
+ul.sf-menu li li li.sfHover ul {
+	left:			10em; /* match ul width */
+	top:			0;
+}
diff --git a/doc/templates/style/superfish_skin.css b/doc/templates/style/superfish_skin.css
new file mode 100644
index 0000000000000000000000000000000000000000..8d84827c4125f738e2f412dc880c39cedc1378ff
--- /dev/null
+++ b/doc/templates/style/superfish_skin.css
@@ -0,0 +1,83 @@
+
+/*** DEMO SKIN ***/
+.sf-menu {
+	float:			left;
+	margin-bottom:	1em;
+}
+.sf-menu a {
+	border-left:	1px solid #fff;
+	border-top:		1px solid #CFDEFF;
+	padding: 		.75em 1em;
+	text-decoration:none;
+}
+.sf-menu a, .sf-menu a:visited  { /* visited pseudo selector so IE6 applies text colour*/
+	color:			#13a;
+}
+.sf-menu li {
+	background:		#BDD2FF;
+}
+.sf-menu li li {
+	background:		#AABDE6;
+}
+.sf-menu li li li {
+	background:		#9AAEDB;
+}
+.sf-menu li:hover, .sf-menu li.sfHover,
+.sf-menu a:focus, .sf-menu a:hover, .sf-menu a:active {
+	background:		#CFDEFF;
+	outline:		0;
+}
+
+/*** arrows **/
+.sf-menu a.sf-with-ul {
+	padding-right: 	2.25em;
+	min-width:		1px; /* trigger IE7 hasLayout so spans position accurately */
+}
+.sf-sub-indicator {
+	position:		absolute;
+	display:		block;
+	right:			.75em;
+	top:			1.05em; /* IE6 only */
+	width:			10px;
+	height:			10px;
+	text-indent: 	-999em;
+	overflow:		hidden;
+	background:		url('../images/arrows-ffffff.png') no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
+}
+a > .sf-sub-indicator {  /* give all except IE6 the correct values */
+	top:			.8em;
+	background-position: 0 -100px; /* use translucent arrow for modern browsers*/
+}
+/* apply hovers to modern browsers */
+a:focus > .sf-sub-indicator,
+a:hover > .sf-sub-indicator,
+a:active > .sf-sub-indicator,
+li:hover > a > .sf-sub-indicator,
+li.sfHover > a > .sf-sub-indicator {
+	background-position: -10px -100px; /* arrow hovers for modern browsers*/
+}
+
+/* point right for anchors in subs */
+.sf-menu ul .sf-sub-indicator { background-position:  -10px 0; }
+.sf-menu ul a > .sf-sub-indicator { background-position:  0 0; }
+/* apply hovers to modern browsers */
+.sf-menu ul a:focus > .sf-sub-indicator,
+.sf-menu ul a:hover > .sf-sub-indicator,
+.sf-menu ul a:active > .sf-sub-indicator,
+.sf-menu ul li:hover > a > .sf-sub-indicator,
+.sf-menu ul li.sfHover > a > .sf-sub-indicator {
+	background-position: -10px 0; /* arrow hovers for modern browsers*/
+}
+
+/*** shadows for all but IE6 ***/
+.sf-shadow ul {
+	background:	url('../images/shadow.png') no-repeat bottom right;
+	padding: 0 8px 9px 0;
+	-moz-border-radius-bottomleft: 17px;
+	-moz-border-radius-topright: 17px;
+	-webkit-border-top-right-radius: 17px;
+	-webkit-border-bottom-left-radius: 17px;
+}
+.sf-shadow ul.sf-shadow-off {
+	background: transparent;
+}
diff --git a/share/qtcreator/translations/extract-customwizards.xq.in b/share/qtcreator/translations/extract-customwizards.xq.in
index 0511c217d48bb80423b6eb58b7b887a20b31472f..2112c4be8399a94d91f92574dd0df6d838ac5893 100644
--- a/share/qtcreator/translations/extract-customwizards.xq.in
+++ b/share/qtcreator/translations/extract-customwizards.xq.in
@@ -1,6 +1,8 @@
 let $files := ( $$CUSTOMWIZARD_FILES )
 let $prefix := string(\"QT_TRANSLATE_NOOP(&quot;ProjectExplorer::CustomWizard&quot;, &quot;\")
 let $suffix := concat(\"&quot;)\", codepoints-to-string(10))
+where empty($files)
+return
 for $file in $files
     let $doc := doc($file)
     for $text in ($doc/*:wizard/*:description, $doc/*:wizard/*:displayname, $doc/*:wizard/*:displaycategory, $doc/*:wizard/*:fieldpagetitle, $doc/*:wizard/*:fields/*:field/*:fielddescription)
diff --git a/share/qtcreator/translations/translations.pro b/share/qtcreator/translations/translations.pro
index a16da1983d011dcfd65e0c13d61cbf7cd61ac935..75e551205eb07e2c89d99d1066ce5bfaa6586dd1 100644
--- a/share/qtcreator/translations/translations.pro
+++ b/share/qtcreator/translations/translations.pro
@@ -1,6 +1,7 @@
 include(../../../qtcreator.pri)
 
-LANGUAGES = cs de es fr hu it ja pl ru sl
+LANGUAGES = de pl ru
+#LANGUAGES = cs es fr hu it ja sl
 
 # var, prepend, append
 defineReplace(prependAll) {
diff --git a/src/libs/extensionsystem/pluginview.cpp b/src/libs/extensionsystem/pluginview.cpp
index f60b2c32defcab32a7cac038f5da23045b0d59b7..cb2af604c6f234e9a49d5eb759a08ee5f875035f 100644
--- a/src/libs/extensionsystem/pluginview.cpp
+++ b/src/libs/extensionsystem/pluginview.cpp
@@ -221,16 +221,13 @@ int PluginView::parsePluginSpecs(QTreeWidgetItem *parentItem, Qt::CheckState &gr
             ++loadCount;
         }
 
-        if (!m_whitelist.contains(spec->name()))
+        if (!m_whitelist.contains(spec->name())) {
             pluginItem->setData(C_LOAD, Qt::CheckStateRole, state);
-        else {
-            QColor disabledColor = palette().color(QPalette::Disabled,QPalette::WindowText).lighter(120);
+        } else {
             pluginItem->setData(C_LOAD, Qt::CheckStateRole, Qt::Checked);
-            pluginItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
-            pluginItem->setSizeHint(C_LOAD, QSize(1,1));
-            pluginItem->setForeground(C_LOAD, QBrush(disabledColor)); // QBrush(Qt::white, Qt::NoBrush));
-            //pluginItem->setBackground(C_LOAD, QBrush(Qt::white, Qt::NoBrush));
+            pluginItem->setFlags(Qt::ItemIsSelectable);
         }
+
         pluginItem->setToolTip(C_LOAD, tr("Load on Startup"));
 
         m_specToItem.insert(spec, pluginItem);
@@ -333,7 +330,7 @@ void PluginView::updatePluginSettings(QTreeWidgetItem *item, int column)
                 child->setData(C_LOAD, Qt::CheckStateRole, state);
             } else {
                 child->setData(C_LOAD, Qt::CheckStateRole, Qt::Checked);
-                child->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
+                child->setFlags(Qt::ItemIsSelectable);
             }
         }
         updatePluginDependencies();
@@ -347,6 +344,9 @@ void PluginView::updatePluginDependencies()
 {
     foreach (PluginSpec *spec, PluginManager::instance()->loadQueue()) {
         bool disableIndirectly = false;
+        if (m_whitelist.contains(spec->name()))
+            continue;
+
         foreach(const PluginSpec *depSpec, spec->dependencySpecs()) {
             if (!depSpec->isEnabled() || depSpec->isDisabledIndirectly()) {
                 disableIndirectly = true;
diff --git a/src/plugins/coreplugin/basemode.h b/src/plugins/coreplugin/basemode.h
index 1e0fcbcc13c9f9712f75fbc0338770de017bd48b..8266931729db1159a74a72250a0e7aa968160b7b 100644
--- a/src/plugins/coreplugin/basemode.h
+++ b/src/plugins/coreplugin/basemode.h
@@ -59,12 +59,14 @@ public:
     QWidget *widget() { return m_widget; }
     QString id() const { return m_id; }
     QList<int> context() const { return m_context; }
+    QString contextHelpId() const { return m_helpId; }
 
     void setDisplayName(const QString &name) { m_displayName = name; }
     void setIcon(const QIcon &icon) { m_icon = icon; }
     void setPriority(int priority) { m_priority = priority; }
     void setWidget(QWidget *widget) { m_widget = widget; }
     void setId(const QString &id) { m_id = id; }
+    void setContextHelpId(const QString &helpId) { m_helpId = helpId; }
     void setContext(const QList<int> &context) { m_context = context; }
 
 private:
@@ -73,6 +75,7 @@ private:
     int m_priority;
     QWidget *m_widget;
     QString m_id;
+    QString m_helpId;
     QList<int> m_context;
 };
 
diff --git a/src/plugins/coreplugin/filemanager.cpp b/src/plugins/coreplugin/filemanager.cpp
index 61c2223b7fe13e4f56b918aff423444049d1d855..5fe93bcb651873f044010d6513ada291d66acdca 100644
--- a/src/plugins/coreplugin/filemanager.cpp
+++ b/src/plugins/coreplugin/filemanager.cpp
@@ -328,13 +328,18 @@ void FileManager::removeFileInfo(IFile *file)
 void FileManager::removeFileInfo(const QString &fileName, IFile *file)
 {
     const QString &fixedName = fixFileName(fileName);
-    d->m_states[fixedName].lastUpdatedState.remove(file);
+    if (d->m_states[fixedName].lastUpdatedState.contains(file)) {
+        d->m_states[fixedName].lastUpdatedState.remove(file);
 
-    if (d->m_states.value(fixedName).lastUpdatedState.isEmpty()) {
-        d->m_states.remove(fixedName);
-        if (!fixedName.isEmpty()) {
-            d->m_fileWatcher->removePath(fixedName);
+        if (d->m_states.value(fixedName).lastUpdatedState.isEmpty()) {
+            d->m_states.remove(fixedName);
+            if (!fixedName.isEmpty()) {
+                d->m_fileWatcher->removePath(fixedName);
+            }
         }
+    } else {
+        // We could not find the fileinfo, try harder to remove it
+        removeFileInfo(file);
     }
 }
 
diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp
index ce449df8e16a2c8e1ca5ed86a56909776ceff8e2..a5b2fba5a2c9f82ae70a0ac88ea1f0a9f1acabf7 100644
--- a/src/plugins/cvs/cvsplugin.cpp
+++ b/src/plugins/cvs/cvsplugin.cpp
@@ -1051,6 +1051,7 @@ Core::IEditor * CVSPlugin::showOutputInEditor(const QString& title, const QStrin
         return 0;
     s.replace(QLatin1Char(' '), QLatin1Char('_'));
     e->setSuggestedFileName(s);
+    e->setForceReadOnly(true);
     if (!source.isEmpty())
         e->setSource(source);
     if (codec)
diff --git a/src/plugins/designer/formeditorplugin.cpp b/src/plugins/designer/formeditorplugin.cpp
index 6eb8bd8d47f983fc90a9e60f2ac29809e4818198..9f842de177f3c6c711a9e47b73a4dc2280b09a17 100644
--- a/src/plugins/designer/formeditorplugin.cpp
+++ b/src/plugins/designer/formeditorplugin.cpp
@@ -129,16 +129,16 @@ void FormEditorPlugin::initializeTemplates()
     const QString formFileType = QLatin1String(Constants::FORM_FILE_TYPE);
     wizardParameters.setDisplayName(tr("Qt Designer Form"));
     wizardParameters.setId(QLatin1String("D.Form"));
-    wizardParameters.setDescription(tr("Creates a Qt Designer form along with a matching class (C++ header and source file) "
-                                       "for implementation purposes. You can add the form and class to an existing Qt C++ Project."));
+    wizardParameters.setDescription(tr("Creates a Qt Designer form that you can add to a Qt C++ project. "
+                                       "This is useful if you already have an existing class for the UI business logic."));
     addAutoReleasedObject(new FormWizard(wizardParameters, this));
 
 #ifdef CPP_ENABLED
     wizardParameters.setKind(Core::IWizard::ClassWizard);
     wizardParameters.setDisplayName(tr("Qt Designer Form Class"));
     wizardParameters.setId(QLatin1String("C.FormClass"));
-    wizardParameters.setDescription(tr("Creates a Qt Designer form that you can add to a Qt C++ project. "
-                                       "This is useful if you already have an existing class for the UI business logic."));
+    wizardParameters.setDescription(tr("Creates a Qt Designer form along with a matching class (C++ header and source file) "
+                                       "for implementation purposes. You can add the form and class to an existing Qt C++ Project."));
     addAutoReleasedObject(new FormClassWizard(wizardParameters, this));
     addAutoReleasedObject(new CppSettingsPage);
 #endif
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index ef8e5844bcfb0ae18aa7172f970e9e991fb504e9..8d039d9486eeb9e5f0563a3c060f1e12f9679642 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -351,6 +351,12 @@ public:
     Input(int k, int m, const QString &t)
         : m_key(k), m_modifiers(m), m_text(t)
     {
+        // On Mac, QKeyEvent::text() returns non-empty strings for
+        // cursor keys. This breaks some of the logic later on
+        // relying on text() being empty for "special" keys.
+        // FIXME: Check the real conditions.
+        if (m_text.size() == 1 && m_text.at(0).unicode() < ' ')
+            m_text.clear();
         // m_xkey is only a cache.
         m_xkey = (m_text.size() == 1 ? m_text.at(0).unicode() : m_key);
     }
@@ -929,7 +935,8 @@ bool FakeVimHandler::Private::wantsOverride(QKeyEvent *ev)
         if (m_subsubmode == SearchSubSubMode)
             return true;
         // Not sure this feels good. People often hit Esc several times
-        if (isNoVisualMode() && m_mode == CommandMode)
+        if (isNoVisualMode() && m_mode == CommandMode
+               && m_opcount.isEmpty() && m_mvcount.isEmpty())
             return false;
         return true;
     }
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index ae205f06a93513bfb0329b8a544da2d6ef99f4d7..7abe9ea1cb653e2d21fd4b857cfa027e2a98a650 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -188,6 +188,7 @@ VCSBase::VCSBaseEditor
             rc->setCodec(VCSBase::VCSBaseEditor::getCodec(source));
     }
     m_core->editorManager()->activateEditor(outputEditor);
+    rc->setForceReadOnly(true);
     return rc;
 }
 
diff --git a/src/plugins/help/generalsettingspage.cpp b/src/plugins/help/generalsettingspage.cpp
index 79707b977a57de33984f7dddf1538781247b34f4..edc20b511b798416e40bb741a5de11affd99e859 100644
--- a/src/plugins/help/generalsettingspage.cpp
+++ b/src/plugins/help/generalsettingspage.cpp
@@ -108,18 +108,18 @@ QWidget *GeneralSettingsPage::createPage(QWidget *parent)
     }
     m_ui.homePageLineEdit->setText(m_homePage);
 
-    m_startOption = engine.customValue(QLatin1String("StartOption"), 2).toInt();
-    m_ui.helpStartComboBox->setCurrentIndex(m_startOption);
+    int startOption = engine.customValue(QLatin1String("StartOption"), 2).toInt();
+    m_ui.helpStartComboBox->setCurrentIndex(startOption);
 
-    m_helpOption = engine.customValue(QLatin1String("ContextHelpOption"), 0).toInt();
-    m_ui.contextHelpComboBox->setCurrentIndex(m_helpOption);
+    int helpOption = engine.customValue(QLatin1String("ContextHelpOption"), 0).toInt();
+    m_ui.contextHelpComboBox->setCurrentIndex(helpOption);
 
     connect(m_ui.currentPageButton, SIGNAL(clicked()), this, SLOT(setCurrentPage()));
     connect(m_ui.blankPageButton, SIGNAL(clicked()), this, SLOT(setBlankPage()));
     connect(m_ui.defaultPageButton, SIGNAL(clicked()), this, SLOT(setDefaultPage()));
 
     HelpViewer *viewer = CentralWidget::instance()->currentHelpViewer();
-    if (viewer == 0)
+    if (!viewer)
         m_ui.currentPageButton->setEnabled(false);
 
     m_ui.errorLabel->setVisible(false);
diff --git a/src/plugins/help/generalsettingspage.h b/src/plugins/help/generalsettingspage.h
index dbfc97e39b3d077ebbbfb6b7b53daf5f75402fb8..9d8370b58139ad758db97b1f1ebb1f2a7a35e296 100644
--- a/src/plugins/help/generalsettingspage.h
+++ b/src/plugins/help/generalsettingspage.h
@@ -76,8 +76,6 @@ private:
     QFont m_font;
     QFontDatabase m_fontDatabase;
 
-    int m_helpOption;
-    int m_startOption;
     QString m_homePage;
 
     QString m_searchKeywords;
diff --git a/src/plugins/help/searchwidget.cpp b/src/plugins/help/searchwidget.cpp
index 1e2536ce4b64d5392bff55f70a0c822bf08dbf28..933abd368908412229f4811342104d53a4a13707 100644
--- a/src/plugins/help/searchwidget.cpp
+++ b/src/plugins/help/searchwidget.cpp
@@ -56,6 +56,7 @@ SearchWidget::SearchWidget()
     : zoomCount(0)
     , m_progress(0)
     , searchEngine(0)
+    , resultWidget(0)
 {
 }
 
diff --git a/src/plugins/locator/ilocatorfilter.h b/src/plugins/locator/ilocatorfilter.h
index 7ab276e5b7f219aeb38e7aa7b8543fbb4baad116..f3207c208734ce6d347f98513a6e56f2452934ac 100644
--- a/src/plugins/locator/ilocatorfilter.h
+++ b/src/plugins/locator/ilocatorfilter.h
@@ -43,14 +43,18 @@ class ILocatorFilter;
 
 struct FilterEntry
 {
-    FilterEntry() {}
+    FilterEntry()
+        : filter(0)
+        , resolveFileIcon(false)
+    {}
+
     FilterEntry(ILocatorFilter *fromFilter, const QString &name, const QVariant &data,
                 const QIcon &icon = QIcon())
-    : filter(fromFilter)
-    , displayName(name)
-    , internalData(data)
-    , displayIcon(icon)
-    , resolveFileIcon(false)
+        : filter(fromFilter)
+        , displayName(name)
+        , internalData(data)
+        , displayIcon(icon)
+        , resolveFileIcon(false)
     {}
 
     bool operator==(const FilterEntry &other) const {
diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp
index ff1cd160d9c76e6326ff7789c8b8d3b5acd1dd51..9d4bd97c5d419b8e080c24cce4df4dd940a7e7e9 100644
--- a/src/plugins/mercurial/mercurialclient.cpp
+++ b/src/plugins/mercurial/mercurialclient.cpp
@@ -624,6 +624,7 @@ VCSBase::VCSBaseEditor *MercurialClient::createVCSEditor(const QString &kind, QS
     }
 
     core->editorManager()->activateEditor(outputEditor);
+    baseEditor->setForceReadOnly(true);
     return baseEditor;
 }
 
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index 49ea0afd3814e2a3df103e7d8827c363c72340a8..b693ff58543b0ca638e5fdf8d858872f8f6287cd 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -1194,6 +1194,7 @@ Core::IEditor * PerforcePlugin::showOutputInEditor(const QString& title, const Q
     PerforceEditor *e = qobject_cast<PerforceEditor*>(editor->widget());
     if (!e)
         return 0;
+    e->setForceReadOnly(true);
     e->setSource(source);
     s.replace(QLatin1Char(' '), QLatin1Char('_'));
     e->setSuggestedFileName(s);
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index c8bbb792ed5df86389b85071f81b3374fdd81593..156d5ce9f8fdcc2318b33179812838df5862559f 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -35,28 +35,21 @@ SUBDIRS   = plugin_coreplugin \
             plugin_mercurial \
             debugger/dumper.pro
 
-SUPPORT_QT_QML = $$(QTCREATOR_WITH_QML)
-
-!isEmpty(SUPPORT_QT_QML) {
-    message("Adding support for Qt/QML projects.")
-    DEFINES += QTCREATOR_WITH_QML
-
-    contains(QT_CONFIG, declarative) {
-
-        SUBDIRS += plugin_qmlprojectmanager
-
-        include(private_headers.pri)
-        exists($${QT_PRIVATE_HEADERS}/QtDeclarative/private/qdeclarativecontext_p.h) {
-            SUBDIRS += plugin_qmldesigner \
-                       plugin_qmlinspector
-        } else {
-            warning()
-            warning("QmlDesigner and QmlInspector plugins have been disabled")
-            warning("The plugins depend on on private headers from QtDeclarative module.")
-            warning("To enable them, pass 'QT_PRIVATE_HEADERS=$QTDIR/include' to qmake, where $QTDIR is the source directory of qt.")
-            warning()
-       }
-   }
+contains(QT_CONFIG, declarative) {
+
+    SUBDIRS += plugin_qmlprojectmanager
+
+    include(private_headers.pri)
+    exists($${QT_PRIVATE_HEADERS}/QtDeclarative/private/qdeclarativecontext_p.h) {
+        SUBDIRS += plugin_qmldesigner \
+                   plugin_qmlinspector
+    } else {
+        warning()
+        warning("QmlDesigner and QmlInspector plugins have been disabled")
+        warning("The plugins depend on on private headers from QtDeclarative module.")
+        warning("To enable them, pass 'QT_PRIVATE_HEADERS=$QTDIR/include' to qmake, where $QTDIR is the source directory of qt.")
+        warning()
+    }
 }
 
 plugin_coreplugin.subdir = coreplugin
diff --git a/src/plugins/projectexplorer/images/targetseparatorbackground.png b/src/plugins/projectexplorer/images/targetseparatorbackground.png
index 2205cf22650fa021af75814ee8c1811c0728bd7d..cd5a9ee069c05def36d9cc12024797bae6632672 100644
Binary files a/src/plugins/projectexplorer/images/targetseparatorbackground.png and b/src/plugins/projectexplorer/images/targetseparatorbackground.png differ
diff --git a/src/plugins/projectexplorer/ioutputparser.cpp b/src/plugins/projectexplorer/ioutputparser.cpp
index 2b43514bab6bbde453a0f4f7dda5cc57fecc513f..0974c661b4b1ca9623179ac63f1c238c7eaea4f6 100644
--- a/src/plugins/projectexplorer/ioutputparser.cpp
+++ b/src/plugins/projectexplorer/ioutputparser.cpp
@@ -51,9 +51,9 @@ void IOutputParser::appendOutputParser(IOutputParser *parser)
 
     m_parser = parser;
     connect(parser, SIGNAL(addOutput(QString)),
-            this, SLOT(outputAdded(QString)));
+            this, SLOT(outputAdded(QString)), Qt::DirectConnection);
     connect(parser, SIGNAL(addTask(ProjectExplorer::Task)),
-            this, SLOT(taskAdded(ProjectExplorer::Task)));
+            this, SLOT(taskAdded(ProjectExplorer::Task)), Qt::DirectConnection);
 }
 
 IOutputParser *IOutputParser::takeOutputParserChain()
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 25d31abaa50fa088522f355574533cc0dbcf8958..ed704fc789a4622f622dacdab2c76c082213d4e1 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -275,6 +275,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
     d->m_projectsMode->setWidget(d->m_proWindow);
     d->m_projectsMode->setContext(QList<int>() << pecontext);
     d->m_projectsMode->setEnabled(session()->startupProject());
+    d->m_projectsMode->setContextHelpId(QLatin1String("Managing Projects"));
     addAutoReleasedObject(d->m_projectsMode);
     d->m_proWindow->layout()->addWidget(new Core::FindToolBarPlaceHolder(d->m_proWindow));
 
@@ -1015,54 +1016,37 @@ QList<Project *> ProjectExplorerPlugin::openProjects(const QStringList &fileName
     ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
     QList<IProjectManager*> projectManagers = pm->getObjects<IProjectManager>();
 
-    //QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-   // bool blocked = blockSignals(true);
     QList<Project*> openedPro;
     foreach (const QString &fileName, fileNames) {
         if (const Core::MimeType mt = Core::ICore::instance()->mimeDatabase()->findByFile(QFileInfo(fileName))) {
-            foreach (IProjectManager *manager, projectManagers)
+            foreach (IProjectManager *manager, projectManagers) {
                 if (manager->mimeType() == mt.type()) {
-                    if (Project *pro = manager->openProject(fileName))
-                        openedPro += pro;
+                    if (Project *pro = manager->openProject(fileName)) {
+                        if (pro->restoreSettings()) {
+                            connect(pro, SIGNAL(fileListChanged()), this, SIGNAL(fileListChanged()));
+                            d->m_session->addProject(pro);
+                            // Make sure we always have a current project / node
+                            if (!d->m_currentProject && !openedPro.isEmpty())
+                                setCurrentNode(pro->rootProjectNode());
+                            openedPro += pro;
+                        } else {
+                            delete pro;
+                        }
+                    }
                     d->m_session->reportProjectLoadingProgress();
                     break;
                 }
+            }
         }
     }
-    //blockSignals(blocked);
+    updateActions();
 
     if (openedPro.isEmpty()) {
-        if (debug)
-            qDebug() << "ProjectExplorerPlugin - Could not open any projects!";
-        QApplication::restoreOverrideCursor();
-        return QList<Project *>();
-    }
-
-    QList<Project *>::iterator it, end;
-    end = openedPro.end();
-    for (it = openedPro.begin(); it != end; ) {
-        if (debug)
-            qDebug()<<"restoring settings for "<<(*it)->file()->fileName();
-        if ((*it)->restoreSettings()) {
-            connect(*it, SIGNAL(fileListChanged()), this, SIGNAL(fileListChanged()));
-            ++it;
-        } else {
-            delete  *it;
-            it = openedPro.erase(it);
-        }
+        qDebug() << "ProjectExplorerPlugin - Could not open any projects!";
+    } else {
+        Core::ModeManager::instance()->activateMode(Core::Constants::MODE_EDIT);
     }
 
-    d->m_session->addProjects(openedPro);
-
-    // Make sure we always have a current project / node
-    if (!d->m_currentProject && !openedPro.isEmpty())
-        setCurrentNode(openedPro.first()->rootProjectNode());
-
-    updateActions();
-
-    Core::ModeManager::instance()->activateMode(Core::Constants::MODE_EDIT);
-    QApplication::restoreOverrideCursor();
-
     return openedPro;
 }
 
diff --git a/src/plugins/projectexplorer/sessiondialog.ui b/src/plugins/projectexplorer/sessiondialog.ui
index 7418b159947bc86ef03d0716d12732048e218e1e..98895f94d3d76051aa41f615ef45a851a0858a48 100644
--- a/src/plugins/projectexplorer/sessiondialog.ui
+++ b/src/plugins/projectexplorer/sessiondialog.ui
@@ -82,7 +82,7 @@
    <item row="2" column="0" rowspan="2">
     <widget class="QLabel" name="whatsASessionLabel">
      <property name="text">
-      <string>&lt;a href=&quot;qthelp://com.nokia.qtcreator/doc/creator-quick-tour.html#session-management-in-qt-creator&quot;&gt;What is a Session?&lt;/a&gt;</string>
+      <string>&lt;a href=&quot;qthelp://com.nokia.qtcreator/doc/creator-project-managing-sessions.html&quot;&gt;What is a Session?&lt;/a&gt;</string>
      </property>
     </widget>
    </item>
diff --git a/src/plugins/projectexplorer/targetselector.cpp b/src/plugins/projectexplorer/targetselector.cpp
index 61a582a40d97ca44d5a3b0335990401fc4f92b8c..70601a8b0350812821970c6c4734836a5bf8c584 100644
--- a/src/plugins/projectexplorer/targetselector.cpp
+++ b/src/plugins/projectexplorer/targetselector.cpp
@@ -137,7 +137,7 @@ int TargetSelector::targetWidth() const
 
 QSize TargetSelector::minimumSizeHint() const
 {
-    return QSize((targetWidth() + 1) * m_targets.size() + (ADDBUTTON_WIDTH + 1) * 2 + 1, TARGET_HEIGHT + 2);
+    return QSize((targetWidth() + 1) * m_targets.size() + (ADDBUTTON_WIDTH + 1) * 2 + 3, TARGET_HEIGHT + 4);
 }
 
 void TargetSelector::mousePressEvent(QMouseEvent *event)
@@ -191,11 +191,20 @@ void TargetSelector::paintEvent(QPaintEvent *event)
     QSize size = minimumSizeHint();
     //draw frame
     p.drawLine(1, 0, size.width() - 2, 0);
+    p.drawLine(1, size.height() - 3, size.width() - 2, size.height() - 3);
+    p.drawLine(1, 1, 1, size.height() - 4);
+    p.drawLine(size.width() - 2, 1, size.width() - 2, size.height() - 4);
+
+    //draw shadow
+    p.setPen(QColor(0, 0, 0, 50));
+    p.drawLine(1, size.height() - 2, size.width() - 2, size.height() - 2);
+    p.setPen(QColor(0, 0, 0, 20));
+    p.drawLine(0, size.height() - 2, 0, size.height() - 9);
+    p.drawLine(size.width()-1, size.height() - 2, size.width()-1, size.height() - 9);
     p.drawLine(1, size.height() - 1, size.width() - 2, size.height() - 1);
-    p.drawLine(0, 1, 0, size.height() - 2);
-    p.drawLine(size.width() - 1, 1, size.width() - 1, size.height() - 2);
+
     //draw targets
-    int x = 1;
+    int x = 2;
     int index = 0;
     QFontMetrics fm(font());
     if (m_removeButtonEnabled)
@@ -231,7 +240,7 @@ void TargetSelector::paintEvent(QPaintEvent *event)
         // Build
         int margin = 2; // position centered within the rounded buttons
         QFontMetrics fm = fontMetrics();
-        QRect textRect(x + margin, size.height() - fm.height() - 5, targetWidth()/2, fm.height());
+        QRect textRect(x + margin, size.height() - fm.height() - 7, targetWidth()/2, fm.height());
         p.setPen(buildSelected ? Qt::black : Qt::white);
         if (index!=m_currentTargetIndex)
             p.setPen(QColor(0x555555));
diff --git a/src/plugins/projectexplorer/targetsettingswidget.cpp b/src/plugins/projectexplorer/targetsettingswidget.cpp
index 8eaae582827f25d2eb9ffa9625d949137bb6c465..c5a101664d3d04e055583adae44f384685e12e52 100644
--- a/src/plugins/projectexplorer/targetsettingswidget.cpp
+++ b/src/plugins/projectexplorer/targetsettingswidget.cpp
@@ -21,6 +21,19 @@ TargetSettingsWidget::TargetSettingsWidget(QWidget *parent) :
             this, SIGNAL(removeButtonClicked()));
     connect(m_targetSelector, SIGNAL(currentChanged(int,int)),
             this, SIGNAL(currentChanged(int,int)));
+
+    m_shadow = new QWidget(this);
+
+    // Create shadow below targetselector
+    m_targetSelector->raise();
+    QPalette shadowPal = palette();
+    QLinearGradient grad(0, 0, 0, 2);
+    grad.setColorAt(0, QColor(0, 0, 0, 60));
+    grad.setColorAt(1, Qt::transparent);
+    shadowPal.setBrush(QPalette::All, QPalette::Window, grad);
+    m_shadow->setPalette(shadowPal);
+    m_shadow->setAutoFillBackground(true);
+
     updateTargetSelector();
 }
 
@@ -102,9 +115,15 @@ bool TargetSettingsWidget::isRemoveButtonEnabled() const
     return m_targetSelector->isRemoveButtonEnabled();
 }
 
+void TargetSettingsWidget::resizeEvent(QResizeEvent *e)
+{
+    QWidget::resizeEvent(e);
+    m_shadow->setGeometry(0, m_targetSelector->height() + 3, width(), 2);
+}
+
 void TargetSettingsWidget::updateTargetSelector()
 {
-    m_targetSelector->setGeometry((WIDTH-m_targetSelector->minimumSizeHint().width())/2, 12,
+    m_targetSelector->setGeometry((WIDTH-m_targetSelector->minimumSizeHint().width())/2, 13,
         m_targetSelector->minimumSizeHint().width(),
         m_targetSelector->minimumSizeHint().height());
 }
diff --git a/src/plugins/projectexplorer/targetsettingswidget.h b/src/plugins/projectexplorer/targetsettingswidget.h
index fee4e77fb20cfd97c401b44091bf77de2b1a9572..4a9fa6fd08a9684e710e27d84eb4edde23052843 100644
--- a/src/plugins/projectexplorer/targetsettingswidget.h
+++ b/src/plugins/projectexplorer/targetsettingswidget.h
@@ -43,6 +43,7 @@ signals:
     void currentChanged(int targetIndex, int subIndex);
 
 protected:
+    void resizeEvent(QResizeEvent *);
     void changeEvent(QEvent *e);
 
 private:
@@ -50,6 +51,7 @@ private:
     Ui::TargetSettingsWidget *ui;
 
     TargetSelector *m_targetSelector;
+    QWidget *m_shadow;
 };
 
 } // namespace Internal
diff --git a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp
index 5c53e588720bd81a549c6ebbe51b5cea1b6e0bf7..035930e006655da0fa48039a30267cdd59874b03 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp
+++ b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp
@@ -112,24 +112,21 @@ void ColorButton::paintEvent(QPaintEvent *event)
 
     QPainter p(this);
 
-    QRect r(0, 0, width(), height());
+
+    QRect r(0, 0, width() - 2, height() - 2);
     if (isEnabled())
         p.setBrush(color);
     else
         p.setBrush(Qt::transparent);
-    p.setPen(Qt::black);
-
-    if (!m_noColor) {
-        p.drawRect(r);
-    } else {
-        p.fillRect(r, Qt::white);
-        p.fillRect(0, 0, width() /2, height() /2, QColor(Qt::gray));
-        p.fillRect(width() /2, height() /2, width() /2, height() /2, QColor(Qt::gray));
-        p.setBrush(Qt::transparent);
-        p.drawRect(r);
-    }
 
+    p.setPen(QColor(0x444444));
+    p.drawRect(r.translated(1, 1));
+    p.setPen(QColor(0x101010));
+    p.drawRect(r);
+    p.setPen(QColor(255, 255, 255, 40));
+    p.drawRect(r.adjusted(1, 1, -1, -1));
 
+    p.setRenderHint(QPainter::Antialiasing, true);
     QVector<QPointF> points;
     if (isChecked()) {
         points.append(QPointF(2, 3));
@@ -140,8 +137,9 @@ void ColorButton::paintEvent(QPaintEvent *event)
         points.append(QPointF(2, 9));
         points.append(QPointF(2, 3));
     }
-    p.setPen("#707070");
-    p.setBrush(Qt::white);
+    p.translate(0.5, 0.5);
+    p.setBrush(QColor(0xaaaaaa));
+    p.setPen(QColor(0x444444));
     p.drawPolygon(points);
 }
 
@@ -186,6 +184,9 @@ void HueControl::paintEvent(QPaintEvent *event)
         }
     }
 
+    p.setPen(QColor(0x404040));
+    p.drawRect(QRect(1, 1, width() - 1, height() - 1).adjusted(10, 5, -20, -5));
+
     p.drawPixmap(10, 5, m_cache);
 
     QVector<QPointF> points;
@@ -196,12 +197,19 @@ void HueControl::paintEvent(QPaintEvent *event)
     points.append(QPointF(25, y + 5));
     points.append(QPointF(25, y - 5));
 
-    p.setPen(Qt::black);
     p.setBrush(Qt::NoBrush);
+    p.setPen(QColor(0x101010));
     p.drawRect(QRect(0, 0, width() - 1, height() - 1).adjusted(10, 5, -20, -5));
+    p.setPen(QColor(255, 255, 255, 60));
+    p.drawRect(QRect(1, 1, width() - 3, height() - 3).adjusted(10, 5, -20, -5));
 
-    p.setPen(Qt::black);
-    p.setBrush(QColor("#707070"));
+    p.setRenderHint(QPainter::Antialiasing, true);
+    p.translate(0.5, 1.5);
+    p.setPen(QColor(0, 0, 0, 120));
+    p.drawPolygon(points);
+    p.translate(0, -1);
+    p.setPen(0x222222);
+    p.setBrush(QColor(0x707070));
     p.drawPolygon(points);
 }
 
@@ -286,7 +294,6 @@ void ColorBox::setColor(const QColor &color)
     if (oldsaturation != saturation()) emit saturationChanged();
     if (oldvalue != value()) emit valueChanged();
     if (oldAlpha != alpha()) emit alphaChanged();
-    emit colorChanged();
 }
 
 void ColorBox::setSaturation(int newsaturation)
@@ -347,22 +354,33 @@ void ColorBox::paintEvent(QPaintEvent *event)
             for (int x = 0; x < width; x++)
             {
                 QColor c;
-                c.setHsv(fixedHue, (x*255) / 120, 255 - (y*255) / 120);
+                c.setHsv(fixedHue, (x*255) / width, 255 - (y*255) / height);
                 chacheP.setPen(c);
                 chacheP.drawPoint(x ,y);
             }
     }
 
+    p.setBrush(Qt::NoBrush);
+    p.setPen(QColor(0x505050));
+    QRect r(0, 0, width() -1, height() - 1);
+    p.drawRect(r.adjusted(6, 6, -2, -2));
+    p.setPen(QColor(0x404040));
+    p.drawRect(r.adjusted(5, 5, -3, -3));
+    p.setPen(QColor(0x101010));
+    p.drawRect(r.adjusted(4, 4, -4, -4));
     p.drawPixmap(5, 5, m_cache);
 
-    int x = clamp(m_color.hsvSaturationF() * 120, 0, 120) + 5; 
-    int y = clamp(120 - m_color.valueF() * 120, 0, 120) + 5; 
+    int x = clamp(m_color.hsvSaturationF() * 120, 0, 119) + 5;
+    int y = clamp(120 - m_color.valueF() * 120, 0, 119) + 5;
 
-    p.setPen(Qt::white);
-    p.drawEllipse(x - 2, y - 2, 4, 4);
+    p.setPen(QColor(255, 255, 255, 50));
+    p.drawLine(5, y, x-1, y);
+    p.drawLine(x+1, y, width()-7, y);
+    p.drawLine(x, 5, x, y-1);
+    p.drawLine(x, y+1, x, height()-7);
 
-    p.setPen(Qt::black);
-    p.drawRect(QRect(0, 0, width() - 1, height() -1).adjusted(4, 4, -4, -4));
+    p.setPen(QColor(255, 255, 255, 60));
+    p.drawRect(r.adjusted(5, 5, -5, -5));
 }
 
 void ColorBox::mousePressEvent(QMouseEvent *e)
@@ -375,6 +393,8 @@ void ColorBox::mousePressEvent(QMouseEvent *e)
 
 void ColorBox::mouseReleaseEvent(QMouseEvent * /* event */)
 {
+    if (m_mousePressed)
+        emit colorChanged();
     m_mousePressed = false;
 }
 
@@ -525,43 +545,54 @@ void GradientLine::paintEvent(QPaintEvent *event)
 {
     QWidget::paintEvent(event);
     QPainter p(this);
-    p.setRenderHint(QPainter::Antialiasing, true);
 
-    QPen pen(Qt::black);
-    pen.setWidth(1);
-    p.setPen(pen);
 
-    QLinearGradient linearGradient(QPointF(2, 0), QPointF(width() -2, 0));
+    QLinearGradient linearGradient(QPointF(0, 0), QPointF(width(), 0));
 
     for (int i =0; i < m_stops.size(); i++)
          linearGradient.setColorAt(m_stops.at(i), m_colorList.at(i));
 
+    p.setBrush(Qt::NoBrush);
+    p.setPen(QColor(0x444444));
+    p.drawRect(9, 31, width() - 14, height() - 32);
+
     p.setBrush(linearGradient);
-    p.drawRoundedRect(8, 30, width() - 16, height() - 32, 5, 5);
+    p.setPen(QColor(0x222222));
+    p.drawRect(8, 30, width() - 14, height() - 32);
+    p.setPen(QColor(255, 255, 255, 40));
+    p.drawRect(9, 31, width() - 16, height() - 34);
+
+    p.setPen(Qt::black);
 
     for (int i =0; i < m_colorList.size(); i++) {
         int localYOffset = 0;
         QColor arrowColor(Qt::black);
         if (i == currentColorIndex()) {
             localYOffset = m_yOffset;
-            arrowColor = QColor("#cdcdcd");
+            arrowColor = QColor(0xeeeeee);
         }
         p.setPen(arrowColor);
         if (i == 0 || i == (m_colorList.size() - 1))
             localYOffset = 0;
 
-        int pos = qreal((width() - 20)) * m_stops.at(i) + 10;
+        int pos = qreal((width() - 16)) * m_stops.at(i) + 9;
         p.setBrush(arrowColor);
         QVector<QPointF> points;
-        points.append(QPointF(pos + 0.5, 28 + localYOffset)); //triangle
-        points.append(QPointF(pos - 3.5, 22 + localYOffset));
-        points.append(QPointF(pos + 4.5, 22 + localYOffset));
+        points.append(QPointF(pos + 0.5, 28.5 + localYOffset)); //triangle
+        points.append(QPointF(pos - 3.5, 22.5 + localYOffset));
+        points.append(QPointF(pos + 4.5, 22.5 + localYOffset));
+        p.setRenderHint(QPainter::Antialiasing, true);
         p.drawPolygon(points);
-
-        if (i == currentColorIndex())
-            p.fillRect(pos - 6, 9 + localYOffset, 13, 13, invertColor(m_colorList.at(i)));
-
-        p.fillRect(pos - 4, 11 + localYOffset, 9, 9, m_colorList.at(i));
+        p.setRenderHint(QPainter::Antialiasing, false);
+        p.setBrush(Qt::NoBrush);
+        p.setPen(QColor(0x424242));
+        p.drawRect(pos - 4, 9 + localYOffset, 10, 11);
+        p.setPen(QColor(0x141414));
+        p.setBrush(m_colorList.at(i));
+        p.drawRect(pos - 5, 8 + localYOffset, 10, 11);
+        p.setBrush(Qt::NoBrush);
+        p.setPen(QColor(255, 255, 255, 30));
+        p.drawRect(pos - 4, 9 + localYOffset, 8, 9);
     }
 }
 
@@ -576,7 +607,7 @@ void GradientLine::mousePressEvent(QMouseEvent *event)
         m_dragActive = false;
         if ((yPos > 10) && (yPos < 30))
             for (int i =0; i < m_stops.size(); i++) {
-            int pos = qreal((width() - 20)) * m_stops.at(i) + 10;
+            int pos = qreal((width() - 16)) * m_stops.at(i) + 9;
             if (((xPos + 5) > pos) && ((xPos - 5) < pos)) {
                 draggedIndex = i;
                 m_dragActive = true;
@@ -596,7 +627,7 @@ void GradientLine::mouseReleaseEvent(QMouseEvent *event)
 {
     if (event->button() == Qt::LeftButton) {
         if (m_dragActive == false && m_create) {
-            qreal stopPos = qreal(event->pos().x() - 10) / qreal((width() - 20));
+            qreal stopPos = qreal(event->pos().x() - 9) / qreal((width() - 15));
             int index = -1;
             for (int i =0; i < m_stops.size() - 1; i++) {
                 if ((stopPos > m_stops.at(i)) && (index == -1))
@@ -621,11 +652,10 @@ void GradientLine::mouseMoveEvent(QMouseEvent *event)
 {
     if (m_dragActive) {
         int xPos = event->pos().x();
-        int pos = qreal((width() - 20)) * m_stops.at(currentColorIndex()) + 10;
+        int pos = qreal((width() - 20)) * m_stops.at(currentColorIndex()) + 8;
         int offset = m_dragOff ? 2 : 20;
         if (xPos < pos + offset && xPos > pos - offset) {
             m_dragOff = false;
-            qDebug() << xPos;
             int xDistance = event->pos().x() - m_dragStart.x();
             qreal distance = qreal(xDistance) / qreal((width() - 20));
             qreal newStop  = m_stops.at(currentColorIndex()) + distance;
diff --git a/src/plugins/qmldesigner/designercore/filemanager/changepropertyvisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/changepropertyvisitor.cpp
index 9192e95ed8a7ac5e581a7337c46bbdacde45892a..2256a342d526907d4898419f273615904da6c40c 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/changepropertyvisitor.cpp
+++ b/src/plugins/qmldesigner/designercore/filemanager/changepropertyvisitor.cpp
@@ -196,6 +196,7 @@ void ChangePropertyVisitor::insertIntoArray(QmlJS::AST::UiArrayBinding *ast)
 
     UiObjectMember *lastMember = 0;
     for (UiArrayMemberList *iter = ast->members; iter; iter = iter->next) {
+        lastMember = iter->member;
     }
 
     if (!lastMember)
diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp
index b08bb5ba3923e0aa52e4b7691c1d99d112ba8136..1e82fc64e0e8fe04b456bf67d6ea0f08bfddf1fc 100644
--- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp
+++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp
@@ -67,10 +67,6 @@ GettingStartedWelcomePageWidget::GettingStartedWelcomePageWidget(QWidget *parent
 {
     ui->setupUi(this);
 
-#ifndef QTCREATOR_WITH_QML
-    ui->demosExamplesFrameQml->hide();
-#endif
-
     ui->didYouKnowTextBrowser->viewport()->setAutoFillBackground(false);
 
     connect(ui->tutorialTreeWidget, SIGNAL(activated(QString)), SLOT(slotOpenHelpPage(const QString&)));
@@ -82,11 +78,9 @@ GettingStartedWelcomePageWidget::GettingStartedWelcomePageWidget(QWidget *parent
     ui->tutorialTreeWidget->addItem(tr("Creating a Qt C++ Application"),
                                         QLatin1String("qthelp://com.nokia.qtcreator/doc/creator-writing-program.html?view=split"));
     ui->tutorialTreeWidget->addItem(tr("Creating a Mobile Application"),
-                                        QLatin1String("qthelp://com.nokia.qtcreator/doc/creator-mobile-example?view=split"));
-#ifdef QTCREATOR_WITH_QML
+                                        QLatin1String("qthelp://com.nokia.qtcreator/doc/creator-mobile-example.html?view=split"));
     ui->tutorialTreeWidget->addItem(tr("Creating a Qt Quick Application"),
                                         QLatin1String("qthelp://com.nokia.qtcreator/doc/creator-qml-application.html?view=split"));
-#endif
 
     srand(QDateTime::currentDateTime().toTime_t());
     QStringList tips = tipsOfTheDay();
diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.ui b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.ui
index 833f644622ad3e637961544bd2769891ec35fc9e..9f03d493557ab5546e66d5c78e71cd75d7d3fe7c 100644
--- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.ui
+++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.ui
@@ -119,7 +119,7 @@
        </widget>
       </item>
       <item row="1" column="1">
-       <widget class="QFrame" name="demosExamplesFrameQml">
+       <widget class="QFrame" name="demosExamplesFrame_2">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
           <horstretch>0</horstretch>
@@ -137,7 +137,7 @@
         </property>
         <layout class="QVBoxLayout" name="verticalLayout_3">
          <item>
-          <widget class="Utils::WelcomeModeLabel" name="demoTitleLabeldemosExamplesFrameQml">
+          <widget class="Utils::WelcomeModeLabel" name="demoTitleLabel_2">
            <property name="text">
             <string>Explore Qt Quick Examples</string>
            </property>
diff --git a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp
index bdf6e5e358520347f915218e4ed1e6217d637bcb..b6bf6e44b463cde6a18a133705a51ef8606457e2 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp
@@ -379,7 +379,9 @@ void QemuRuntimeManager::startRuntime()
         m_qemuProcess->setProcessEnvironment(env);
         m_qemuProcess->setWorkingDirectory(rt.m_root);
 
-        const QString app = root % QLatin1String("madlib/") % rt.m_bin
+        const QString app =(QFileInfo(rt.m_bin).isRelative()
+            ? root % QLatin1String("madlib/") % rt.m_bin // Fremantle.
+            : rt.m_bin)                                  // Haramattan.
 #ifdef Q_OS_WIN
             % QLatin1String(".exe")
 #endif
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp
index 5278d21299c1d330b4d4d7cb6da0fb330516bb01..0d87d9deae3e0b53adcf4cc9dc7c85b2eea03937 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp
@@ -109,6 +109,7 @@ S60DeviceRunConfigurationWidget::S60DeviceRunConfigurationWidget(
     connect(SymbianUtils::SymbianDeviceManager::instance(), SIGNAL(updated()),
             this, SLOT(updateSerialDevices()));
     // Serial devices control
+    m_serialPortsCombo->setSizeAdjustPolicy(QComboBox::AdjustToContents);
     connect(m_serialPortsCombo, SIGNAL(activated(int)), this, SLOT(setSerialPort(int)));
     QHBoxLayout *serialPortHBoxLayout = new QHBoxLayout;
     serialPortHBoxLayout->addWidget(m_serialPortsCombo);
diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
index 9c798ef195efab4f0ff34d0fb448e4d89f7f7fcb..160ebef9caba7a6fee134908e5f32778b2b985ea 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.cpp
+++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
@@ -995,7 +995,7 @@ void Qt4ProFileNode::applyAsyncEvaluate()
     m_project->decrementPendingEvaluateFutures();
 }
 
-Qt4ProjectType proFileTemplateTypeToProjectType(ProFileEvaluator::TemplateType type)
+static Qt4ProjectType proFileTemplateTypeToProjectType(ProFileEvaluator::TemplateType type)
 {
     switch (type) {
     case ProFileEvaluator::TT_Unknown:
diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.pro b/src/plugins/qt4projectmanager/qt4projectmanager.pro
index 448067a9e85c7b191a562237e505ae31bb0aafc1..f4c492ac33b7189a631d9b4a1d4caa263de35912 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanager.pro
+++ b/src/plugins/qt4projectmanager/qt4projectmanager.pro
@@ -96,7 +96,7 @@ FORMS += makestep.ui \
     wizards/targetsetuppage.ui
 RESOURCES += qt4projectmanager.qrc \
     wizards/wizards.qrc
-DEFINES += PROPARSER_THREAD_SAFE
+DEFINES += PROPARSER_THREAD_SAFE PROEVALUATOR_THREAD_SAFE
 include(../../shared/proparser/proparser.pri)
 include(qt-s60/qt-s60.pri)
 include(qt-maemo/qt-maemo.pri)
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index ef7e456461eb04dd8fb1f0593a52a87eb9f8a583..1799dde4ba80b43ef444fb1b4bcb9428f4d80692 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -1113,6 +1113,7 @@ Core::IEditor * SubversionPlugin::showOutputInEditor(const QString& title, const
     SubversionEditor *e = qobject_cast<SubversionEditor*>(editor->widget());
     if (!e)
         return 0;
+    e->setForceReadOnly(true);
     s.replace(QLatin1Char(' '), QLatin1Char('_'));
     e->setSuggestedFileName(s);
     if (!source.isEmpty())
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index b4193e4fe6b4abd2ae2164d4c7a92e8ce086ec8e..1993ff7918d48fc4093d1ad045726fc5c017c0e3 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -1190,7 +1190,6 @@ void BaseTextEditor::keyPressEvent(QKeyEvent *e)
                 break;
             pos = cpos;
         }
-        setTextCursor(textCursor()); // make cursor visible
         return;
     } else switch (e->key()) {
 
@@ -1234,7 +1233,6 @@ void BaseTextEditor::keyPressEvent(QKeyEvent *e)
                                | Qt::MetaModifier)) == Qt::NoModifier
             && !textCursor().hasSelection()) {
             handleBackspaceKey();
-            setTextCursor(textCursor()); // make cursor visible
             e->accept();
             return;
         }
@@ -3525,7 +3523,7 @@ void BaseTextEditor::extraAreaMouseEvent(QMouseEvent *e)
                     toggleBlockVisible(c);
                     d->moveCursorVisible(false);
                 }
-            } else if (e->pos().x() > markWidth) {
+            } else if (d->m_lineNumbersVisible && e->pos().x() > markWidth) {
                 QTextCursor selection = cursor;
                 selection.setVisualNavigation(true);
                 d->extraAreaSelectionAnchorBlockNumber = selection.blockNumber();
@@ -3691,6 +3689,8 @@ void BaseTextEditor::handleHomeKey(bool anchor)
     setTextCursor(cursor);
 }
 
+
+#define SET_AND_RETURN(cursor) setTextCursor(cursor); return  // make cursor visible and reset vertical x movement
 void BaseTextEditor::handleBackspaceKey()
 {
     QTextCursor cursor = textCursor();
@@ -3710,7 +3710,7 @@ void BaseTextEditor::handleBackspaceKey()
 
     if (!tabSettings.m_smartBackspace) {
         cursor.deletePreviousChar();
-        return;
+        SET_AND_RETURN(cursor);
     }
 
     QTextBlock currentBlock = cursor.block();
@@ -3718,7 +3718,7 @@ void BaseTextEditor::handleBackspaceKey()
     const QString blockText = currentBlock.text();
     if (cursor.atBlockStart() || tabSettings.firstNonSpace(blockText) < positionInBlock) {
         cursor.deletePreviousChar();
-        return;
+        SET_AND_RETURN(cursor);
     }
 
     int previousIndent = 0;
@@ -3737,10 +3737,11 @@ void BaseTextEditor::handleBackspaceKey()
             cursor.setPosition(currentBlock.position(), QTextCursor::KeepAnchor);
             cursor.insertText(tabSettings.indentationString(previousNonEmptyBlockText));
             cursor.endEditBlock();
-            return;
+            SET_AND_RETURN(cursor);
         }
     }
     cursor.deletePreviousChar();
+    SET_AND_RETURN(cursor);
 }
 
 void BaseTextEditor::wheelEvent(QWheelEvent *e)
diff --git a/src/plugins/vcsbase/VCSBase.mimetypes.xml b/src/plugins/vcsbase/VCSBase.mimetypes.xml
index 501171c1eec1c8b9bbe781eec3b2ece08bc221d0..73203bfdd83160fda6eb9e9447b1fcfc3259c9c3 100644
--- a/src/plugins/vcsbase/VCSBase.mimetypes.xml
+++ b/src/plugins/vcsbase/VCSBase.mimetypes.xml
@@ -11,7 +11,7 @@
 	     at a C++ patch.
 	  -->
         <magic priority="10">
-           <match value="+++ " type="string" offset="0:10000"/>
+           <match value="&#x0a;+++ " type="string" offset="0:10000"/>
         </magic>
     </mime-type>
 </mime-info>
diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp
index 815a062247577e3b54652e266ee1d4ad800c99b4..2e6520c00b28b1824702a9a87a1c8f2d85b9dadb 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.cpp
+++ b/src/plugins/vcsbase/vcsbaseeditor.cpp
@@ -82,7 +82,8 @@ public:
     Core::IEditor *duplicate(QWidget * /*parent*/) { return 0; }
     QString id() const { return m_id; }
 
-    bool isTemporary() const { return true; }
+    bool isTemporary() const { return m_temporary; }
+    void setTemporary(bool t) { m_temporary = t; }
 
 signals:
     void describeRequested(const QString &source, const QString &change);
@@ -91,12 +92,14 @@ signals:
 private:
     QString m_id;
     QList<int> m_context;
+    bool m_temporary;
 };
 
 VCSBaseEditorEditable::VCSBaseEditorEditable(VCSBaseEditor *editor,
                                              const VCSBaseEditorParameters *type)  :
     BaseTextEditorEditable(editor),
-    m_id(type->id)
+    m_id(type->id),
+    m_temporary(false)
 {
     Core::UniqueIDManager *uidm = Core::UniqueIDManager::instance();
     m_context << uidm->uniqueIdentifier(QLatin1String(type->context))
@@ -118,8 +121,6 @@ public:
     virtual QWidget *toolBar()                { return m_toolBar; }
     QComboBox *diffFileBrowseComboBox() const  { return m_diffFileBrowseComboBox; }
 
-    bool isTemporary() const { return true; }
-
 private:
     QToolBar *m_toolBar;
     QComboBox *m_diffFileBrowseComboBox;
@@ -181,7 +182,6 @@ VCSBaseEditor::VCSBaseEditor(const VCSBaseEditorParameters *type, QWidget *paren
     if (VCSBase::Constants::Internal::debug)
         qDebug() << "VCSBaseEditor::VCSBaseEditor" << type->type << type->id;
 
-    setReadOnly(true);
     viewport()->setMouseTracking(true);
     setBaseTextDocument(new Internal::VCSBaseTextDocument);
     setMimeType(QLatin1String(d->m_parameters->mimeType));
@@ -212,6 +212,23 @@ VCSBaseEditor::~VCSBaseEditor()
     delete d;
 }
 
+void VCSBaseEditor::setForceReadOnly(bool b)
+{
+    Internal::VCSBaseTextDocument *vbd = qobject_cast<Internal::VCSBaseTextDocument*>(baseTextDocument());
+    VCSBaseEditorEditable *eda = qobject_cast<VCSBaseEditorEditable *>(editableInterface());
+    QTC_ASSERT(vbd != 0 && eda != 0, return);
+    setReadOnly(b);
+    vbd->setForceReadOnly(b);
+    eda->setTemporary(b);
+}
+
+bool VCSBaseEditor::isForceReadOnly() const
+{
+    const Internal::VCSBaseTextDocument *vbd = qobject_cast<const Internal::VCSBaseTextDocument*>(baseTextDocument());
+    QTC_ASSERT(vbd, return false);
+    return vbd->isForceReadOnly();
+}
+
 QString VCSBaseEditor::source() const
 {
     return d->m_source;
@@ -502,7 +519,9 @@ void VCSBaseEditor::mouseDoubleClickEvent(QMouseEvent *e)
 
 void VCSBaseEditor::keyPressEvent(QKeyEvent *e)
 {
-    if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) {
+    // Do not intercept return in editable patches.
+    if (d->m_parameters->type == DiffOutput && isReadOnly()
+        && (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return)) {
         jumpToChangeFromDiff(textCursor());
         return;
     }
diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h
index c6062298bd37b668a086b480d77f4d36a51a1523..19aa82ab7af55a84c503268f19929d91ccd910be 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.h
+++ b/src/plugins/vcsbase/vcsbaseeditor.h
@@ -105,6 +105,13 @@ public:
 
     virtual ~VCSBaseEditor();
 
+    /* Force read-only: Make it a read-only, temporary file.
+     * Should be set to true by version control views. It is not on
+     * by default since it should not  trigger when patches are opened as
+     * files. */
+    void setForceReadOnly(bool b);
+    bool isForceReadOnly() const;
+
     QString source() const;
     void setSource(const  QString &source);
 
diff --git a/src/plugins/vcsbase/vcsbasetextdocument.cpp b/src/plugins/vcsbase/vcsbasetextdocument.cpp
index 3a5590e145d375afb74d78dd7a10aad180e2c563..6a409b8fb38515f23e0b0ad86c9bf90582c6aef5 100644
--- a/src/plugins/vcsbase/vcsbasetextdocument.cpp
+++ b/src/plugins/vcsbase/vcsbasetextdocument.cpp
@@ -31,16 +31,31 @@
 
 using namespace VCSBase::Internal;
 
-VCSBaseTextDocument::VCSBaseTextDocument()
+VCSBaseTextDocument::VCSBaseTextDocument() :
+    m_forceReadOnly(false)
 {
 }
 
 bool VCSBaseTextDocument::isReadOnly() const
 {
-    return true;
+    return m_forceReadOnly ?
+            true :
+            TextEditor::BaseTextDocument::isReadOnly();
 }
 
 bool VCSBaseTextDocument::isModified() const
 {
-    return false;
+    return m_forceReadOnly ?
+            false :
+            TextEditor::BaseTextDocument::isModified();
+}
+
+void VCSBaseTextDocument::setForceReadOnly(bool b)
+{
+    m_forceReadOnly = b;
+}
+
+bool VCSBaseTextDocument::isForceReadOnly() const
+{
+    return m_forceReadOnly;
 }
diff --git a/src/plugins/vcsbase/vcsbasetextdocument.h b/src/plugins/vcsbase/vcsbasetextdocument.h
index f7bdd403f1ca5639abc31fccf264284136093be5..46845f080449e31d144b9ea96726e1993576daa6 100644
--- a/src/plugins/vcsbase/vcsbasetextdocument.h
+++ b/src/plugins/vcsbase/vcsbasetextdocument.h
@@ -44,6 +44,12 @@ public:
 
     bool isReadOnly() const;
     bool isModified() const;
+
+    void setForceReadOnly(bool b);
+    bool isForceReadOnly() const;
+
+private:
+    bool m_forceReadOnly;
 };
 
 } // namespace Internal
diff --git a/src/plugins/welcome/welcomemode.h b/src/plugins/welcome/welcomemode.h
index 3779bf434bc02c22a2447eba3317b9e6c5ca8fb7..42acdb73785bdfb9e529e8d2dd43c103c445c2e9 100644
--- a/src/plugins/welcome/welcomemode.h
+++ b/src/plugins/welcome/welcomemode.h
@@ -62,7 +62,7 @@ public:
     QString id() const;
     QList<int> context() const;
     void activated();
-    QString contextHelpId() const { return QLatin1String("Qt Creator"); }
+    QString contextHelpId() const { return QLatin1String("Qt Creator Manual"); }
     void initPlugins();
 
 private slots:
diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp
index a7ad13bbf00a6247a2bd9f49179338f3a5f549c9..c33069b90d692734650f8ee0d236b33f74769013 100644
--- a/src/shared/proparser/profileevaluator.cpp
+++ b/src/shared/proparser/profileevaluator.cpp
@@ -153,6 +153,10 @@ ProFileOption::ProFileOption()
 #endif
 
     cache = 0;
+
+#ifdef PROEVALUATOR_THREAD_SAFE
+    base_inProgress = false;
+#endif
 }
 
 ProFileOption::~ProFileOption()
@@ -2032,7 +2036,21 @@ ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::visitProFile(P
 
         if (m_parsePreAndPostFiles) {
 
+#ifdef PROEVALUATOR_THREAD_SAFE
+          {
+            QMutexLocker locker(&m_option->mutex);
+            if (m_option->base_inProgress) {
+                QThreadPool::globalInstance()->releaseThread();
+                m_option->cond.wait(&m_option->mutex);
+                QThreadPool::globalInstance()->reserveThread();
+            } else
+#endif
             if (m_option->base_valuemap.isEmpty()) {
+#ifdef PROEVALUATOR_THREAD_SAFE
+                m_option->base_inProgress = true;
+                locker.unlock();
+#endif
+
                 // ### init QMAKE_QMAKE, QMAKE_SH
                 // ### init QMAKE_EXT_{C,H,CPP,OBJ}
                 // ### init TEMPLATE_PREFIX
@@ -2139,7 +2157,16 @@ ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::visitProFile(P
 
                 evaluateFeatureFile(QLatin1String("default_pre.prf"),
                                     &m_option->base_valuemap, &m_option->base_functions);
+
+#ifdef PROEVALUATOR_THREAD_SAFE
+                locker.relock();
+                m_option->base_inProgress = false;
+                m_option->cond.wakeAll();
+#endif
             }
+#ifdef PROEVALUATOR_THREAD_SAFE
+          }
+#endif
 
             m_valuemapStack.top() = m_option->base_valuemap;
             m_functionDefs = m_option->base_functions;
diff --git a/src/shared/proparser/profileevaluator.h b/src/shared/proparser/profileevaluator.h
index 58f682e6a9c5349e5ae23a46b6e7bb2ff7a293b5..60890f5f3d960cc938e20858791db4fa807562a3 100644
--- a/src/shared/proparser/profileevaluator.h
+++ b/src/shared/proparser/profileevaluator.h
@@ -189,6 +189,11 @@ struct ProFileOption
     ProFileEvaluator::FunctionDefs base_functions;
     QStringList feature_roots;
     QString qmakespec_name;
+#ifdef PROEVALUATOR_THREAD_SAFE
+    QMutex mutex;
+    QWaitCondition cond;
+    bool base_inProgress;
+#endif
 };
 
 QT_END_NAMESPACE
diff --git a/src/shared/symbianutils/launcher.cpp b/src/shared/symbianutils/launcher.cpp
index 25dc3959350bd9b418ed2922d63074840cad5515..0948ca02c92e98dcab05b1c036f6bffc2c8eaaf6 100644
--- a/src/shared/symbianutils/launcher.cpp
+++ b/src/shared/symbianutils/launcher.cpp
@@ -363,7 +363,7 @@ void Launcher::handleResult(const TrkResult &result)
             logMessage("TEXT TRACE: " + msg);
             }
         } else {
-            logMessage("APPLICATION OUTPUT: " + result.data);
+            logMessage("APPLICATION OUTPUT: " + stringFromArray(result.data));
             msg = result.data;
         }
         msg.replace("\r\n", "\n");
@@ -446,7 +446,10 @@ void Launcher::handleResult(const TrkResult &result)
             if (itemType == 0 // process
                 && result.data.size() >= 10
                 && d->m_session.pid == extractInt(result.data.data() + 6)) {
-                    copyFileFromRemote();
+                    if (d->m_startupActions & ActionDownload)
+                        copyFileFromRemote();
+                    else
+                        disconnectTrk();
             }
             break;
         }
diff --git a/src/shared/symbianutils/trkdevice.cpp b/src/shared/symbianutils/trkdevice.cpp
index 72d91723a8b1a29c3865f2d79eea81617a008ad9..35ec22790afaccb3909c4278eaafc17bc0e31448 100644
--- a/src/shared/symbianutils/trkdevice.cpp
+++ b/src/shared/symbianutils/trkdevice.cpp
@@ -624,10 +624,11 @@ private:
     void readMessages();
 
     QByteArray m_trkReadBuffer;
+    bool linkEstablishmentMode;
 };
 
 ReaderThreadBase::ReaderThreadBase(const QSharedPointer<DeviceContext> &context) :
-    m_context(context)
+    m_context(context), linkEstablishmentMode(true)
 {
     static const int trkResultMetaId = qRegisterMetaType<trk::TrkResult>();
     Q_UNUSED(trkResultMetaId)
@@ -650,7 +651,7 @@ void ReaderThreadBase::readMessages()
 {
     TrkResult r;
     QByteArray rawData;
-    while (extractResult(&m_trkReadBuffer, m_context->serialFrame, &r, &rawData)) {
+    while (extractResult(&m_trkReadBuffer, m_context->serialFrame, &r, linkEstablishmentMode, &rawData)) {
         emit messageReceived(r, rawData);
     }
 }
diff --git a/src/shared/symbianutils/trkutils.cpp b/src/shared/symbianutils/trkutils.cpp
index 40c448d02f3b642e7199184988fc7298e4b0636a..fd9978c736ff4364d92a00e6fa1825bd07a093e7 100644
--- a/src/shared/symbianutils/trkutils.cpp
+++ b/src/shared/symbianutils/trkutils.cpp
@@ -287,20 +287,30 @@ ushort isValidTrkResult(const QByteArray &buffer, bool serialFrame, ushort& mux)
     return firstDelimiterPos != -1 ? firstDelimiterPos : buffer.size();
 }
 
-bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, QByteArray *rawData)
+bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, bool &linkEstablishmentMode, QByteArray *rawData)
 {
     result->clear();
     if(rawData)
         rawData->clear();
-    const ushort len = isValidTrkResult(*buffer, serialFrame, result->multiplex);
-    if (!len)
-        return false;
+    ushort len = isValidTrkResult(*buffer, serialFrame, result->multiplex);
     // handle receiving application output, which is not a regular command
     const int delimiterPos = serialFrame ? 4 : 0;
+    if (linkEstablishmentMode) {
+        //when "hot connecting" a device, we can receive partial frames.
+        //this code resyncs by discarding data until a TRK frame is found
+        while (buffer->length() > delimiterPos
+               && result->multiplex != MuxTextTrace
+               && !(result->multiplex == MuxTrk && buffer->at(delimiterPos) == 0x7e)) {
+            buffer->remove(0,1);
+            len = isValidTrkResult(*buffer, serialFrame, result->multiplex);
+        }
+    }
+    if (!len)
+        return false;
     if (buffer->at(delimiterPos) != 0x7e) {
         result->isDebugOutput = true;
         result->data = buffer->mid(delimiterPos, len);
-        *buffer->remove(0, delimiterPos + len);
+        buffer->remove(0, delimiterPos + len);
         return true;
     }
     // FIXME: what happens if the length contains 0xfe?
@@ -308,7 +318,7 @@ bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, QByt
     const QByteArray data = decode7d(buffer->mid(delimiterPos + 1, len - 2));
     if(rawData)
         *rawData = data;
-    *buffer->remove(0, delimiterPos + len);
+    buffer->remove(0, delimiterPos + len);
 
     byte sum = 0;
     for (int i = 0; i < data.size(); ++i) // 3 = 2 * 0xfe + sum
@@ -323,6 +333,7 @@ bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, QByt
     //logMessage("   CURR DATA: " << stringFromArray(data));
     //QByteArray prefix = "READ BUF:                                       ";
     //logMessage((prefix + "HEADER: " + stringFromArray(header).toLatin1()).data());
+    linkEstablishmentMode = false; //have received a good TRK packet, therefore in sync
     return true;
 }
 
diff --git a/src/shared/symbianutils/trkutils_p.h b/src/shared/symbianutils/trkutils_p.h
index ce81076e41a036bfef04deb3932f0ec77a5fac04..7a147064da6a0a9f6e62bece2d3c3d33f52a30cc 100644
--- a/src/shared/symbianutils/trkutils_p.h
+++ b/src/shared/symbianutils/trkutils_p.h
@@ -43,7 +43,7 @@ void appendDateTime(QByteArray *ba, QDateTime dateTime, Endianness = TargetByteO
 // returns a QByteArray containing optionally
 // the serial frame [0x01 0x90 <len>] and 0x7e encoded7d(ba) 0x7e
 QByteArray frameMessage(byte command, byte token, const QByteArray &data, bool serialFrame);
-bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *r, QByteArray *rawData = 0);
+bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *r, bool& linkEstablishmentMode, QByteArray *rawData = 0);
 
 } // namespace trk
 
diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.cpp b/tests/auto/qml/qmldesigner/coretests/testcore.cpp
index e0ffeb88cf08a1955febd47417752b44406bf431..89429e2a92cdb48e7a819392c3f0b7607c1a9c37 100644
--- a/tests/auto/qml/qmldesigner/coretests/testcore.cpp
+++ b/tests/auto/qml/qmldesigner/coretests/testcore.cpp
@@ -1106,8 +1106,10 @@ void TestCore::testBasicStates()
     // state2 -> state1
     view->setCurrentState(state1);
     QCOMPARE(view->currentState(), state1);
-    QCOMPARE(view->methodCalls().size(), ++expectedViewMethodCount);
-    QCOMPARE(view->methodCalls().last(), TestView::MethodCall("stateChanged", QStringList() << "state1" << "state2"));
+    expectedViewMethodCount += 2; // Since commit fa640f66db we're always going through the base state
+    QCOMPARE(view->methodCalls().size(), expectedViewMethodCount);
+    QCOMPARE(view->methodCalls().at(view->methodCalls().size()-2), TestView::MethodCall("stateChanged", QStringList() << QString() << "state2"));
+    QCOMPARE(view->methodCalls().at(view->methodCalls().size()-1), TestView::MethodCall("stateChanged", QStringList() << "state1" << QString()));
     QCOMPARE(rect2Instance.property("x").toInt(), 0);
 
     // state1 -> baseState
diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.h b/tests/auto/qml/qmldesigner/coretests/testcore.h
index 5e81e3aabe0e1983bcf025fb38e15d19cf62cb52..f3cbc8ebe8e6ae725d0165015d6eab96202f6f88 100644
--- a/tests/auto/qml/qmldesigner/coretests/testcore.h
+++ b/tests/auto/qml/qmldesigner/coretests/testcore.h
@@ -164,7 +164,6 @@ private slots:
     void testCopyModelRewriter1();
     void testCopyModelRewriter2();
     void testSubComponentManager();
-    void testComponentLoadingTabWidget();
     void testAnchorsAndRewriting();
     void testAnchorsAndRewritingCenter();