Commit Graph

29 Commits

Author SHA1 Message Date
Vadim Zeitlin
187839afce Don't set stretchable spacers size to 0, this doesn't work so use 1 instead.
If the toolbar is not big enough for its fixed-size contents, we set the size
of the tools corresponding to stretchable spacers to 0 but this didn't really
work and resulted in bad toolbar appearance even after resizing it to be big
enough (as could be seen in samples/xrc).

So set the spacers size to at least 1 to ensure that we do resize them
correctly.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63173 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-18 00:29:05 +00:00
Vadim Zeitlin
f3d0bc4364 Erase toolbar background even if it doesn't contain any controls/spaces.
Minor correction to changes in r62971: we still need to hook WM_ERASEBKGND in
toolbar parent when painting the toolbar itself even when there are no dummy
separators in it (and so we don't need to paint them over). Without this, the
background of simple toolbars without controls was not erased correctly.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62980 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-12-23 21:42:06 +00:00
Vadim Zeitlin
bec9bf3e20 Finally really correct background erasing for wxMSW wxToolBar.
Do use TBSTYLE_FLAT and TBSTYLE_TRANSPARENT (the former actually implies the
latter) for MSW toolbar as it is the only way to avoid the flicker of toolbar
buttons. These styles were disabled before because of lack of understanding
about how they worked: with them, the toolbar supposes that its parent takes
care of erasing its background but wx didn't do this (in fact wxFrame did
accidentally erase toolbar background because of the use of Win32 client
rectangle, including tool/status bars, instead of wx client rectangle,
excluding them, in wxWindowMSW::DoEraseBackground(), but it didn't do it
correctly).

Now we allow hooking WM_ERASEBKGND events processing in a parent window by a
child one and use this to handle toolbar background erasing in toolbar itself.
We still prevent the native toolbar from drawing dummy separators and always
erase the area occupied by them ourselves and thus avoid the flicker entirely.

The only remaining flicker in the toolbar sample is that of embedded
wxStaticText control. It does appear with correctly transparent background and
bitmaps with alpha channel also (still) are drawn correctly in wxStaticBitmaps
embedded in the toolbar.

Finally, we still use solid background brush for toolbar but we can easily use
a themed background if really desired, there is just a single function to
change to do it (MSWGetToolbarBgBrush()).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62971 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-12-22 15:37:43 +00:00
Vadim Zeitlin
8c118ca4cb Don't draw over dummy separators in MSW toolbar, just don't draw them at all.
Prevent the native toolbar from drawing the separators which we use simply as
placeholders by excluding them from the update region when handling WM_PAINT.

This reduces flicker by not redrawing the areas occupied by these separators
twice and also prevents them from ever being shown (you could see them briefly
appear before being erased before).

The other toolbar tools still flicker though, there doesn't seem to be any
simple way to prevent the control from entirely invalidating itself whenever
it is resized.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62934 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-12-18 22:31:48 +00:00
Vadim Zeitlin
b93051ef46 Don't force themed background for wxToolBar under MSW, just use the default.
Native toolbars don't have themed background under Vista/7 and don't look good
with rebar background (which is the same one as used for the menus) as
toolbars don't appear on the top of the window.

Erasing background ourselves also results in flicker and display problems and
makes the code much more complicated. Simply don't do this to avoid all the
problems.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62931 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-12-18 20:49:15 +00:00
Vadim Zeitlin
388feca61b Restore the use of the correct brush for toolbar background erasing.
The call to SetBrush() was mistakenly removed in r62850 but it is needed
because wxClientDC only inherits background colour but not the brush used by
DrawRectangle() call in wxToolBar::MSWEraseRect(), so the wrong colour was
used under systems < Vista.

Restore this call now.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62922 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-12-18 14:46:38 +00:00
Vadim Zeitlin
cc26010927 Add support for stretchable spaces to wxToolBar.
Stretchable spaces consume all extra toolbar space not allocated to the fixed
size items. They can in particular be used to right-align (some) toolbar tools.

Add and document the new API, change the sample to show it and implement it
for MSW, GTK and OS X/Cocoa.

Also refactor MSW background erasing/repainting code to avoid duplicated calls
to DrawThemeBackground(), call it from a new helper MSWEraseRect() function.

Note that we may want to add support for "invisible" separators, IOW
non-stretchable spaces. This could be easily done for MSW after the changes in
this commit and is supported natively by GTK+ and Cocoa so implementing this
would be trivial if there is any interest.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62850 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-12-10 03:04:19 +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
43b2d5e7c3 Put braces around all calls to wxLogFunctions() inside an if statement.
This suppresses all the remaining g++ -Wparentheses warnings and uses consistent style everywhere.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-20 16:47:54 +00:00
Vadim Zeitlin
bb2212e6c4 adjust the toolbar tools bitmap size to fit the biggest bitmap used under wxOSX too, not only under MSW (and moved the code doing it to the common base class to avoid duplicating it)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61174 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-06-23 10:21:18 +00:00
Vadim Zeitlin
6540d8d2ba WinCE compilation fix: ifdef out HandlePaint() (see #10731)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60387 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-04-26 12:45:25 +00:00
Vadim Zeitlin
c0c133e13b add wx-prefixed and semicolon-requiring versions of DECLARE_NO_{COPY,ASSIGN}_CLASS macros
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-08 11:45:59 +00:00
Vadim Zeitlin
040d3c2ebf restore the default bitmap icons size to 16*15, making them larger if necessary is enough and doesn't result in having ugly 16*16 bitmaps in a 24*24 button rectangle
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58646 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-04 12:19:45 +00:00
Vadim Zeitlin
664e13143e renamed wx/ptr_shrd.h to wx/sharedptr.h; split wx/ptr_scpd.h in wx/scopedptr.h and wx/scopedarray.h; extracted common parts into new wx/checkeddelete.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58634 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-03 12:01:46 +00:00
Vadim Zeitlin
0580ddb24f no real changes, just remove unnecessary code; use wxScopedArray instead of raw one
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58553 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-31 14:04:23 +00:00
Václav Slavík
26dd7154d5 Automatically adjust toolbar's tool size if the provided bitmaps
don't fit into the default size.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58444 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-26 23:20:17 +00:00
Václav Slavík
2d8b540af8 changed wxMSW's default toolbar bitmaps size from obsolete 16x15 to 24x24 used by modern apps
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-26 23:16:51 +00:00
Vadim Zeitlin
d3b9f782ef don't use annoying and unneeded in C++ casts of NULL to "T *" in all other files neither
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-19 13:55:27 +00:00
Václav Slavík
5f4250ede0 fix for r56618: toolbar event handlers can toggle or disable tools again (patch #10241)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-09 18:35:48 +00:00
Vadim Zeitlin
5c33522fca replace wx_{const,static,reinterpret}_cast with their standard C++ equivalents
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-02 02:39:52 +00:00
Václav Slavík
ed7701bd5f fix toolbar buttons so that they don't disappear temporarily when clicked if the event handler causes window update
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56617 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-10-31 09:41:47 +00:00
Vadim Zeitlin
1c2b921a1c don't use our custom WM_PAINT handler with composited window as this results in an endless repaint loop (#9666); also don't even define HandlePaint() under CE as it's never used there
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54939 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-08-02 22:34:37 +00:00
Vadim Zeitlin
0dba08dd39 move SendSizeEvent() down to wxWindow from wxFrame; added SendSizeEventToParent() helper
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54803 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-07-29 12:32:47 +00:00
Vadim Zeitlin
345d60d357 fix crash when repositioning tools without labels in DoDeleteTool() (ticket #9530)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53962 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-06-03 12:45:43 +00:00
Vadim Zeitlin
fd6939a6d2 don't call TB_GETITEMRECT with invalid tool index
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53494 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-05-08 14:57:00 +00:00
Vadim Zeitlin
3c30bbb9fa correct toolbar width calculation with comctl32.dll < 6.0 (patch 1902358); simplified the code a little by introducing wxGetTBItemRect() function
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53486 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-05-08 13:19:24 +00:00
Vadim Zeitlin
9ccffa515c fix unused parameter warning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52937 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-03-31 14:53:22 +00:00
Vadim Zeitlin
1be45608e7 Several fixes for removing/readding controls to the toolbar:
1. Don't destroy the control in wxToolBar::RemoveTool() as this prevents
   it from being added back with is the purpose of using RemoveTool() rather
   than DeleteTool().

2. Call wxToolBarTool::Attach/Detach() from the base code, not just from wxMSW
   and wxMac (wasn't called by wxGTK at all).

3. Allow adding back the removed control tool in wxGTK.

4. Add test for removing/adding back a control tool to the sample.



git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52840 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-03-27 00:10:19 +00:00
Vadim Zeitlin
936f635341 rename fobr95.{cpp,h} files to foobar.{cpp,h}
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52551 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-03-15 16:53:06 +00:00