diff --git a/uppsrc/CtrlCore/Ctrl.cpp b/uppsrc/CtrlCore/Ctrl.cpp index 9a1d395a9..0fb5d36f8 100644 --- a/uppsrc/CtrlCore/Ctrl.cpp +++ b/uppsrc/CtrlCore/Ctrl.cpp @@ -965,6 +965,7 @@ CH_INT(GUI_AKD_Conservative, 0); CH_INT(GUI_DragDistance, 4); CH_INT(GUI_DblClickTime, 500); CH_INT(GUI_WheelScrollLines, 3); +CH_INT(GUI_HiDPI, 0); String Ctrl::Name0() const { GuiLock __; diff --git a/uppsrc/CtrlCore/CtrlCore.h b/uppsrc/CtrlCore/CtrlCore.h index da6491cad..15318540f 100644 --- a/uppsrc/CtrlCore/CtrlCore.h +++ b/uppsrc/CtrlCore/CtrlCore.h @@ -1302,6 +1302,8 @@ int GUI_DragDistance(); int GUI_DblClickTime(); int GUI_WheelScrollLines(); +int GUI_HiDPI(); + void GUI_GlobalStyle_Write(int); void GUI_DragFullWindow_Write(int); void GUI_PopUpEffect_Write(int); @@ -1312,6 +1314,7 @@ void GUI_AKD_Conservative_Write(int); void GUI_DragDistance_Write(int); void GUI_DblClickTime_Write(int); void GUI_WheelScrollLines_Write(int); +void GUI_HiDPI_Write(int); void EditFieldIsThin_Write(int); void TopSeparator1_Write(Value); diff --git a/uppsrc/CtrlLib/Bar.h b/uppsrc/CtrlLib/Bar.h index 523d50ad5..0c655d000 100644 --- a/uppsrc/CtrlLib/Bar.h +++ b/uppsrc/CtrlLib/Bar.h @@ -227,6 +227,8 @@ public: void PaintBar(Draw& w, const SeparatorCtrl::Style& ss, const Value& pane, const Value& iconbar = Null, int iconsz = 0); + int GetHeight() const { return pane.GetPaneSize(true, INT_MAX).cy; } + BarCtrl& Align(int align); BarCtrl& Top() { return Align(BAR_TOP); } BarCtrl& Bottom() { return Align(BAR_BOTTOM); } diff --git a/uppsrc/CtrlLib/LabelBase.cpp b/uppsrc/CtrlLib/LabelBase.cpp index 6c95c7d57..796a39988 100644 --- a/uppsrc/CtrlLib/LabelBase.cpp +++ b/uppsrc/CtrlLib/LabelBase.cpp @@ -2,6 +2,11 @@ NAMESPACE_UPP +Image DPI(const Image& img) +{ + return GUI_HiDPI() ? CachedRescale(img, 2 * img.GetSize(), FILTER_LANCZOS3) : img; +} + void CtrlsImageLook(Value *look, int i, int n) { while(n--) diff --git a/uppsrc/CtrlLib/LabelBase.h b/uppsrc/CtrlLib/LabelBase.h index bbd3acba8..4c83f8940 100644 --- a/uppsrc/CtrlLib/LabelBase.h +++ b/uppsrc/CtrlLib/LabelBase.h @@ -1,3 +1,5 @@ +Image DPI(const Image& img); + enum { CTRL_NORMAL, CTRL_HOT, CTRL_PRESSED, CTRL_DISABLED, CTRL_CHECKED, CTRL_HOTCHECKED diff --git a/uppsrc/CtrlLib/ToolButton.cpp b/uppsrc/CtrlLib/ToolButton.cpp index 55504490b..814e99bc3 100644 --- a/uppsrc/CtrlLib/ToolButton.cpp +++ b/uppsrc/CtrlLib/ToolButton.cpp @@ -164,7 +164,9 @@ Image ToolButton::GetImage() const UPP::Image m = img; if(IsDarkColorFace() && !nodarkadjust) m = MakeImage(m, AdjustForDarkBk); - return CachedRescale(m, min(m.GetSize(), maxiconsize)); + m = CachedRescale(m, min(m.GetSize(), maxiconsize)); + m = DPI(m); + return m; } Bar::Item& ToolButton::Image(const UPP::Image& img_) diff --git a/uppsrc/CtrlLib/src.tpp/ToolBar$en-us.tpp b/uppsrc/CtrlLib/src.tpp/ToolBar$en-us.tpp index 4aa6fc1b7..973902e74 100644 --- a/uppsrc/CtrlLib/src.tpp/ToolBar$en-us.tpp +++ b/uppsrc/CtrlLib/src.tpp/ToolBar$en-us.tpp @@ -17,22 +17,7 @@ rCtrl]&] [s0;%% &] [s2;%% @@image:2300&162 -֐ܪŀΔ‘ԕ -ד߻ޝջ͗Nj䰌ð݇޾蠜Šࢎ -̖ͳ঱DŽᶂޮĮ쓺ޒ -ʫΣ֧ӬȬפݝɾԃ狥اٚ -򂜢晟餞ʜ޿՚뵨ߥͲ䗰녎̝ -Ô̧䞖컨؋΄⫧Ȕ -䳏٥ό׬ɓǝ˗󟴱ıʣ٩Ӱƫ -ҧȲН󣓚ԟ՜ıښϩ֖ΜڢƧ -榒̷ͽךɃŎɼꃑƌό؁ħ±Ȳ -ຫɰܧ䋴؛ͧӼ쁄̬φ -ݿƧЀ烡ЃشօҟﭥثşѦɉǯԗ -Ձ́Ҕ䦷⯲نʲ⃄ -ċ铬ʇëϜֈ米—Еđӡ -ȧő軿։՞įڐ􉶉Τیۙڋ抾ͬ -ֹ斧Ӥޞѳ랢ۿޔʪܼɗӓ -Ӂϓɔľᮎܡߣðᘋᨵ׌ +(A3ABGgAAAOb/AAAAAHic7Z3NbhMxEID9frwDj8CV6155A7hz4IAQEkLcIKhFgAKoFSAiThQQtCJCkSpAVJWMqYlx/Tsee9eTdKxP0Wa7ntjenS+Ou02XR4slwzAMwzAMlp3Z3Qf3bt6+daMIVUVV7N54hmHooJygOPx6cHy8kuCiDlZVdN10/CvX7hCk+7AzTJbuaYJATTOUGeAmsYuqqKpnxwQXfLzCPmE2AoK5ky6qweqTS9HMxC6qoqrefUzm71fX73+EoI6U7BMaiHXp3pJg28qrDM6jHSf40yzdfYLILCWEmlek4BPdHQjqSMk+IYCdsNSU0kp0OkJNnO4+QWSW7ZNBCLNhtu39fiHik+eL7xDYJwTZGp84kxDjE39yApyiUPBJaWYZn2hppB/9gvCJOB/KnL6aXj97t4SA8ImIl5prtSiCX6WyGdPkFzD42O2f4ASl+4WOE8wdu8QSKptxwOxDZFbMJ4M1V/F7ZJ4W+cRvfGy7qKi+PH37DQJufpJIZ/QVW18LHifd8nScJnkBCU4EtE9iKyfLyBQFQva9OJiScJ9ksw+RWbZPjEZij3/HZRjsV6ycn7TyyZM3R5pLl6+abX9Pc580MQOuFjCO3ebs00T1xDE4SqOpK0/TsA3BQUYrJTbm6KGb0ietMis7P5FxmUgyPtl9fahQHdTop/6e7vOTmkt0VJ9kq9tVnJeGtMSxQWnO2hoZTymVPnFWTpzRbrJ+EvOJTFqixielmQX8/U5QJpKMT3b2v2hMN51tTb1PcFeaE6pJxY4+STwNB2lqg5F84pxZ9IlGjE+M9PqJkzgIn9gBW2UWxCcxmUgyPnm899lgOquxf9R3foKWSbAu3CfBNAFe5OJ8SeQLtCNYG5gZDk2fhO45cYdrvPUTe8N+6uyBBKnMrKxPhrMS+ykRn8xefbIxXXb2910/md4norAEIzjb/lCA2l9ng+AMB3EK0AMFjxMMWDRWhlKfSG8tJVgrG6QmsxyfOO1RJhHxyYkk45NHLw8cVJf9nR19Unnl+9WBAUX87RJyhQd9UhRh2eLzzn+HrI3kN6yGJj6xV07irzLW+onZhvskm32IzPLnJ3aT0jKRZO4/efjiA4SOn3eI+yQWCu6TRGN8G2BGwJjEi1Dpk6xMSoe68hhDq/tPnIrw7ENkVvDzjtaInpykc5nI/bGz+QJCl/vZ0BWbxBFe+jt106FEyCdFEf4dE7dBJejxhJxi+Gg7v9aJVT/bxK+fTFwQmRX0iTaJyE1OJBmf7M73IfD99ltGW5ngDnBakohT2mYKPinNrNh6rB7A7CtS8MnW/31xzfvmFtOk7w19sl4b0bO4wXssnqJ090nbvy/eFJ+Ulo3zCePTSqpgV0x0jA3B3EkX45PT0xMf1fHgfoOE+YQg3dOBYbJ0TxME+vuUTn7/QAD5PiWGYS4O+vsef/1cIYB83yPDMBeHsb+PmmGYCwX/vwyGYSjzB9cMmN8=) &] [s0;%% &] [s9;%% This class provides tool`-bars.&] @@ -76,7 +61,8 @@ tyle][@(0.0.255) `&]_[* StyleDefault]()&] [s3;%% &] [s4; &] [s5;:ToolBar`:`:GetStdHeight`(`): [@(0.0.255) static] [@(0.0.255) int]_[* GetStdHeight]()&] -[s2;%% Returns the standard height of a toolbar when used as a frame.&] +[s2;%% Returns the standard height of a toolbar when used as a frame. +Not that this is only valid for toolbar with normal sized icons.&] [s3; &] [s0; &] [ {{10000@3 [s0;%% [*@(229)4 ToolBar`::Style]]}}&] @@ -85,4 +71,4 @@ tyle][@(0.0.255) `&]_[* StyleDefault]()&] ][*@3;3 ChStyle][@(0.0.255)3 <][*3 Style][@(0.0.255)3 >][3 _]&] [s9;%% This structure defines the visual style of a ToolBar.&] [s3; &] -[s0; ] \ No newline at end of file +[s0; ]] \ No newline at end of file diff --git a/uppsrc/ide/ide.upp b/uppsrc/ide/ide.upp index bacfe1fb0..2243de767 100644 --- a/uppsrc/ide/ide.upp +++ b/uppsrc/ide/ide.upp @@ -102,7 +102,8 @@ mainconfig "" = "GUI GTK", "" = "GUI MT X11", "" = "GUI MT NOGTK", - "" = "GUI NOGTK"; + "" = "GUI NOGTK", + "" = "GUI MT TEST_HIDPI"; custom() "", "", diff --git a/uppsrc/ide/idebar.cpp b/uppsrc/ide/idebar.cpp index d43d85242..1667c8bba 100644 --- a/uppsrc/ide/idebar.cpp +++ b/uppsrc/ide/idebar.cpp @@ -379,9 +379,9 @@ void Ide::Project(Bar& menu) { mainconfiglist.Enable(idestate == EDITING); buildmode.Enable(idestate == EDITING); - menu.Add(mainconfiglist, 180); + menu.Add(mainconfiglist, HorzLayoutZoom(180)); menu.Gap(4); - menu.Add(buildmode, 180); + menu.Add(buildmode, HorzLayoutZoom(180)); menu.Separator(); } if(!IsEditorMode()) { diff --git a/uppsrc/ide/idewin.cpp b/uppsrc/ide/idewin.cpp index 89abcfc6b..6d3c19164 100644 --- a/uppsrc/ide/idewin.cpp +++ b/uppsrc/ide/idewin.cpp @@ -316,10 +316,11 @@ void Ide::SetupBars() menubar.Transparent(); if(toolbar_in_row) { toolbar.SetFrame(NullFrame()); + int tcy = max(mainconfiglist.GetStdSize().cy + VertLayoutZoom(2), toolbar.GetStdHeight()); bararea.Add(menubar.LeftPos(0, l).VCenterPos(menubar.GetStdHeight())); - bararea.Add(toolbar.HSizePos(l, r).VCenterPos(toolbar.GetStdHeight())); + bararea.Add(toolbar.HSizePos(l, r).VCenterPos(tcy)); bararea.Add(display.RightPos(4, r).VSizePos(2, 3)); - bararea.Height(max(menubar.GetStdHeight(), toolbar.GetStdHeight())); + bararea.Height(max(menubar.GetStdHeight(), tcy)); AddFrame(bararea); toolbar.Transparent(); } @@ -717,8 +718,13 @@ GUI_APP_MAIN void AppMain___() #endif { +#ifdef flagTEST_HIDPI + Font fnt = GetStdFont(); + SetStdFont(fnt.Height(2 * fnt.GetHeight())); +#endif SetLanguage(LNG_ENGLISH); SetDefaultCharset(CHARSET_UTF8); + GUI_HiDPI_Write(1); const Vector& arg = CommandLine();