From bd39b48f19aff6cb6ebad76abc31a95b84243462 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 27 May 2011 01:25:28 +0200 Subject: [PATCH 1/4] Handle high DPI a bit more gracefully on Win32. #243 Not ideal, icons for send and address book don't show, just the standard bitcoin icon, and balance is still cut off, but the number is readable. --- src/ui.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/src/ui.cpp b/src/ui.cpp index 6e28435a..ccb8cef8 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); } From 0649b6af90bbe8f3e12f0fae6516ca12125d1dc9 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 27 May 2011 02:53:13 +0200 Subject: [PATCH 2/4] Update to openssl-1.0.0d and enable RPC-SSL on Win32 --- doc/build-msw.txt | 11 +++-------- share/setup.nsi | 2 -- src/makefile.mingw | 9 +++++---- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/doc/build-msw.txt b/doc/build-msw.txt index e30b4ee7..1911008d 100644 --- a/doc/build-msw.txt +++ b/doc/build-msw.txt @@ -28,7 +28,7 @@ Libraries you need to download separately and build: default path download wxWidgets \wxwidgets-2.9.1-mgw http://www.wxwidgets.org/downloads/ -OpenSSL \openssl-1.0.0c-mgw http://www.openssl.org/source/ +OpenSSL \openssl-1.0.0d-mgw http://www.openssl.org/source/ Berkeley DB \db-4.7.25.NC-mgw http://www.oracle.com/technology/software/products/berkeley-db/index.html Boost \boost-1.43.0-mgw http://www.boost.org/users/download/ miniupnpc \upnpc-exe-win32-20110215 http://miniupnp.tuxfamily.org/files/ @@ -42,7 +42,7 @@ miniupnpc New (3-clause) BSD license Versions used in this release: wxWidgets 2.9.1 -OpenSSL 1.0.0c +OpenSSL 1.0.0d Berkeley DB 4.7.25.NC Boost 1.43.0 miniupnpc 1.5-20110215 @@ -66,15 +66,10 @@ MSYS shell: un-tar sources with MSYS 'tar xfz' to avoid issue with symlinks (OpenSSL ticket 2377) change 'MAKE' env. variable from 'C:\MinGW32\bin\mingw32-make.exe' to '/c/MinGW32/bin/mingw32-make.exe' -cd /c/openssl-1.0.0c-mgw +cd /c/openssl-1.0.0d-mgw ./config make -perl util/mkdef.pl 32 libeay enable-static-engine > libeay32.def -dllwrap --dllname libeay32.dll --output-lib libeay32.a --def libeay32.def libcrypto.a -lws2_32 -lgdi32 - -after that openssl libeay is in main source dir (openssl-1.0.0c-mgw) - Berkeley DB ----------- MSYS shell: diff --git a/share/setup.nsi b/share/setup.nsi index 4239f532..d2653025 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -60,7 +60,6 @@ Section -Main SEC0000 SetOutPath $INSTDIR SetOverwrite on File ../src/bitcoin.exe - File ../../openssl-1.0.0d/libeay32.dll File /oname=license.txt ../COPYING File /oname=readme.txt ../doc/README_windows.txt SetOutPath $INSTDIR\daemon @@ -108,7 +107,6 @@ done${UNSECTION_ID}: # Uninstaller sections Section /o -un.Main UNSEC0000 Delete /REBOOTOK $INSTDIR\bitcoin.exe - Delete /REBOOTOK $INSTDIR\libeay32.dll Delete /REBOOTOK $INSTDIR\license.txt Delete /REBOOTOK $INSTDIR\readme.txt RMDir /r /REBOOTOK $INSTDIR\daemon diff --git a/src/makefile.mingw b/src/makefile.mingw index 57ece3ba..c3a964e8 100644 --- a/src/makefile.mingw +++ b/src/makefile.mingw @@ -7,14 +7,14 @@ USE_UPNP:=0 INCLUDEPATHS= \ -I"C:\boost-1.43.0-mgw" \ -I"C:\db-4.7.25.NC-mgw\build_unix" \ - -I"C:\openssl-1.0.0c-mgw\include" \ + -I"C:\openssl-1.0.0d-mgw\include" \ -I"C:\wxWidgets-2.9.1-mgw\lib\gcc_lib\mswud" \ -I"C:\wxWidgets-2.9.1-mgw\include" LIBPATHS= \ -L"C:\boost-1.43.0-mgw\stage\lib" \ -L"C:\db-4.7.25.NC-mgw\build_unix" \ - -L"C:\openssl-1.0.0c-mgw" \ + -L"C:\openssl-1.0.0d-mgw" \ -L"C:\wxWidgets-2.9.1-mgw\lib\gcc_lib" WXLIBS= \ @@ -26,9 +26,10 @@ LIBS= \ -l boost_program_options-mgw45-mt-s-1_43 \ -l boost_thread-mgw45-mt-s-1_43 \ -l db_cxx \ - -l eay32 + -l ssl \ + -l crypto -DEFS=-DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH +DEFS=-DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -DUSE_SSL DEBUGFLAGS=-g -D__WXDEBUG__ CFLAGS=-mthreads -O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \ From af531f0449eae49e0e048218c9dccb3b3a771704 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 27 May 2011 12:37:18 +0200 Subject: [PATCH 3/4] Fix GUI build on UNIX. --- src/ui.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/ui.cpp b/src/ui.cpp index ccb8cef8..cca473d8 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -1863,8 +1863,10 @@ CSendDialog::CSendDialog(wxWindow* parent, const wxString& strAddress) : CSendDi iconSend.CopyFromBitmap(wxBitmap(send16noshadow_xpm)); SetIcon(iconSend); } +#ifdef __WXMSW__ else SetIcon(wxICON(bitcoin)); +#endif // Fixup the tab order m_buttonPaste->MoveAfterInTabOrder(m_buttonCancel); @@ -2360,8 +2362,10 @@ CAddressBookDialog::CAddressBookDialog(wxWindow* parent, const wxString& strInit iconAddressBook.CopyFromBitmap(wxBitmap(addressbook16_xpm)); SetIcon(iconAddressBook); } +#ifdef __WXMSW__ else SetIcon(wxICON(bitcoin)); +#endif // Init column headers m_listCtrlSending->InsertColumn(0, _("Name"), wxLIST_FORMAT_LEFT, 200); From 12a1256c1d33bb4580cd8ab7284d117ca42ec97c Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 28 May 2011 16:43:49 +0200 Subject: [PATCH 4/4] bugfix: accept free transactions --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index f5f1ffd4..793cf77f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -731,7 +731,7 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi } // Don't accept it if it can't get into a block - if (nFees < GetMinFee(1000, false, true)) + if (nFees < GetMinFee(1000, true, true)) return error("AcceptToMemoryPool() : not enough fees"); // Continuously rate-limit free transactions