Project

General

Profile

WMenu submenus

Added by Paul de Wit over 6 years ago

I created a menu with two main items that each have submenu (Wt 4.0.0-rc2). The submenus contain a few items:

L1_item_1
  L2_item_1
  L2_item_2
  L2_item_3
L1_item_2
  L2_item_A
  L2_item_B
  L2_item_C

The selected L2 item is highlighted using CSS (.itemselected selector)

The problem is that there can be 2 selected items in the above menu, one in each submenu. E.g., when first L2_item_2 is selected and then L2_item_B, then both L2_item_2 and L2_item_B are highlighted. If then L2_item_1 is selected, it results in higlighted items L2_item_1 and L2_item_B.

In this memnu, there should be only 1 selected item.

This is the code outline:

auto L1_menu = Wt::cpp14::make_unique<WMenu>();
L1_menu->setInternalPathEnabled();
L1_menu->setInternalBasePath("/some-id");

for-loop
  Wt::WMenuItem *L1_menuitem = L1_menu->addItem( tr(L1-id) );
  L1_menuitem->setPathComponent( L1-id );
  L1_menuitem->addStyleClass("menu-L1");

  auto L2_menu = Wt::cpp14::make_unique<Wt::WMenu>();
  L2_menu->setInternalPathEnabled();
  L2_menu->setInternalBasePath( /some-id/L1-id );

  for-loop
    Wt::WMenuItem *L2_menuitem = L2_menu->addItem( ... );
    L2_menuitem->setPathComponent( L2-id );
    L2_menuitem->addStyleClass( ... );

  L1_menuitem->setMenu(std::move(L2_menu));