summaryrefslogtreecommitdiffstats
path: root/client/windows/red_window.cpp
diff options
context:
space:
mode:
authorArnon Gilboa <agilboa@redhat.com>2010-01-07 11:02:50 +0200
committerYaniv Kamay <ykamay@redhat.com>2010-01-07 13:53:41 +0200
commitdcf326cfd523c135bd0be8f9a4bc2da6c78b2d23 (patch)
tree8a026f5ab2cff5437b1e6817131800549c8f99af /client/windows/red_window.cpp
parent81945d89710d9b03d829ebd4f040b0e8f3f2b507 (diff)
downloadspice-dcf326cfd523c135bd0be8f9a4bc2da6c78b2d23.tar.gz
spice-dcf326cfd523c135bd0be8f9a4bc2da6c78b2d23.tar.xz
spice-dcf326cfd523c135bd0be8f9a4bc2da6c78b2d23.zip
spice: menu additons
-functions: set_name, remove_command, remove_sub, clear -item state & enum -add state support in RedWindow insert_command & insert_menu
Diffstat (limited to 'client/windows/red_window.cpp')
-rw-r--r--client/windows/red_window.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/client/windows/red_window.cpp b/client/windows/red_window.cpp
index 47467194..2d415d1e 100644
--- a/client/windows/red_window.cpp
+++ b/client/windows/red_window.cpp
@@ -906,17 +906,24 @@ static void utf8_to_wchar(const std::string& src, std::wstring& dest)
MultiByteToWideChar(CP_UTF8, 0, src.c_str(), -1, (wchar_t *)dest.c_str(), len);
}
-static void insert_command(HMENU menu, const std::string& name, int id)
+static void insert_command(HMENU menu, const std::string& name, int id, int state)
{
MENUITEMINFO item_info;
item_info.cbSize = sizeof(item_info);
- item_info.fMask = MIIM_TYPE | MIIM_ID;
+ item_info.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
item_info.fType = MFT_STRING;
std::wstring wname;
utf8_to_wchar(name, wname);
item_info.cch = wname.size();
item_info.dwTypeData = (wchar_t *)wname.c_str();
item_info.wID = id;
+ item_info.fState = MFS_ENABLED;
+ if (state & Menu::MENU_ITEM_STATE_CHECKED) {
+ item_info.fState |= MFS_CHECKED;
+ }
+ if (state & Menu::MENU_ITEM_STATE_DIM) {
+ item_info.fState |= MFS_DISABLED;
+ }
InsertMenuItem(menu, GetMenuItemCount(menu), TRUE, &item_info);
}
@@ -969,10 +976,11 @@ static void insert_menu(Menu* menu, HMENU native, CommandMap& _commands_map)
case Menu::MENU_ITEM_TYPE_COMMAND: {
std::string name;
int command_id;
- menu->command_at(pos, name, command_id);
+ int state;
+ menu->command_at(pos, name, command_id, state);
int sys_command = alloc_sys_cmd_id();
_commands_map[sys_command] = CommandInfo(menu, command_id);
- insert_command(native, name, sys_command);
+ insert_command(native, name, sys_command, state);
break;
}
case Menu::MENU_ITEM_TYPE_MENU: {