diff options
author | Jeff Garzik <jgarzik@exmulti.com> | 2011-05-26 17:24:56 -0700 |
---|---|---|
committer | Jeff Garzik <jgarzik@exmulti.com> | 2011-05-26 17:24:56 -0700 |
commit | 1d418728b0f8d9f2e9d1f9c83e76bb3c82613d97 (patch) | |
tree | bd7ee453e9d9f9df13b907e94ae4a7dba8471183 | |
parent | db69432dcdc8bcf9fcc4b2554593d9e0fac4918a (diff) | |
parent | bd39b48f19aff6cb6ebad76abc31a95b84243462 (diff) |
Merge pull request #277 from TheBlueMatt/dpifixv0.3.22rc5
Handle high DPI a bit more gracefully on Win32.
-rw-r--r-- | src/ui.cpp | 57 |
1 files changed, 50 insertions, 7 deletions
diff --git a/src/ui.cpp b/src/ui.cpp index 6e28435a35..ccb8cef8c2 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -18,6 +18,13 @@ CMyTaskBarIcon* ptaskbaricon = NULL; bool fClosedToTray = false; wxLocale g_locale; +#ifdef __WXMSW__ +double nScaleX = 1.0; +double nScaleY = 1.0; +#else +static const double nScaleX = 1.0; +static const double nScaleY = 1.0; +#endif @@ -263,9 +270,10 @@ CMainFrame::CMainFrame(wxWindow* parent) : CMainFrameBase(parent) fOnSetFocusAddress = false; fRefresh = false; m_choiceFilter->SetSelection(0); - double dResize = 1.0; + double dResize = nScaleX; #ifdef __WXMSW__ SetIcon(wxICON(bitcoin)); + SetSize(dResize * GetSize().GetWidth(), nScaleY * GetSize().GetHeight()); #else SetIcon(bitcoin80_xpm); SetBackgroundColour(m_toolBar->GetBackgroundColour()); @@ -1219,6 +1227,9 @@ void CMainFrame::OnListItemActivated(wxListEvent& event) CTxDetailsDialog::CTxDetailsDialog(wxWindow* parent, CWalletTx wtx) : CTxDetailsDialogBase(parent) { +#ifdef __WXMSW__ + SetSize(nScaleX * GetSize().GetWidth(), nScaleY * GetSize().GetHeight()); +#endif CRITICAL_BLOCK(cs_mapAddressBook) { string strHTML; @@ -1633,6 +1644,8 @@ COptionsDialog::COptionsDialog(wxWindow* parent) : COptionsDialogBase(parent) SelectPage(0); #ifndef __WXMSW__ SetSize(1.0 * GetSize().GetWidth(), 1.2 * GetSize().GetHeight()); +#else + SetSize(nScaleX * GetSize().GetWidth(), nScaleY * GetSize().GetHeight()); #endif #if defined(__WXGTK__) || defined(__WXMAC_OSX__) m_checkBoxStartOnSystemStartup->SetLabel(_("&Start Bitcoin on window system startup")); @@ -1803,6 +1816,8 @@ CAboutDialog::CAboutDialog(wxWindow* parent) : CAboutDialogBase(parent) fontTmp.SetPointSize(8); m_staticTextMain->SetFont(fontTmp); SetSize(GetSize().GetWidth() + 44, GetSize().GetHeight() + 10); +#else + SetSize(nScaleX * GetSize().GetWidth(), nScaleY * GetSize().GetHeight()); #endif } @@ -1837,12 +1852,19 @@ CSendDialog::CSendDialog(wxWindow* parent, const wxString& strAddress) : CSendDi fontTmp.SetPointSize(9); m_staticTextInstructions->SetFont(fontTmp); SetSize(725, 180); +#else + SetSize(nScaleX * GetSize().GetWidth(), nScaleY * GetSize().GetHeight()); #endif // Set Icon - wxIcon iconSend; - iconSend.CopyFromBitmap(wxBitmap(send16noshadow_xpm)); - SetIcon(iconSend); + if (nScaleX == 1.0 && nScaleY == 1.0) // We don't have icons of the proper size otherwise + { + wxIcon iconSend; + iconSend.CopyFromBitmap(wxBitmap(send16noshadow_xpm)); + SetIcon(iconSend); + } + else + SetIcon(wxICON(bitcoin)); // Fixup the tab order m_buttonPaste->MoveAfterInTabOrder(m_buttonCancel); @@ -1992,6 +2014,8 @@ CSendingDialog::CSendingDialog(wxWindow* parent, const CAddress& addrIn, int64 n fWorkDone = false; #ifndef __WXMSW__ SetSize(1.2 * GetSize().GetWidth(), 1.08 * GetSize().GetHeight()); +#else + SetSize(nScaleX * GetSize().GetWidth(), nScaleY * GetSize().GetHeight()); #endif SetTitle(strprintf(_("Sending %s to %s"), FormatMoney(nPrice).c_str(), wtx.mapValue["to"].c_str())); @@ -2315,6 +2339,10 @@ void CSendingDialog::OnReply3(CDataStream& vRecv) CAddressBookDialog::CAddressBookDialog(wxWindow* parent, const wxString& strInitSelected, int nPageIn, bool fDuringSendIn) : CAddressBookDialogBase(parent) { +#ifdef __WXMSW__ + SetSize(nScaleX * GetSize().GetWidth(), nScaleY * GetSize().GetHeight()); +#endif + // Set initially selected page wxNotebookEvent event; event.SetSelection(nPageIn); @@ -2326,9 +2354,14 @@ CAddressBookDialog::CAddressBookDialog(wxWindow* parent, const wxString& strInit m_buttonCancel->Show(false); // Set Icon - wxIcon iconAddressBook; - iconAddressBook.CopyFromBitmap(wxBitmap(addressbook16_xpm)); - SetIcon(iconAddressBook); + if (nScaleX == 1.0 && nScaleY == 1.0) // We don't have icons of the proper size otherwise + { + wxIcon iconAddressBook; + iconAddressBook.CopyFromBitmap(wxBitmap(addressbook16_xpm)); + SetIcon(iconAddressBook); + } + else + SetIcon(wxICON(bitcoin)); // Init column headers m_listCtrlSending->InsertColumn(0, _("Name"), wxLIST_FORMAT_LEFT, 200); @@ -2844,6 +2877,16 @@ bool CMyApp::OnInit() g_locale.AddCatalog("wxstd"); // wxWidgets standard translations, if any g_locale.AddCatalog("bitcoin"); +#ifdef __WXMSW__ + HDC hdc = GetDC(NULL); + if (hdc) + { + nScaleX = GetDeviceCaps(hdc, LOGPIXELSX) / 96.0; + nScaleY = GetDeviceCaps(hdc, LOGPIXELSY) / 96.0; + ReleaseDC(NULL, hdc); + } +#endif + return AppInit(argc, argv); } |