Jaakko Salli [Sun, 27 Mar 2011 18:30:56 +0000 (18:30 +0000)]
Instead of just deleting m_popupInterface, call Destroy() of its wxWindow-based popup control obtained via GetControl() member function. Also still delete m_popupInterface if there was no popup control, or if it was implemented as a separate class (versus being multiple-inherited along side wxComboPopup, as has been the common practice).
Václav Slavík [Sun, 27 Mar 2011 17:23:43 +0000 (17:23 +0000)]
Always use gtk2-compat.h definitions.
We support building against newer GTK+ version and using an older
one at runtime, so we must provide our implementations of these
functions even if GTK_CHECK_VERSION would indicate the function is
already available in GTK+.
Václav Slavík [Fri, 25 Mar 2011 11:00:56 +0000 (11:00 +0000)]
Revert r67137.
GTK_DISABLE_SINGLE_INCLUDES causes trouble with other included
libraries (libgnomeprint this time) too. This check for trivially fixed
problems is not worth the continuing trouble.
Vadim Zeitlin [Thu, 24 Mar 2011 16:08:11 +0000 (16:08 +0000)]
Set m_inheritBgCol flag in wxPanel with a background bitmap.
This ensures that the panel background is used by its transparent children
under wxMSW even when the panel itself is inside a wxNotebook with themed
background: making InheritsBackgroundColour() return true prevents the
notebook from overriding our background.
Fixed buffer overflow when saving certain images in the Windows icon format.
When an image did not have a width with a multiple of 4 the calculations for the number of padding bytes (to get a scan line DWORD aligned) would be wrong. This caused a buffer overrun when saving the 1 bits per pixel mask.
Václav Slavík [Wed, 23 Mar 2011 13:57:52 +0000 (13:57 +0000)]
Only react to clicks on the checkbox in wxDataViewToggleRenderer.
Previously, left click anywhere in the cell toggled the checkbox.
This was unexpected when the cursor was far from the checkbox
in a wide column. With this change, one has to be over the
checkbox to toggle it.
Vadim Zeitlin [Wed, 23 Mar 2011 10:37:38 +0000 (10:37 +0000)]
Prevent event generation in wxGtkCalendarCtrl::SetDate().
Block not only gtk_day_selected_callback() but also gtk_month_changed_callback()
as we don't want wxEVT_CALENDAR_PAGE_CHANGED generated neither when calling
SetDate().
This fixes partial resetting of the just set value in wxDatePickerCtrl as
calling SetDate() there resulted in the date being reset from inside it and
the behaviour of the control was clearly wrong as could be seen in the widgets
sample.
Václav Slavík [Tue, 22 Mar 2011 19:13:28 +0000 (19:13 +0000)]
Fix <object_ref> processing to respect overridden attributes.
r60494 accidentally broke this, by adding faster code path for
child-less <object_ref>s. Unfortunately, this made it ignore
<object_ref>s without children, but with attributes overrides.
Vadim Zeitlin [Tue, 22 Mar 2011 17:15:56 +0000 (17:15 +0000)]
Add wxUSE_THREADS checks around wxMSW functions dealing with threads.
This removes the code unneeded in wxUSE_THREADS==0 build and also fixes
compilation of wxGUIAppTraits::WaitForThread() which didn't compile any more
with wxUSE_THREADS==0 since r67185.
Vadim Zeitlin [Tue, 22 Mar 2011 17:15:49 +0000 (17:15 +0000)]
Don't consider fully opaque bitmaps as having alpha in wxMSW.
Remove the alpha channel from the DIB we create not only if all of its pixels
are fully transparent but also if they are all fully opaque. This prevents us
from erroneously creating bitmaps with alpha channel when none is needed nor
expected.
Vadim Zeitlin [Tue, 22 Mar 2011 17:15:38 +0000 (17:15 +0000)]
Post size events to the event handler and not window itself.
Post the artificial wxSizeEvent to the window event handler and not window
itself in SendSizeEvent() as otherwise any event handlers wouldn't see this
event at all.
Vadim Zeitlin [Tue, 22 Mar 2011 17:15:34 +0000 (17:15 +0000)]
Use disabled version of normal bitmap for disabled one in wxMSW::wxButton.
Initialize the disabled button bitmap with a greyed out version of the normal
one instead of using the same normal bitmap for it. This is more consistent
with the other ports and makes more sense.
Vadim Zeitlin [Tue, 22 Mar 2011 15:07:20 +0000 (15:07 +0000)]
Correctly align background brush when erasing owner drawn bitmaps in wxMSW.
Add a hack to work around the problem with background alignment when drawing
the owner-drawn buttons in wxMSW. This fixes the alignment for any custom
brushes used for background painting but doesn't help with user-defined
EVT_ERASE_BACKGROUND handlers which still don't work well with the owner-drawn
buttons. Unfortunately DrawThemeParentBackground() remains a mystery and I
couldn't understand why not only doesn't it position the DC correctly on its
own but also ignores any attempts to do it manually.
This also doesn't help with the stubbornly remaining one pixel non-transparent
border around non-owner-drawn buttons which I just can't get rid of.
Applied patch by snowleopard2 fixing a bunch of typos such as misspellings and double words in the documentation. Combined the patch with some local queued typos waiting to be committed as well as adding new typo fixes inspired by the patch.
Function names with American spelling were not changed nor was third-party code touched. The only code changes involve some changes in strings that are translated ("Can not" -> "Cannot").
Jaakko Salli [Tue, 22 Mar 2011 09:56:40 +0000 (09:56 +0000)]
To have better support for themed and custom backgrounds for wxMSW wxComboCtrl, use WS_EX_COMPOSITED and wxBG_STYLE_ERASE instead of custom double-buffering (when made possible by the OS version)
Vadim Zeitlin [Mon, 21 Mar 2011 10:59:59 +0000 (10:59 +0000)]
Allow using milliseconds in wxLog timestamp.
Use wxDateTime::UNow() instead of time() and wxDateTime::Format() instead of
localtime() to make it possible to use "%l" specifier in wxLog time stamp.
Vadim Zeitlin [Sun, 20 Mar 2011 22:33:16 +0000 (22:33 +0000)]
Don't draw the mysterious black rectangle in the erase sample.
The black rectangle drawn in EVT_PAINT handler in the sample prevented the
custom background from showing through the wxStaticBitmap. Maybe it was
initially done intentionally but this makes the sample look broken so just
don't do this.
Read a few TIFF tags that assist with having a similar TIFF file when saving the image again, instead of (by default) always saving as a 24-bit RGB image. Also, in accordance with libtiff, allow reading X and Y resolution values even if the resolution unit tag is not set.
Applied (modified) patch by scottb. Closes #13015.
Jaakko Salli [Sun, 20 Mar 2011 10:59:22 +0000 (10:59 +0000)]
Redone (generic) wxComboCtrl background painting and handling. The 'actual' wxWindow background colour is now largely ignored and overridden to refer the text-area's background colour instead (as is usually the case with controls like this). Base 'transparent' background is now only painted when double-buffered rendering is required, and otherwise delegated to the system, as appropriate. This should significantly improve control's appearance and compliancy with GTK+ and OS X themes and custom backgrounds.
No changes, synchronised source names that appear commented at the top of files with the actual path to the files.
Fixed commented names (path, filename, and extension) of files in include/ and src/. Prepended the names in src/ with "src/" everywhere, while starting those in include/wx/ with "wx/".
Vadim Zeitlin [Sun, 20 Mar 2011 00:00:49 +0000 (00:00 +0000)]
Add wxPanel::SetBackgroundBitmap().
This method provides a simple way to set a background bitmap without defining
an EVT_ERASE_BACKGROUND handler and, more importantly, one that works
correctly in wxMSW for a window with children as it paints the background of
transparent children too.
Vadim Zeitlin [Sun, 20 Mar 2011 00:00:42 +0000 (00:00 +0000)]
Deprecate old style wxPanel ctor taking separate coordinates.
wxPanel had a ctor in very old (wx 1.x-compatible?) style which was marked as
"old" and not documented but not officially deprecated. Do deprecate it now in
view of removing it in later releases.
Vadim Zeitlin [Sun, 20 Mar 2011 00:00:38 +0000 (00:00 +0000)]
Split wxPanel in wxPanelBase and platform-specific files.
So far we have only wxMSW-specific implementation (and also a trivial
wxUniv-specific one) but it's still tidier to have all platform-specific code
in separate files, especially as we're going to have more of it for wxMSW
soon.
Vadim Zeitlin [Sun, 20 Mar 2011 00:00:29 +0000 (00:00 +0000)]
No changes, just refactor wxMSW background brush methods.
Factor out MSWGetCustomBgBrush() from MSWGetBgBrushForChild(). This is useful
as in the vast majority of cases the parent window will want to use the same
background brush for all of its children so it doesn't really care about the
concrete child passed to MSWGetBgBrushForChild() and we can adjust the brush
to the child origin in the common code instead of asking each derived class
overriding MSWGetBgBrushForChild() to do this.
This doesn't change anything but will make the upcoming changes to wxPanel
background painting simpler.
Vadim Zeitlin [Sat, 19 Mar 2011 11:57:13 +0000 (11:57 +0000)]
Fix wxRegKey::GetKeyInfo() output parameters in 64 bit builds.
Use intermediate 32 bit DWORD variables for ::RegQueryInfoKey() outputs as
size_t is 64 bit in 64 bit MSW builds and so the variables of type size_t
can't/shouldn't be passed directly to this function to avoid only filling
their lower 32 bits.
A C-style comment was not closed and resulted in the explanation of wxIMAGE_QUALITY_NORMAL additionally containing the explanation of wxIMAGE_QUALITY_BOX_AVERAGE and the latter having none. Regression since r67203.
Vadim Zeitlin [Fri, 18 Mar 2011 09:16:19 +0000 (09:16 +0000)]
Fix exporting clipboard data to primary selection in wxGTK.
Honour the requested selection in our selection handler instead of always
returning the default one resulting in wrong data being pasted when using
primary selection (e.g. middle clicking).
Add a method which can be used to indicate that the help window should prevent
the application from exiting and use it in the help sample to prevent it from
closing prematurely.
Vadim Zeitlin [Fri, 18 Mar 2011 09:16:06 +0000 (09:16 +0000)]
Limit the search in wxMSW virtual wxListCtrl by time.
Instead of performing the search only up to a certain number of items, do it
for as long as it takes less than the given time threshold (currently fixed at
half a second).
Vadim Zeitlin [Thu, 17 Mar 2011 11:35:37 +0000 (11:35 +0000)]
Add a wxStaticText to the erase simple.
This control explains better what is going on in the sample and also allows to
test whether wxStaticText itself has properly transparent background (this is
not currently the case under MSW).
Changed behaviour of wxImageResizeQuality parameter in wxImage.Scale and wxImage.Rescale.
Made the following changes:
* Formerly specifying to resize using wxIMAGE_QUALITY_BICUBIC or wxIMAGE_QUALITY_BILINEAR could result in the ResampleBox method being used. Now always resize with the method that the user actually specified.
* Added wxIMAGE_QUALITY_BOX_AVERAGE to explicitly allow resizing with the ResampleBox method.
* Previously wxIMAGE_QUALITY_HIGH was equal to wxIMAGE_QUALITY_BICUBIC. It has been changed to use wxIMAGE_QUALITY_BOX_AVERAGE when reducing the size of an image and wxIMAGE_QUALITY_BICUBIC in all other cases.
Changed wxImage.ResampleBox to always use a box size of at least 2 by 2 pixels.
Previously when resizing by more than 50% (for example resizing from 100x100 to 51x51 or 140x140) a box size of 1x1 would be used which effectively would give the same result as using nearest neighbour. Make sure that at least a box size of 2x2 pixels is always used.
Vadim Zeitlin [Tue, 15 Mar 2011 11:10:42 +0000 (11:10 +0000)]
Use consistent sizes for all icons used in the button page of widgets sample.
Explicitly pass wxART_BUTTON to wxArtProvider to ensure that all the icons are
returned in the same size, otherwise they didn't look well and could result in
an assert too, see #12909.
Vadim Zeitlin [Mon, 14 Mar 2011 11:55:05 +0000 (11:55 +0000)]
Show wx{Note,Tool}book-specific styles in the notebook sample too.
Demonstrate the use of styles such as wxNB_FIXEDWIDTH or wxTBK_HORZ_LAYOUT
specific to particular controls and not only the ones common to all of them.
Vadim Zeitlin [Mon, 14 Mar 2011 11:55:01 +0000 (11:55 +0000)]
Don't generate wxEVT_CHAR_HOOK events while the mouse is captured.
This prevents the parent TLW from interfering with the keyboard handling of
the window that captured the mouse which very often needs Escape for itself to
cancel the capture.
In particular, this fixes the problems with Escape closing the entire dialog
containing the controls instead of closing just the combobox drop down or a
popup menu in wxMSW.
Also modify wxGTK for consistency and update the documentation.
Vadim Zeitlin [Mon, 14 Mar 2011 11:54:51 +0000 (11:54 +0000)]
Don't intercept Escape key while IME is active.
Escape is used by IME and intercepting it at wxWidgets level to generate
EVT_CHAR_HOOK breaks the IME UI and may result in unexpected loss of data
entered by user.
To work around this, don't generate EVT_CHAR_HOOK for Escape while IME is
active by checking for the special semaphore variable (which could be also
used for other things in the future, see #9102) value.
Vadim Zeitlin [Mon, 14 Mar 2011 11:54:43 +0000 (11:54 +0000)]
Produce correct SVG files in all locales.
Using wxSVGFileDC in locales using comma as decimal separator resulted in
invalid SVG files being created as a decimal period should always be used in
them.
Fix this by replacing "%g" format specification with wxString::FromCDouble()
call (wrapped in a convenient NumStr() helper function).