diff -ruN uppsrc/ide/ide.lay uppsrc/ide/ide.lay
--- uppsrc/ide/ide.lay	2013-05-06 05:42:00 +0400
+++ uppsrc/ide/ide.lay	2013-05-23 13:47:34 +0400
@@ -627,12 +627,10 @@
 	ITEM(Button, cancel, SetLabel(t_("Cancel")).LeftPosZ(328, 64).TopPosZ(60, 24))
 END_LAYOUT
 
-LAYOUT(QtfLayout, 964, 584)
-	ITEM(DocEdit, text, LeftPosZ(4, 348).TopPosZ(28, 204))
-	ITEM(RichTextCtrl, qtf, LeftPosZ(4, 348).VSizePosZ(236, 8))
-	ITEM(RichTextView, help, HSizePosZ(356, 4).VSizePosZ(4, 8))
-	ITEM(Button, editor, SetLabel(t_("Editor")).LeftPosZ(296, 56).TopPosZ(4, 20))
-	ITEM(Button, clear, SetLabel(t_("Clear")).LeftPosZ(232, 56).TopPosZ(4, 20))
-	ITEM(Button, copy, SetLabel(t_("Copy and close")).LeftPosZ(128, 100).TopPosZ(4, 20))
+LAYOUT(QtfLayout, 356, 236)
+	ITEM(DocEdit, text, HSizePosZ(0, 0).VSizePosZ(24, 0))
+	ITEM(Button, editor, SetLabel(t_("Editor")).RightPosZ(0, 56).TopPosZ(0, 20))
+	ITEM(Button, clear, SetLabel(t_("Clear")).RightPosZ(60, 56).TopPosZ(0, 20))
+	ITEM(Button, copy, SetLabel(t_("Copy and close")).RightPosZ(120, 100).TopPosZ(0, 20))
 END_LAYOUT
 
diff -ruN uppsrc/ide/Qtf.cpp uppsrc/ide/Qtf.cpp
--- uppsrc/ide/Qtf.cpp	2010-09-09 09:29:30 +0400
+++ uppsrc/ide/Qtf.cpp	2013-05-25 06:58:45 +0400
@@ -5,7 +5,7 @@
 	RegisterGlobalConfig("QTF-designer-editor");
 }
 
-class QtfDlg : public WithQtfLayout<TopWindow> {
+class QtfDlg : public TopWindow {
 	typedef QtfDlg CLASSNAME;
 
 	void Text();
@@ -14,6 +14,11 @@
 	void Editor();
 
 public:
+	Splitter leftSplit, mainSplit;
+	WithQtfLayout<ParentCtrl> qtfText;
+	RichTextCtrl qtf;
+	RichTextView help;
+
 	void Serialize(Stream& s);
 
 	QtfDlg();
@@ -21,18 +26,18 @@
 
 void QtfDlg::Text()
 {
-	qtf <<= ~text;
+	qtf <<= ~qtfText.text;
 }
 
 void QtfDlg::Clear()
 {
-	text.Clear();
+	qtfText.text.Clear();
 	Text();
 }
 
 void QtfDlg::Copy()
 {
-	WriteClipboardText(~text);
+	WriteClipboardText(~qtfText.text);
 	Break();
 }
 
@@ -60,10 +65,10 @@
 {
 	QtfDlgEditor dlg;
 	LoadFromGlobal(dlg, "QTF-designer-editor");
-	dlg.editor.SetQTF((String)~text);
+	dlg.editor.SetQTF((String)~qtfText.text);
 	dlg.Run();
 	if(PromptYesNo("Use the text?")) {
-		text <<= AsQTF(dlg.editor.Get(),
+		qtfText.text <<= AsQTF(dlg.editor.Get(),
 		               CHARSET_UTF8, QTF_BODY|QTF_NOSTYLES|QTF_NOCHARSET|QTF_NOLANG);
 		Text();
 	}
@@ -72,31 +77,39 @@
 
 QtfDlg::QtfDlg()
 {
-	CtrlLayout(*this, "QTF designer");
-	text <<= THISBACK(Text);
+	Title("QTF designer");
+	CtrlLayout(qtfText);
+	qtfText.text <<= THISBACK(Text);
 	qtf.SetFrame(ViewFrame());
 	qtf.Background(SColorPaper);
 	Sizeable().Zoomable();
 	Rect r = GetWorkArea();
 	SetRect(0, 0, r.GetWidth() - 100, r.GetHeight() - 200);
+	SetMinSize(Size(min(640, r.GetWidth() - 100), min(480, r.GetHeight() - 200)));
 
 	String path = AppendFileName(AppendFileName(PackageDirectory("RichText"), "srcdoc.tpp"), "QTF$en-us.tpp");
 	if(FileExists(path))
 		help.SetQTF(ReadTopic(LoadFile(path)).text);
 	else
 		help <<= "[= &&&QTF documentation not found";
-	
-	clear <<= THISBACK(Clear);
-	copy <<= THISBACK(Copy);
-	editor <<= THISBACK(Editor);
+
+	qtfText.clear <<= THISBACK(Clear);
+	qtfText.copy <<= THISBACK(Copy);
+	qtfText.editor <<= THISBACK(Editor);
+
+	leftSplit.Vert(qtfText, qtf).SetPos(4000);
+	mainSplit.Horz(leftSplit, help).SetPos(3500);
+	Add(mainSplit.HSizePosZ(4, 4).VSizePosZ(4, 4));
 }
 
 void QtfDlg::Serialize(Stream& s)
 {
-	int version = 0;
+	int version = 1;
 	s / version;
-	s % text;
+	s % qtfText.text;
 	SerializePlacement(s);
+	leftSplit.Serialize(s);
+	mainSplit.Serialize(s);
 	Text();
 }
 
@@ -107,14 +120,14 @@
 	int l,h;
 	bool sel=editor.GetSelection(l,h);
 	if(qtfsel && sel){
-		dlg.text<<=(~editor).ToString().Mid(l,h-l);
-		dlg.copy.SetLabel("Apply and close");
+		dlg.qtfText.text<<=(~editor).ToString().Mid(l,h-l);
+		dlg.qtfText.copy.SetLabel("Apply and close");
 		dlg.Run();
 		editor.Remove(l,h-l);
-		editor.Insert(l,(~dlg.text).ToString());
+		editor.Insert(l,(~dlg.qtfText.text).ToString());
 	}
 	else{
-		dlg.copy.SetLabel("Copy and close");
+		dlg.qtfText.copy.SetLabel("Copy and close");
 		dlg.Run();
 	}
 	StoreToGlobal(dlg, "QTF-designer");
