Commit Graph

197 Commits

Author SHA1 Message Date
Vadim Zeitlin
017dc06b50 Use wxString::t_str() in calls to Windows API functions in wxMSW.
Use t_str() instead of wx_str() to make the code work correctly in UTF-8 build
in which wx_str() returns a pointer to UTF-8 buffer while we need a wchar_t
pointer for Windows.

Closes #14371.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71640 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-06-03 19:16:59 +00:00
Vadim Zeitlin
d34791c2be Fix incorrect cast resulting in a warning in wxMSW wxMenu code.
Menu id is a 32 bit UINT value, even in 64 bit builds, so don't cast it to
UINT_PTR.

Closes #13815.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-23 11:28:05 +00:00
Vadim Zeitlin
be85a191e1 No changes, just minor wxMSW code cleanup: use WinStruct<>.
Use WinStruct instead of the usual ZeroMemory() + cbSize setting fragment to
initialize Win32 structs that need to be initialized in this way.

No real changes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70383 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-18 10:05:27 +00:00
Vadim Zeitlin
e4a23857ec Implement wxMenuBar::EnableTop() for wxMSW and wxGTK.
This method was only available in wxUniv before and just always returned true
in the other ports. Implement it for wxMSW and wxGTK too now and document it.
Also add a unit test.

Closes #795.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70350 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-15 13:41:17 +00:00
Vadim Zeitlin
af36ec0aa1 Correct wrong checks for wxUSE_OWNER_DRAWN.
Fix the checks added in r70316, wxUSE_OWNER_DRAWN should have been used
instead of inexistent and undefined wxUSE_OWNER_DRAW.

See #13851.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70343 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-15 01:01:44 +00:00
Vadim Zeitlin
51c2f7ea41 Add wxUSE_OWNER_DRAW checks to wxMSW wxMenu code.
Allow compiling with wxUSE_OWNER_DRAW==0. This fixes another problem in
Windows CE build where owner drawn menus are not supported.

Closes #13851.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70316 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-11 13:42:02 +00:00
Vadim Zeitlin
e23e368bc4 Fix int field of wxCommandEvents generated by menu items in wxMSW.
Set the int field of wxCommandEvent generated by clicking on the menu items
correctly for not checkable items: it is supposed to be -1 and not 0 (which is
the value for checkable but currently unchecked items). This was already the
case for wxGTK and wxOSX and implied by the comments in the code.

Make wxMSW behave like this too and clearly document this behaviour.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69101 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-16 13:23:14 +00:00
Vadim Zeitlin
99893e284f Fix int field of wxCommandEvent generated by popup menu items in wxMSW.
The intention of the code generating the event for popup menu items was to
pass false (0) or true (1) in the int field of wxCommandEvent to indicate
whether the item was checked or not but, because wxMenu::SendEvent() takes int
as second argument and not book, we passed either 0 or MF_CHECKED (== 8).

Fix this by correctly passing a boolean for checkable items.

See #11644.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69100 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-16 13:23:10 +00:00
Vadim Zeitlin
3f8502f7fc Fix checked state for the popup menu items in the events generated by them.
We incorrectly passed the sign-extended int id to ::GetMenuState() function
that expects an unsigned WORD id, so it never found the item if the WORD id
had the high bit set. Fix this by correctly passing the unsigned id to it.

Closes #11644.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69099 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-16 13:23:05 +00:00
Vadim Zeitlin
960493053b Added private wxMenu::MSWNewFromHMENU() method.
Add a method allowing creation of a wxMenu object from a native menu handle.
This will be used to implement access to the system menu in an upcoming commit
but could also be useful for other purposes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68595 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-08 09:32:39 +00:00
Vadim Zeitlin
89511b4268 Rewrote wxMSW radio menu items code to support not only appending them.
Previously the radio menu items could only be appended to a menu in wxMSW,
inserting them (either in an existing radio group or to start a new one) not
only didn't work but could even result in crashes because invalid iterators in
the menu items list could be used.

Fix this by storing the ranges of all radio groups in wxMenu itself instead of
storing the information about the radio group an item belongs to in the item
itself and by updating this data whenever a new radio item is inserted. Also
get rid of the notion of "current radio group" in wxMenu which doesn't really
make any sense.

Finally add a unit test checking that inserting radio items works as expected.

Closes #13200.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67720 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-05-10 08:50:38 +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
a99a3029c8 Fix HMENU to wxMenu translation in wxMSW code.
We didn't find the menus corresponding to the submenu handles. This resulted
in incorrect processing of EVT_UPDATE_UI events for the submenus and probably
other problems.

Fix this by searching for the HMENU recursively in all menus.

Closes #13080.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67355 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-31 09:28:38 +00:00
Vadim Zeitlin
41628a43cb Don't adjust menu item positions for title for menubar menus in wxMSW.
The code in wxMSW menu code which accounted for the extra items used to show
popup menu title has become incorrect since the changes of r66178 as now the
non-popup menus have titles as well.

Correct the check to only do the adjustment for the popup menus.

Closes #12922.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66845 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-05 16:38:53 +00:00
Stefan Csomor
9f855638c3 removing xti info from msw specific files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66628 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-07 17:45:58 +00:00
Vadim Zeitlin
7ee9a64bd6 Simplify wxMSW wxMenuBar title management.
Store the titles of the menu bar menus in the menu objects themselves. This
makes wxMenu::GetTitle() return the expected result for them (which also fixes
the current unit test failures for wxMSW) and makes wxMenuBar code simpler.

This removes the wxMenuInfo class which existed for XTI purposes only but as
it was apparently unfinished and MSW-specific it shouldn't be a big loss.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66178 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-17 01:20:50 +00:00
Václav Slavík
008809c73c Prevent idMenuTitle from being accidentally used as invalid wx ID.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64257 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-05-09 10:27:44 +00:00
Václav Slavík
163e127d2e Fixed popup menu's title to be bold regardless of method used.
Popup menus with title set via SetTitle() had bold font, but menus
created by passing title as ctor argument used normal font. Fixed this
by using the same code (SetTitle) in both cases, instead of having two
independent (and out of sync) implementations of the same functionality.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-05-09 10:27:35 +00:00
Vadim Zeitlin
7118e711dc Move wxMSW wxMenu::GetWindow() down to wxMenuBase.
GetInvokingWindow() can only be used for the popup menus which have the
invoking window, so add a new function which can be used to get the window
associated with any kind of menu in all ports -- it already existed in wxMSW
but is needed elsewhere too.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64123 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-04-24 15:07:39 +00:00
Vadim Zeitlin
e3f5caa223 Return correct invoking window for submenus of a popup menu.
SetInvokingWindow() is only called for the top menu being popped up itself but
the invoking window should also be associated with its submenus.

Modify GetInvokingWindow() to return the parents invoking window for submenus.

This fixes a crash due to returning NULL from wxMenu::GetWindow() in wxMSW
owner-drawn code.

And it also makes redundant some code in wxUniversal wxMenu implementation
which can now simply use GetInvokingWindow() in all cases.

Closes #11957.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64104 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-04-22 11:21:35 +00:00
Vadim Zeitlin
c71238020c Remove the extra margins when checking owner drawn menu icons size.
The extra +4 in IsLessThanStdSize() functions resulted in assert failures
under Windows XP after the ownerdraw drawing changes so remove it as nobody
knew why was it there anyhow.

Also replace IsLessThanStdSize() with IsGreaterThanStdSize() to allow using it
directly instead of always testing for !IsLessThanStdSize().

See #11657.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64088 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-04-21 14:40:28 +00:00
Vadim Zeitlin
9c32ed26a2 Correct alignment of menu accelerator strings in owner-drawn menus.
Draw them right-aligned as the native menus do.

Closes #11479.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-23 13:21:46 +00:00
Vadim Zeitlin
aa4919edd1 Use theme functions for drawing owner-drawn menus.
This makes the menu items with custom attributes or bitmaps look more native,
especially on post-XP systems.

Closes #11420.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63223 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-23 13:21:36 +00:00
Vadim Zeitlin
d08504dfa5 Fix calculation of the margins for owner-drawn menu items.
Take into account the widths of the bitmaps properly.

Closes #11268.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63222 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-23 13:21:27 +00:00
Vadim Zeitlin
4e7c767fed Set up menu bitmaps correctly for checkable items.
We must not set MENUITEMINFO::hbmpItem for the checkable items as it would
then be used for both checked and unchecked state.

Closes #11244.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63221 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-23 13:21:20 +00:00
Vadim Zeitlin
98fbab9e7b Refactor owner-drawing code.
Only keep common code in the base class and extract all menu/listbox-specific
stuff into derived classes.

This makes the code cleaner and more maintainable but introduces some problems
in wxCheckListBox appearance which will be fixed by the next patch.

Closes #10635.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-23 13:21:12 +00:00
Vadim Zeitlin
bbb8a1aad6 Use checked bitmap for menu items under Vista.
The normal (unchecked) bitmap was always used for the menu items under Vista,
fix this and do use the checked bitmap if needed.

Closes #11244.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62142 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-09-26 13:31:32 +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
a5d85ef032 don't make the items owner drawn unnecessarily under recent Windows systems; fix handling of checked/unchecked bitmaps under Vista too; simplify the code by refactoring bitmaps handling in a separate function
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59764 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-23 12:09:58 +00:00
Vadim Zeitlin
a0c9006654 don't use HBMMENU_CALLBACK under Windows Vista as this results in losing the themed menu display
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59707 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-21 21:31:21 +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
33f4afdbc0 define MIIM_BITMAP &c in wx/msw/missing.h instead of msw/menu.cpp as menuitem.cpp now needs them too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-31 20:52:44 +00:00
Vadim Zeitlin
37ddd6ea64 don't use built-in support for menu bitmaps if they are too big, they don't come out correctly then (see #10452)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58557 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-31 18:12:14 +00:00
Vadim Zeitlin
67fdb6f9af added CreateAccelTable() helper which creates the accel table for just this menu
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-27 16:45:24 +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
Vadim Zeitlin
7802da36fa don't duplicate base class m_acceleratorTable as m_accelTable in wxMenuBar, this is not only unnecessary but also doesn't allow using GetAcceleratorTable() to retrieve the menu bar accelerators (#9654)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56070 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-10-03 22:15:40 +00:00
Vadim Zeitlin
8a9e5d8590 compilation fix for eVC4: include commctrl.h explicitely
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54692 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-07-18 13:47:05 +00:00
Vadim Zeitlin
67cb1dfa7f support disabling items before adding them to the menu (#3423)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54478 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-07-03 15:42:18 +00:00
Vadim Zeitlin
dca0f65178 more /Wp64 warning fixes: mostly use UINT_PTR instead of UINT and define our WX[WL]PARAM with __w64 if available to avoid hundreds of warnings when casting LPARAMs to pointers/handles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52165 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-02-28 02:22:52 +00:00
Vadim Zeitlin
05be97a866 fix signed/unsigned comparison warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50725 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-12-15 17:50:02 +00:00
Vadim Zeitlin
660e7fda2c fix several problems in handling of the menu items with negative ids
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50033 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-17 20:38:07 +00:00
Vadim Zeitlin
deac32b034 reverted last changed (r49413) as deleting non-attached menus fails under Windows 95
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-10-30 18:51:16 +00:00
Vadim Zeitlin
cfdcfeafbe always delete the menus, even if the menu is attached (at the very least this fixes Purify warnings)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49413 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-10-24 23:41:45 +00:00
Vadim Zeitlin
0edeeb6d96 use wxWindow::NewControlId() instead of wxNewId() to avoid clashes with user-defined ids; bug fixes in wxMSW for negative menu and toolbar items ids
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48840 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-09-20 22:58:55 +00:00
Julian Smart
52af3158e9 Menu label consistency changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48023 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-08-11 17:54:59 +00:00
Vadim Zeitlin
2e297951cd we must use TB_BUTTONSTRUCTSIZE before adding menu items to the toolbar; also send SHCMBM_GETMENU after creating the menus, otherwise it always returns NULL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47816 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-07-29 13:56:05 +00:00
Vadim Zeitlin
d6f2a8911e many compilation fixes for WinCE using VC8 (it now build, although still doesn't work)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47749 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-07-27 16:34:24 +00:00
Václav Slavík
e0a050e347 more changes to make wx compile without implicit wxString->char* conversion (for STL build)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46553 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-20 07:44:45 +00:00
Vadim Zeitlin
191abe25ad correct the checked flag in the event generated by checkable menu items (fixes bug introduced in 1.144, patch 1685634)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45013 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-03-22 03:01:50 +00:00