Commit Graph

81 Commits

Author SHA1 Message Date
Vadim Zeitlin
63a40a09b2 Preserve mnemonics in ellipsized labels
Ellipsization code was completely broken when used with the usual
control label strings containing mnemonics: it simply stripped the
mnemonics completely, losing them even if the label wasn't actually
ellipsized, and turned "&&" into a mnemonic. I.e. "&Plug && play"
appeared without underlined "P" but with underlined space before "play"
before.

Fix this by pretending that all ampersands in the string to be
ellipsized have zero width. This is not precise, as the result of
GetPartialTextExtents() for a string with the ampersands is not exactly
the same as the sum of its result for the string without the ampersands
and the width of the ampersands themselves, but it should be pretty
close and unlikely to result in any problems in practice for the
controls labels.

At the very least this fixes the completely wrong behaviour of the
controls on the "Static" page of the widgets sample, where ellipsization
is enabled by default and setting the label text with mnemonics didn't
work at all.
2019-06-20 01:48:33 +02:00
Vadim Zeitlin
05627cf54c Make wxControlBase::DoEllipsizeSingleLine() private function
This function doesn't need to be a method of wxControl, so don't make it
one.

No real changes, just improve the encapsulation.
2019-06-20 01:44:27 +02:00
Vadim Zeitlin
672847772d Fix an off-by-1 bug in wxControl::FindAccelIndex() after "&&"
This resulted in wrong letter being underlined in wxGenericStaticText
when the mnemonic occurred after "&&" (i.e. an actual ampersand) in the
label.

Add unit test which passes now, but would fail before on the last check.
2019-06-19 19:40:05 +02:00
Vadim Zeitlin
974c75272c Don't invalidate best size unnecessarily in wxControl::SetFont()
There is no reason to do it if the font didn't change at all.
2018-12-31 15:35:36 +01:00
Jan Niklas Hasse
496da2e550 Remove trailing whitespace from several files
No real changes.

See https://github.com/wxWidgets/wxWidgets/pull/787
2018-04-18 15:45:42 +02:00
Vadim Zeitlin
25c9b032a8 Don't call CacheBestSize() from DoGetBestSize() implementations
This is unnecessary, wxWindow::GetBestSize() already does this, so calling it
from DoGetBestSize() called by it too is just useless.
2016-04-03 18:04:26 +02:00
Wacek Gocki
4e49638a6c Handle wxELLIPSIZE_NONE gracefully in wxControl::Ellipsize()
Since 44bcc3a723 wxRendererGeneric::DrawItemText()
could call Ellipsize() with wxELLIPSIZE_NONE mode, resulting in an assert.

Fix this by just not doing anything in this case.

Closes #125.
2015-12-03 17:10:25 +01:00
Václav Slavík
b5e7f21065 wxOSX Retina fixes: size wxStaticBitmap and wxBitmapButton properly.
The size is expressed in logical coordinates and needs to use bitmap's
scaled size, otherwise it would appear twice as large in both
dimensions.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75350 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-12-04 14:33:07 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Paul Cornett
88932ec82d simplify code to return from the end of the function
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73068 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-11-30 18:21:45 +00:00
Vadim Zeitlin
7a78a93782 Add wxControl::GetSizeFromTextSize() to size the control to its text.
This function can be used to size a, say, wxTextCtrl to be exactly of the size
needed to enter the given amount of text in it.

This patch adds wxGTK implementation for wxTextCtrl, wxChoice and wxCombobox;
changes to the samples and the documentation.

Closes #14812.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72935 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-11-09 21:11:37 +00:00
Dimitri Schoolwerth
a1b806b982 Replaced Ok() occurrences with IsOk() throughout trunk.
Additionally renamed wxOSX' private wxNativePrinterDC::Ok() function to IsOk().

Didn't deprecate the various Ok() functions: given the amount of changes already introduced in 3.0 a trivial one like this seems more suitable for after 3.0.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67681 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-05-03 16:29:04 +00:00
Vadim Zeitlin
f5bdfc69a5 Add wxUSE_MARKUP and wrap SetLabelMarkup() in it.
Make it possible to disable all the new markup-related code by setting
wxUSE_MARKUP to 0 in setup.h or using configure --disable-markup option.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67062 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-27 12:48:07 +00:00
Vadim Zeitlin
3da9cffc79 Replace wxST_MARKUP style with wxControl::SetLabelMarkup().
This is an incompatible change which removes the wxStaticText-specific
wxST_MARKUP style and adds wxControl::SetLabelMarkup() replacing it.

It doesn't actually change anything yet but it simplifies wxStaticText code a
lot by getting rid of many markup-related functions in it which had to behave
differently depending on whether wxST_MARKUP was used or not and also paves
way for adding markup support for the other controls in the future.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67055 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-27 12:47:26 +00:00
Vadim Zeitlin
93d4df75cb Make the source file non-executable.
The file ctrlcmn.cpp somehow got the executable bit in r66871, undo this.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66894 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-15 10:15:27 +00:00
Václav Slavík
4b52555d71 Don't eliminate text completely in Ellipsize().
If the shortened text is so short there's nothing left of the original,
show one character and "...". This is standard behaviour on both
Windows and OS X, in addition to making lot of sense.

Fixes #11360.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66874 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-09 19:52:34 +00:00
Václav Slavík
38ddd614f2 Calculate ellipsized width exactly.
Width calculation using partial extents is just an inaccurate
estimate: partial extents have sub-pixel precision and are rounded
by GetPartialTextExtents(). Use partial extents to
estimate string width and only verify it with GetTextExtent()
when it looks good.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66873 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-09 19:52:22 +00:00
Václav Slavík
508fc76d0c Don't shorten text too much in wxControl::Ellipsize().
If the allowed width is so small that nothing reasonable can fit it,
overlap it. Ellipsized text must always contain "..." to indicate that
it was shortened, it isn't acceptable to omit it.

See #11360.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66872 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-09 19:52:10 +00:00
Václav Slavík
d6ebae9a94 Ellipsization can't shorten 1-character string.
It doesn't make sense to attempt to shorten 1 character long string, so
don't do it. Note that 2 characters strings may be shortened (consider
e.g. "mm" in some typefaces).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66871 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-09 19:51:58 +00:00
Václav Slavík
1d065710d3 Remove "safety margin" from wxControl::Ellipsize().
When ellipsizing kicks in, the text is much shorter than the available
space -- there's a "safety margin" of one character's width that is
always left unused. This appears to be some kludge that worked around
algorithm defects, not something that should really be needed.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66870 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-09 19:51:47 +00:00
Václav Slavík
4d3de2c5f7 Account for first removal char with wxELLIPSIZE_MIDDLE.
wxControl::Ellipsize() in wxELLIPSIZE_MIDDLE mode starts the
string-shortening loop with the removal interval initially set to remove
only the len/2-th character. But it didn't add its size to the running
total of removal characters' length, thus always removing one more
character. Fixed by making the initial interval 0-sized rather than
1-sized.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66823 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-31 18:23:32 +00:00
Václav Slavík
3433de6e63 Remove chars one-by-one with wxELLIPSIZE_MIDDLE.
Previously, Ellipsize() would always remove two characters at a time in
wxELLIPSIZE_MIDDLE mode. This was clearly a bug: it led to shortening
the text more than was strictly necessary.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66822 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-31 18:23:29 +00:00
Paul Cornett
5eed855656 remove always-true test of unsigned >= 0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66658 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-08 18:22:07 +00:00
Vadim Zeitlin
f48a115976 No real changes, just use const_cast<> instead of C casts.
Replace many comments indicating that the C cast used was really a
const_cast<> with the proper cast itself. There is no reason to not use it any
longer, all the supported compilers understand it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65861 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-22 14:17:30 +00:00
Vadim Zeitlin
ce00f59b5b No changes whatsoever, just remove trailing whitespace.
There are no real changes in this commit but it removes all trailing white
space from our source files. This avoids problems when applying patches and
making diffs and it would be nice to prevent it from reappearing.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65680 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-09-30 11:44:45 +00:00
Jouk Jansen
e1cf09d918 Updates to make wxWidgets compaile on OpenVMS again
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63754 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-03-25 11:16:32 +00:00
Francesco Montorsi
32ee98eb76 reorder GetLabel(), GetLabelText(), SetLabel() and SetLabelText() function declarations, implementations and relative documentations.
Add wxStaticTextBase::GetLabelWithoutMarkup() and use it in the wxMSW implementation of wxStaticText::SetLabel() to close bug #11446; the function RemoveMarkup() which was previously used in fact could not check for presence/absence of wxST_MARKUP style since it's a static function.

Add wxStaticTextBase::SetLabelText() functions for symmetry with wxControlBase::SetLabelText()

Add test unit for both wxControl::*Label* and wxStaticText::*Label* functions.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63733 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-03-21 21:39:15 +00:00
Francesco Montorsi
a37da0fa55 Fix function wxControlBase::DoEllipsizeSingleLine to really make sure that the ellipsized string takes less pixels than maxFinalWidthPx.
Add comments to explain in more details what the function does and in particular the valid ranges of all internal variables; fix in that regard both the code of both wxELLIPSIZE_START, wxELLIPSIZE_MIDDLE and wxELLIPSIZE_END.
Add more asserts to check the valid ranges and turn a couple of time-expensive checks in level-2 asserts.
Add a test unit for the wxControl::Ellipsize function.
Fix minor details in the docs of wxControl::Ellipsize.
Closes #11567.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63660 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-03-10 13:57:47 +00:00
Francesco Montorsi
8ab11e46c0 no real changes, just rename the variables to make the code more readable and to prepare everything for the next commit:
- add postfix "Px" to all variables containing numbers of pixels
- add postfix "ToRemove" to initialChar and nChars vars to make it clear what they are for

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63659 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-03-10 11:07:57 +00:00
Vadim Zeitlin
c937bcac0f Add ellipsization support to wxDataViewCtrl.
Implemented ellipsization in the generic, GTK and both OS X Carbon and Cocoa
versions but it currently doesn't work well in GTK as it changes the item
alignment unconditionally, this will need to be fixed later.

The behaviour for the columns is currently inconsistent between ports too:
under MSW they (natively) use wxELLIPSIZE_END, under GTK -- wxELLIPSIZE_NONE
and under OS X the same ellipsization mode as the column contents, i.e.
wxELLIPSIZE_MIDDLE by default.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62433 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-16 21:35:26 +00:00
Vadim Zeitlin
355ce7adea Rename wxEllipsizeFlags elements to avoid confusion with wxEllipsizeMode.
We shouldn't use the same "wxELLIPSIZE_" prefix for two different enums, so
use wxELLIPSIZE_FLAGS one for wxEllipsizeFlags (they should be used less often
than wxEllipsizeMode so it's better to keep the short prefix for the latter).

Also add wxELLIPSIZE_FLAGS_NONE flag.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62432 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-16 21:32:51 +00:00
Vadim Zeitlin
0534259ab8 Move wxControl::GetCompositeControlsDefaultAttributes() from MSW to common.
This function is not MSW-specific and should be used in generic implementation
of controls such as wxListCtrl, wxTreeCtrl and wxDataViewCtrl. Even if it is
needed by MSW only now, move it to the common code to avoid #ifdefs in these
controls code.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62151 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-09-26 16:43:06 +00:00
Vadim Zeitlin
9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00
Vadim Zeitlin
8d6e8e45fe fix MSVC warnings about possibly uninitialized variables; some reindentation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58811 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-09 13:16:42 +00:00
Francesco Montorsi
91d55088c9 revert insert=>append change; only for wxELLIPSIZE_END append() is valid
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58769 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-08 19:14:56 +00:00
Francesco Montorsi
a78618b062 split wxControl::Ellipsize() in two functions for better readability of the code; add support for ellipsization flags which allow to disable special processing of TAB/mnemonics characters
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58759 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-08 12:56:14 +00:00
Vadim Zeitlin
5b8b2c84f7 added SetLabelText() and EscapeMnemonics()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57689 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-31 14:14:07 +00:00
Francesco Montorsi
02b4f9fd2a PCH-less build fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57632 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-29 10:41:39 +00:00
Francesco Montorsi
7d27b6263c use correct wxELLIPSIZE_* constants after r57625
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57626 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-29 00:37:50 +00:00
Francesco Montorsi
5c87527c5a move Ellipsize() to wxControl so it can be easily used by other controls
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57625 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-28 21:16:00 +00:00
Vadim Zeitlin
916eabe60e add wxGenericStaticText (#9656)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56242 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-10-12 13:04:00 +00:00
Julian Smart
dc797d8e1b More border rationalisation. GetDefaultBorder is now mostly defined in base class files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49893 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-13 12:10:34 +00:00
Vadim Zeitlin
f36e602b3f make various control names constants of type char, not wxChar, as this is more compatible with the old ANSI build and it doesn't make much sense to use wchar_t for ASCII strings anyhow
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49873 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-12 21:37:46 +00:00
Vadim Zeitlin
39bc0347fd added support for ellipsization and markup in wxStaticText (modified patch 1629946)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45199 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-04-01 14:13:15 +00:00
Vadim Zeitlin
74639764d0 added possibility to strip only mnemonics, not accels, in wxStripMenuCodes(); added wxControl::GetLabelText()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40329 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-07-25 18:40:04 +00:00
Włodzimierz Skiba
0bca037363 Include wx/bitmap.h according to precompiled headers of wx/wx.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-06-14 10:02:19 +00:00
Włodzimierz Skiba
e267406e11 Include wx/statbmp.h according to precompiled headers of wx/wx.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-05-31 09:34:05 +00:00
Robin Dunn
4a2e5ee8f9 Fixes for the DLL build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39355 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-05-26 19:02:57 +00:00
Paul Cornett
e7445ff8ee move some data definitions to more appropriate places
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39348 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-05-26 16:12:31 +00:00
Włodzimierz Skiba
93fbbe0765 Include wx/control.h according to precompiled headers of wx/wx.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39343 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-05-26 10:15:44 +00:00