Project

General

Profile

Actions

Bug #13945

open

Regression in WPopupMenu with disabled items

Added by Andreas Frolov 8 days ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
08/26/2025
Due date:
% Done:

0%

Estimated time:

Description

If a WPopupMenu with disabled items is displayed as a context menu, some CSS classes are missing in such elements. This applies to both Bootstrap 5 and the Classic themes. However, if WPopupMenu is assigned to a WPushButton, the display is correct. The bug was added after version 4.11.0. Here is an example code

setTheme(std::make_shared<Wt::WBootstrap5Theme>());

auto button = std::make_unique<Wt::WPushButton>("Menu");

button->setAttributeValue("oncontextmenu", "event.cancelBubble = true; event.returnValue = false; return false;");
button->mouseWentUp().connect([this](const Wt::WMouseEvent& event) {
  if (event.button() == Wt::MouseButton::Right) {
    auto coordinate = event.document();
    auto menu = std::make_unique<Wt::WPopupMenu>();
    auto item1 = menu->addItem("Item 1");
    auto item2 = menu->addItem("Item 2");
    auto item3 = menu->addItem("bla.png", "Item 3");
    auto item4 = menu->addItem("bla.png", "Item 4");
    item1->setDisabled(true);
    item3->setDisabled(true);
    menu->exec(Wt::WPoint{ coordinate.x, coordinate.y });
  }
});

auto menu = std::make_unique<Wt::WPopupMenu>();
auto item1 = menu->addItem("Item 1");
auto item2 = menu->addItem("Item 2");
auto item3 = menu->addItem("bla.png", "Item 3");
auto item4 = menu->addItem("bla.png", "Item 4");
item1->setDisabled(true);
item3->setDisabled(true);
button->setMenu(std::move(menu));

root()->addWidget(std::move(button));

No data to display

Actions

Also available in: Atom PDF