feat: allow GUID parameter to avoid systray demotion on Windows (#21891)
* fix: systray icon demotion Adding support for GUID parameter in Tray API. In combination with signed binaries this allows to maintain the position in the systray on Windows. * unit tests * make mac and linux compile
This commit is contained in:
parent
2955c67c4e
commit
89eb309d0b
13 changed files with 143 additions and 15 deletions
|
@ -17,6 +17,7 @@
|
|||
#include "base/memory/weak_ptr.h"
|
||||
#include "base/win/scoped_gdi_object.h"
|
||||
#include "shell/browser/ui/tray_icon.h"
|
||||
#include "shell/browser/ui/win/notify_icon_host.h"
|
||||
|
||||
namespace gfx {
|
||||
class Point;
|
||||
|
@ -34,7 +35,11 @@ class NotifyIconHost;
|
|||
class NotifyIcon : public TrayIcon {
|
||||
public:
|
||||
// Constructor which provides this icon's unique ID and messaging window.
|
||||
NotifyIcon(NotifyIconHost* host, UINT id, HWND window, UINT message);
|
||||
NotifyIcon(NotifyIconHost* host,
|
||||
UINT id,
|
||||
HWND window,
|
||||
UINT message,
|
||||
GUID guid);
|
||||
~NotifyIcon() override;
|
||||
|
||||
// Handles a click event from the user - if |left_button_click| is true and
|
||||
|
@ -53,6 +58,7 @@ class NotifyIcon : public TrayIcon {
|
|||
UINT icon_id() const { return icon_id_; }
|
||||
HWND window() const { return window_; }
|
||||
UINT message_id() const { return message_id_; }
|
||||
GUID guid() const { return guid_; }
|
||||
|
||||
// Overridden from TrayIcon:
|
||||
void SetImage(HICON image) override;
|
||||
|
@ -89,6 +95,12 @@ class NotifyIcon : public TrayIcon {
|
|||
// The context menu.
|
||||
AtomMenuModel* menu_model_ = nullptr;
|
||||
|
||||
// An optional GUID used for identifying tray entries on Windows
|
||||
GUID guid_ = GUID_DEFAULT;
|
||||
|
||||
// indicates whether the tray entry is associated with a guid
|
||||
bool is_using_guid_ = false;
|
||||
|
||||
// Context menu associated with this icon (if any).
|
||||
std::unique_ptr<views::MenuRunner> menu_runner_;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue