Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5ccb692f3e65ac32d6d6b83796dd8c9ca0bf1e1b
      
https://github.com/WebKit/WebKit/commit/5ccb692f3e65ac32d6d6b83796dd8c9ca0bf1e1b
  Author: Patrick Griffis <[email protected]>
  Date:   2026-06-12 (Fri, 12 Jun 2026)

  Changed paths:
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/css/CSSPseudoSelectors.json
    M Source/WebCore/css/html.css
    A Source/WebCore/html/FallbackPopupMenu.cpp
    A Source/WebCore/html/FallbackPopupMenu.h
    M Source/WebCore/html/HTMLSelectElement.cpp
    M Source/WebCore/html/HTMLSelectElement.h
    M Source/WebCore/html/LazyLoadVideoObserver.h
    M Source/WebCore/platform/PopupMenuClient.h
    M Source/WebKit/UIProcess/API/wpe/WebKitPopupMenu.cpp
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxyInternals.h
    M Source/WebKit/UIProcess/WebPopupMenuProxy.h
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebPopupMenu.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/WebPage.messages.in

  Log Message:
  -----------
  [WPE] Implement a fallback popup menu
https://bugs.webkit.org/show_bug.cgi?id=310383

Reviewed by Carlos Garcia Campos.

When using WPE, depending on the backend, it may not have the capability
of creating a popup menu. In this case we fallback to WebKit rendering
its own.

The fallback popup supports all of the styling WebKit supports.
It tries to mimic a native OS popup in behavior where possible.

* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/css/CSSPseudoSelectors.json:
* Source/WebCore/css/html.css:
(select::-internal-fallback-popup-menu):
(select::-internal-fallback-popup-menu-item,):
(select::-internal-fallback-popup-menu-item-selected):
(select::-internal-fallback-popup-menu-item:hover,):
(select::-internal-fallback-popup-menu-group-label):
(select::-internal-fallback-popup-menu-separator):
* Source/WebCore/html/FallbackPopupMenu.cpp: Added.
(WebCore::applyFontCascade):
(WebCore::applyItemStyle):
(WebCore::applyMenuStyle):
(WebCore::FallbackPopupMenu::FallbackPopupMenu):
(WebCore::FallbackPopupMenu::~FallbackPopupMenu):
(WebCore::FallbackPopupMenu::show):
(WebCore::FallbackPopupMenu::hide):
(WebCore::FallbackPopupMenu::updateFromElement):
(WebCore::FallbackPopupMenu::updateFromElementTimerFired):
(WebCore::FallbackPopupMenu::disconnectClient):
(WebCore::FallbackPopupMenu::itemClicked):
(WebCore::FallbackPopupMenu::maybeClose):
(WebCore::FallbackPopupMenu::buildPopupTree):
(WebCore::FallbackPopupMenu::deletePopupTree):
* Source/WebCore/html/FallbackPopupMenu.h: Added.
(WebCore::FallbackPopupMenu::create):
* Source/WebCore/html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::menuListDefaultEventHandler):
* Source/WebCore/html/HTMLSelectElement.h:
* Source/WebCore/html/LazyLoadVideoObserver.h:
* Source/WebCore/platform/PopupMenuClient.h:
(WebCore::PopupMenuClient::showFallbackPopupMenu):
* Source/WebCore/rendering/svg/RenderSVGText.cpp:
* Source/WebKit/UIProcess/API/wpe/WebKitPopupMenu.cpp:
(WebKit::WebKitPopupMenu::showPopupMenu):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
* Source/WebKit/UIProcess/WebPageProxyInternals.h:
* Source/WebKit/UIProcess/WebPopupMenuProxy.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createPopupMenu const):
* Source/WebKit/WebProcess/WebCoreSupport/WebPopupMenu.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::failedToShowPopupMenu):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:

Canonical link: https://commits.webkit.org/315096@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to