Commit Graph

36959 Commits

Author SHA1 Message Date
Vadim Zeitlin
85b8798558 Use fractional point size when scaling fonts in wxTipDialog
Don't unnecessarily round the result to int any longer.
2018-09-17 15:24:42 +02:00
Vadim Zeitlin
ac8b2e10a9 Use fractional point sizes in SetWindowVariant()
Don't round the scaled font size now that we can just directly use the
fractional value.
2018-09-17 15:24:42 +02:00
Vadim Zeitlin
cd24db056e Use SetFractionalPointSize() in wxFont::Scale()
This will result in more precise scaling.
2018-09-17 15:24:42 +02:00
Vadim Zeitlin
e65381c8ee Show fractional point size and numeric weight in wxDumpFont()
Update to show the new wxFont fields.
2018-09-17 15:24:42 +02:00
Vadim Zeitlin
18d7801346 Fix wxMotif build after wxFont API changes
Run-time seems to be totally broken, but fonts are probably not the most
important problem in this port, so don't bother fixing it.
2018-09-17 15:24:42 +02:00
Vadim Zeitlin
90dd87ee65 Fix wxGTK1 build after wxFont API changes
Implement the new {Get,Set}{FractionalPointSize,NumericWeight} methods.

Also change wxLoadQueryFont() to use wxNativeFontInfo methods as a side
effect, to reduce code duplication and reuse the existing support for
numeric weights and fractional point sizes in wxNativeFontInfo.
2018-09-17 15:24:42 +02:00
Vadim Zeitlin
aff4b82663 Don't assert in wxNativeFontInfo::SetStyle() in wxGTK1
Add missing "break" statement.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
720e1372e4 Allow leaving the point size unspecified for ports using XLFD
Rather than defaulting to the normal font size, just leave the font size
unspecified as it might result in better font size being chosen.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
22839b865d Fix bug with point sizes in wxX11 without Pango
XLFD strings specify size in tens of points, so add the missing factor
of 10.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
9627798496 More steps towards using wxFontInfo in all ports
Replace AccountForCompatValues() with InfoFromLegacyParams() which
directly constructs wxFontInfo from the old-style parameters, applying
all the compatibility hacks internally.

There are no real changes in this commit, just simplify the code further
and make wxFontInfo more central.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
7866c293e8 Add wxFontInfo::HasFaceName() and use it
No real changes, just simplify the code a little by adding this helper.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
03266b1091 Add wxFontRefData ctor from wxFontInfo to wxQt
This actually implements support for the fractional font sizes, as
previously the fractional part was lost when passing by the legacy
Create() taking only integer size.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
ce1e69cfa1 Implement wxNativeFontInfo::SetPixelSize() in wxQt
There doesn't seem to be any way to specify both font width and height
and pixels in Qt API, so just use QFont::setPixelSize() with the height.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
8715e56676 Remove unnecessary wxFontRefData::operator==() in wxQt
It wasn't used anywhere anyhow.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
2d8decd7f4 Improve mapping of font weights between Qt and wx
Support the entire [0, 99] range used by Qt instead of just some
selected values while still mapping all the predefined symbols to their
corresponding wx equivalents.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
f5cd9a7934 Update wxFont in wxQt after recent base class interface changes
Trivially implement the new wxFont::{Set,Get}{FractionalPointSize,
NumericWeight}() methods in terms of the corresponding wxNativeFontInfo
methods.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
9b661b918e Fix indentation of wxQt wxFontRefData declaration
No real changes.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
de7ab2a45f Remove unnecessary wxFontRefData dtor in wxOSX too
Smart pointers will clean up the resources automatically, there is no
need to call Free() manually from the dtor.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
d9b62e0832 Initialize wxFontRefData::m_info directly in wxOSX code
Instead of using default ctor and Init() later, just use the appropriate
ctor directly.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
a860f5710b Change wxFontRefData ctor to take wxFontInfo in wxOSX too
Change wxOSX similarly to wxGTK and wxMSW in the two previous commits.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
34e01aa62d Change wxFontRefData ctor to take wxFontInfo in wxMSW
Apply the same change as was done for wxGTK in the previous commit to
wxMSW too, for the same reasons.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
7c9daf2e81 Change wxFontRefData ctor to take wxFontInfo in wxGTK
wxFontInfo is the preferred way to create wxFont objects, so rewrite the
internal classes to use it directly and implement the other ctors as
wrappers for the one taking wxFontInfo.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
11ab3b4786 Remove unnecessary wxFontRefData dtor
No real changes, just get rid of unnecessary code.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
a0d5b1e5da Get rid of wxDEFAULT_FONT_SIZE constant in wxGTK
Don't hardcode 12pt font size but use the size of the normal font
instead.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
f7a7fe6c4a Add wxNativeFontInfo::SetSizeOrDefault() and use it in all ports
Reuse the same code for determining the default font size to use if it
wasn't specified in all major ports.

In particular, make wxGTK behaviour compatible with the rest and use the
normal font size in this case instead of the hardcoded value of 12pt.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
24c83625f6 Remove Mac-specific wxFont ctors and fix strikethrough support
Only accept fractional point sizes and numeric weights via wxFont ctor
using wxFontInfo and avoid having specific ctor/Create() overloads for
the different combinations of font properties: this is not portable (as
these ctors don't exist in the other ports) and unsustainable due to the
very real potential of combinatorial explosion as more properties are
added.

As a side-effect, fix support for stricken-through fonts under Mac,
which was broken, by adding the missing wxFontInfo::IsStrikethrough()
call.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
054c5c4af7 Implement support for numeric weights specified in wxFontInfo
Update the major ports to use wxFontInfo::GetNumericWeight() instead of
GetWeight().
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
ff5766a8fb Move GetWeightClosestToNumericValue() to wxFontInfo too
This is similar to a recent commit which moved float to int point size
conversions to wxFontInfo and is done for the same reasons: wxFont and
wxNativeFontInfo can depend on wxFontInfo, but the converse is not true.

No real changes.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
0a23e8dfbe Use portable wxFont ctor instead of Mac-specific one
No real changes, just use wxFont ctor taking wxFontInfo instead of a
Mac-specific ctor.

This is more clear and will continue to work after Mac-specific ctor is
removed.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
27434db911 Add wxFontInfo ctor taking fractional font size in points
And implement support for it in the major ports.

Also add wxFontInfo::GetFractionalPointSize().
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
2823e289d8 Store fractional point size in wxMSW wxNativeFontInfo
We can't losslessly recover the fractional point size from LOGFONT, so
store it in parallel.
2018-09-17 15:24:40 +02:00
Vadim Zeitlin
4be459d98e Use wxNativeFontInfo ctor instead of manually setting its fields
This will be important when new fields are added to wxNativeFontInfo as
the ctor will be extended to initialize them, while this code wouldn't
do it.

No real changes yet.
2018-09-17 15:24:40 +02:00
Vadim Zeitlin
5a6b7681d8 Refactor float to int point size conversions once again
They will be also needed in wxFontInfo soon, so move them there and use
these functions from both wxFont and wxNativeFontInfo, as they can
depend on wxFontInfo but not the other way round.

No real changes.
2018-09-17 15:24:40 +02:00
Vadim Zeitlin
7500a999bd Add numeric weights support for ports using XLFD-based fonts
Translate numeric weight to the symbolic name too instead of only doing
it in the other direction in GetNumericWeight().
2018-09-17 15:24:40 +02:00
Vadim Zeitlin
6dd9f4208e Make converters between wxFontWeight and raw values public
These functions can be useful outside of src/common/fontcmn.cpp and,
potentially, even in the user code, so make them public methods of
wxFont.

No real changes, just add asserts verifying input argument value to
GetWeightClosestToNumericValue().
2018-09-17 15:24:40 +02:00
Vadim Zeitlin
4e0b4e5939 Fix wxDFB build after the font changes
Implement the new wxFont pure virtual methods in this port version of
this class.

Neither arbitrary weights nor fractional point sizes are actually
supported in this port however.
2018-09-17 15:24:40 +02:00
Vadim Zeitlin
1f95a041e9 Fix arbitrary numeric weights in the generic wxNativeFontInfo
Store the weight as int, not wxFontWeight, and rely on the same wrappers
as all the other ports in the port not having native wxNativeFontInfo.

This is a prerequisite for fixing wxDFB and other Unix ports not using
Pango.
2018-09-17 15:24:40 +02:00
Vadim Zeitlin
8955b4b2fb Fix wxX11 build after fractional point size changes
Define {Get,Set}FractionalPointSize() in wxX11 wxFont implementation.

Note that only Pango-based version really supports floating point sizes
as XLFD can't express them.
2018-09-17 15:24:40 +02:00
Vadim Zeitlin
c98879e379 Add wxFont::SetFractionalPointSize()
Changing SetPointSize() argument type from int to float wasn't 100%
backwards-compatible as it notably started resulting in warnings (from
at least MSVC) about conversions from int to float in the existing code.

To avoid these warnings and for symmetry with GetFractionalPointSize(),
add SetFractionalPointSize() taking float argument and preserve the
argument of type int in SetPointSize() for compatibility.

SetPointSize() is now just a wrapper forwarding to the more general
SetFractionalPointSize().

Notice that the other ports still remain broken, this commit only
updates the currently working wxGTK, wxMac and wxMSW.
2018-09-17 15:24:40 +02:00
Vadim Zeitlin
e05a732666 Switch to using float for point size in wxNativeFontInfo
Use float as the fundamental type for the font size and implement
wxNativeFontInfo::{Set,Get}PointSize() as wrappers around the new
{Set,Get}FractionalPointSize().

Update wxNativeFontInfo for all platforms and replace the use of its
SetPointSize() method with SetFractionalPointSize() in wxFont for the
platforms already supporting fractional point sizes (don't change the
others just yet).

Note that wxNativeFontInfo::{Get,Set}PointSize() are preserved for
backwards compatibility but shouldn't be used in any code inside the
library itself any more (again, this is not the case yet, but will be
soon).
2018-09-13 19:58:17 +02:00
Vadim Zeitlin
08e5acedcc Centralize backwards compatibility code in wxFont
Add wxFontBase::AccountForCompatValues() and use it in all ports instead
of redoing the same comparison with wxDEFAULT in all of them.

This is done not so much to avoid the code duplication, which was
minimal anyhow, but to make the code more clear and make it easier to
remove it from all ports at once in the bright (but remote) future when
we don't need these compatibility hacks any more.

Also document that wxDEFAULT and wxNORMAL are only handled specially in
the old-style ctor taking the individual font components and not the new
one using wxFontInfo and extend the unit test to check this.
2018-09-07 03:08:42 +02:00
Vadim Zeitlin
979d541072 Implement arbitrary font weight support for wxX11
This is mostly done to fix (half of) compilation errors after
introduction of pure virtual wxFont::{Get,Set}NumericWeight() as wxFont
in wxX11 couldn't be compiled any more as it didn't define them.
2018-09-06 03:13:23 +02:00
Vadim Zeitlin
8ff36f98f3 Move {Get,Set}Weight() implementations to wxFontBase
Implement these methods in the base class in terms of
{Get,Set}NumericWeight() in order to avoid having to do it for each
platform.

No real changes.
2018-09-06 03:13:23 +02:00
Vadim Zeitlin
dcb12e633b Extract helper functions for wxFontWeight <-> int conversions
Make these functions available for the upcoming reuse in wxFont.

This is almost a pure refactoring, except that assert checking for the
symbolic weight validity was corrected (it was always true before due to
wrong use of "||" instead of "&&", so split it in 2 asserts to ensure
that this doesn't happen any more).
2018-09-05 02:02:56 +02:00
Stefan Csomor
ccff3e43fc fix window menu on macOS
the window menu was potentially added multiple times and could have multiple copies of the active window

closes https://github.com/wxWidgets/wxWidgets/pull/917 , thanks to @hwiesmann
2018-09-04 19:57:48 +02:00
Frédéric Bron
e685ae1d13 Fix wxMac compilation in 32 bits after font changes
Resolve ambiguity in wxCFTypeRef::GetValue() calls: CGFloat is float,
not double, in 32 bit builds, so the type of the first argument is
"float *" while the type of 0.0 is "double".

Fix this by casting 0 to CGFloat too, as this works in both 32 and 64
bit builds.
2018-09-02 23:49:21 +02:00
Vadim Zeitlin
967ff67459 Merge branch 'adv-merge'
Move the entire contents of wxAdv library into wxCore.

In the future, wxAdv will disappear entirely, but for now keep it as an
empty placeholder to allow the existing make/project files to work.

See https://github.com/wxWidgets/wxWidgets/pull/900
2018-09-02 15:43:02 +02:00
Hartwig
bee5852a16 Remove commented out code in wxOSX wxMenuBar
The code seems to be unused since 2008.

Closes https://github.com/wxWidgets/wxWidgets/pull/913
2018-09-02 15:26:46 +02:00
Stefan Csomor
4580cdb9ad Extending wxFont API & OSX Core Text Implementation (#877)
* Switch to pure Core Text Implementation, Start extended Font API

* mac fixes

* First msw implementation

* Fixing paste error

* fixing typo

* Rearranging lines to former fallthrough order

* Blind fixes for covering new abstract methods

* Blind gtk implementations

* Fixing according to travis ..

* Removing method defined in base

* formatting adaptions

* Extending the schema definition for new weights

* fixing typo, using wxRound, other fixes according to comments

* changes according to suggestions

* fixing init order, before the init of m_info was overridden by Init()

* redo

* redo

* redo

* Cleanup

Removing obsolete code snippets, proper traces for font names

* Moving common code

Only the Get/SetNumericWeight calls should now be implemented in the native part, the ‚old‘ Get/SetWeight are common code and use the numeric counterparts.

* Updating docs

* commit wa missing changes.txt

* Doc fixes

* Full stops added
2018-09-01 19:42:18 +02:00
F
d2c77146db wxImageList::GetIcon() converts wxBitmap to wxIcon instead of wxNullIcon on OSX (#906)
On OSX, wxImageList::GetIcon() returned wxNullIcon when a wxBitmap was
stored. This could lead to no image seen in controls like wxTreeListCtrl.

Instead of that, we convert the wxBitmap to wxIcon with CopyFromBitmap.
2018-09-01 11:33:03 +02:00