diff --git a/examples/AddressBookXML/AddressBook.cpp b/examples/AddressBookXML/AddressBook.cpp index 8a988e708..05b6ba98a 100644 --- a/examples/AddressBookXML/AddressBook.cpp +++ b/examples/AddressBookXML/AddressBook.cpp @@ -41,34 +41,34 @@ AddressBook::AddressBook() tab.Add(search, "Search"); ActiveFocus(search.name); search.oname = true; - search.oname <<= search.osurname <<= search.oaddress - <<= search.oemail <<= THISBACK(SetupSearch); + search.oname ^= search.osurname ^= search.oaddress + ^= search.oemail ^= THISFN(SetupSearch); array.AddColumn("Name"); array.AddColumn("Surname"); array.AddColumn("Address"); array.AddColumn("Email"); - modify.add <<= THISBACK(Add); - modify.change <<= THISBACK(Change); - search.search <<= THISBACK(Search); + modify.add << THISFN(Add); + modify.change << THISFN(Change); + search.search << THISFN(Search); SetupSearch(); fs.AllFilesType(); - menu.Set(THISBACK(MainMenu)); + menu.Set(THISFN(MainMenu)); } void AddressBook::FileMenu(Bar& bar) { - bar.Add("Open..", CtrlImg::open(), THISBACK(Open)); - bar.Add("Save", CtrlImg::save(), THISBACK(Save)); - bar.Add("Save as..", CtrlImg::save_as(), THISBACK(SaveAs)); + bar.Add("Open..", CtrlImg::open(), THISFN(Open)); + bar.Add("Save", CtrlImg::save(), THISFN(Save)); + bar.Add("Save as..", CtrlImg::save_as(), THISFN(SaveAs)); bar.Separator(); - bar.Add("Print", CtrlImg::print(), THISBACK(Print)); + bar.Add("Print", CtrlImg::print(), THISFN(Print)); bar.Separator(); - bar.Add("Quit", THISBACK(Quit)); + bar.Add("Quit", THISFN(Quit)); } void AddressBook::MainMenu(Bar& bar) { - bar.Add("File", THISBACK(FileMenu)); + bar.Sub("File", THISFN(FileMenu)); } void AddressBook::SetupSearch() diff --git a/examples/AddressBookXML2/AddressBook.cpp b/examples/AddressBookXML2/AddressBook.cpp index e6ac4ba81..f4641bb8f 100644 --- a/examples/AddressBookXML2/AddressBook.cpp +++ b/examples/AddressBookXML2/AddressBook.cpp @@ -48,34 +48,34 @@ AddressBook::AddressBook() tab.Add(search, "Search"); ActiveFocus(search.name); search.oname = true; - search.oname <<= search.osurname <<= search.oaddress - <<= search.oemail <<= THISBACK(SetupSearch); + search.oname ^= search.osurname ^= search.oaddress + ^= search.oemail ^= THISFN(SetupSearch); array.AddColumn(TAG_NAME, "Name"); array.AddColumn(TAG_SURNAME, "Surname"); array.AddColumn(TAG_ADDRESS, "Address"); array.AddColumn(TAG_EMAIL, "Email"); - modify.add <<= THISBACK(Add); - modify.change <<= THISBACK(Change); - search.search <<= THISBACK(Search); + modify.add << THISFN(Add); + modify.change << THISFN(Change); + search.search << THISFN(Search); SetupSearch(); fs.AllFilesType(); - menu.Set(THISBACK(MainMenu)); + menu.Set(THISFN(MainMenu)); } void AddressBook::FileMenu(Bar& bar) { - bar.Add("Open..", CtrlImg::open(), THISBACK(Open)); - bar.Add("Save", CtrlImg::save(), THISBACK(Save)); - bar.Add("Save as..", CtrlImg::save_as(), THISBACK(SaveAs)); + bar.Add("Open..", CtrlImg::open(), THISFN(Open)); + bar.Add("Save", CtrlImg::save(), THISFN(Save)); + bar.Add("Save as..", CtrlImg::save_as(), THISFN(SaveAs)); bar.Separator(); - bar.Add("Print", CtrlImg::print(), THISBACK(Print)); + bar.Add("Print", CtrlImg::print(), THISFN(Print)); bar.Separator(); - bar.Add("Quit", THISBACK(Quit)); + bar.Add("Quit", THISFN(Quit)); } void AddressBook::MainMenu(Bar& bar) { - bar.Add("File", THISBACK(FileMenu)); + bar.Sub("File", THISFN(FileMenu)); } void AddressBook::SetupSearch() diff --git a/examples/HelloWorld/hello.cpp b/examples/HelloWorld/hello.cpp index 13dd6aeb6..28dc9351d 100644 --- a/examples/HelloWorld/hello.cpp +++ b/examples/HelloWorld/hello.cpp @@ -6,43 +6,30 @@ class HelloWorld : public TopWindow { MenuBar menu; StatusBar status; - void FileMenu(Bar& bar); - void MainMenu(Bar& bar); - void About(); - public: typedef HelloWorld CLASSNAME; HelloWorld(); }; -void HelloWorld::About() -{ - PromptOK("{{1@5 [@9= This is the]::@2 [A5@0 Ultimate`+`+ Hello world sample}}"); -} - -void HelloWorld::FileMenu(Bar& bar) -{ - bar.Add("About..", THISBACK(About)); - bar.Separator(); - bar.Add("Exit", THISBACK(Close)); -} - -void HelloWorld::MainMenu(Bar& bar) -{ - menu.Add("File", THISBACK(FileMenu)); -} - HelloWorld::HelloWorld() { + Title("Hello world!"); AddFrame(menu); AddFrame(status); - menu.Set(THISBACK(MainMenu)); + menu.Set([=](Bar& bar) { + menu.Sub("File", [=](Bar& bar) { + bar.Add("About..", [=] { + PromptOK("{{1@5 [@9= This is the]::@2 [A5@0 Ultimate`+`+ Hello world sample}}"); + }); + bar.Separator(); + bar.Add("Exit", [=] { Close(); }); + }); + }); status = "Welcome to the Ultimate++ !"; } GUI_APP_MAIN { - SetLanguage(LNG_ENGLISH); HelloWorld().Run(); } diff --git a/uppsrc/RichText/ParaType.cpp b/uppsrc/RichText/ParaType.cpp index fcd7a079d..1027fdd6f 100644 --- a/uppsrc/RichText/ParaType.cpp +++ b/uppsrc/RichText/ParaType.cpp @@ -27,7 +27,7 @@ void RichPara::Smh(Lines& lines, HeightInfo *th, int cx) const l.xpos = format.lm; cx -= format.lm + format.rm; l.xpos += lines.GetCount() == 1 ? lines.first_indent : lines.next_indent; - if(!l.withtabs) + if(!l.withtabs && cx != INT_MAX) switch(format.align) { case ALIGN_RIGHT: l.xpos += cx - l.cx; diff --git a/uppsrc/RichText/TablePaint.cpp b/uppsrc/RichText/TablePaint.cpp index 3d61a852e..4dcee9690 100644 --- a/uppsrc/RichText/TablePaint.cpp +++ b/uppsrc/RichText/TablePaint.cpp @@ -207,12 +207,12 @@ int RichTable::GetWidth(const RichStyles& st) const int sum = 0; for(int i = 0; i < sz.cx; i++) - sum += format.column[i]; + sum += format.column[i]; // sum of column ratios int maxcx = 0; for(int i = 0; i < sz.cx; i++) maxcx = max(maxcx, (col[i] * sum + format.column[i] - 1) / format.column[i]); - + //^^^^ round it up return maxcx + (sz.cx + 1) * format.grid + format.lm + format.rm; }