使用扩展程序在通知托盘中显示多行通知说明

Showing more than one line of the notification description in the notification tray using an extension

我目前正在设计一个扩展程序,使日历的通知部分中的通知成为可消耗的。目标是使通知像桌面上的初始通知一样扩展。我已将添加到通知托盘的通知类型从 class NotificationMessage 更改为 class NotificationBanner。我目前正在使用变通方法来完成这项工作,这就是我的扩展函数的样子:

expand(animate) {
        this.expanded = true;
        this._actionBin.visible = this._actionBin.get_n_children() > 0;
        if (this._bodyStack.get_n_children() < 2) {
            this._expandedLabel = new MessageList.URLHighlighter(this._bodyText,
                true, this._useBodyMarkup);
            this.setExpandedBody(this._expandedLabel);
        }
        if (animate) {
            if (!this.clickedByButton && !this.forceExpansion) {
                // This is the usual way notifications are expanded, using the layout manager
                this._bodyStack.ease_property('@layout.expansion', 1, {
                    progress_mode: Clutter.AnimationMode.EASE_OUT_QUAD,
                    duration: MessageTray.ANIMATION_TIME,
                });
            }
            else if (this.forceExpansion || this.clickedByButton) {
                // When auto expanding or clicked by button, change height of body 
                oldHeight = this.bodyLabel.get_height();
                const lines = Math.ceil(this._bodyText.length / 54);
                this.bodyLabel.set_height(lines * this.bodyLabel.get_height());
            }
            this._actionBin.scale_y = 0;
            this._actionBin.ease({
                scale_y: 1,
                duration: MessageTray.ANIMATION_TIME,
                mode: Clutter.AnimationMode.EASE_OUT_QUAD,
            });
        } else {
            this._bodyStack.layout_manager.expansion = 1;
            this._actionBin.scale_y = 1;
        }
        this.emit('expanded');
    }

如您所见,我对此扩展有 2 个选项:强制展开所有通知或让用户使用按钮展开。目前的解决方案并不优雅,它只是改变了管理正文的通知标签的高度。此外,通知正文仍然显示三个点,这意味着通知正文仍未展开。我认为这是布局管理器的问题,因为正确的扩展方式是将 message._bodyStack.layout_manager.expansion 设置为 1。这在通知托盘中扩展消息的情况下不起作用。是否有人熟悉布局管理器或可以帮助我找到不同的解决方案?这是我当前解决方案的图像: Image of an automatically expanded notification in the notification tray due to the extension (note the three dots at the end of the first line being still there)

好的,我找到了解决方案,它与布局管理器无关。消息 message.bodyLabel.clutter_text.ellipsize 的值设置为 3,这是通知上出现圆点的主要原因。将此值设置为 0 可解决此问题。我仍然希望找到一种更优雅的方法来显示 body,但这样就可以了。