marco之窗口最大化流程分析

环境:debian 12.5、mate desktop。
参考:marco 1.20.2

 如上图,当点击窗口菜单的最大化按钮,marco 如何与系统交互来响应此要求呢?
首先,meta_window_maximize 函数负责将窗口最大化的具体操作。此函数会在menu_callback中被调用。menu_callback会作为参数传递给函数meta_ui_window_menu_new.

因此,需要跟踪函数meta_ui_window_menu_new流程,确定menu_callback存放的位置。

void meta_window_show_menu (MetaWindow *window,
                       int         root_x,
                       int         root_y,
                       int         button,
                       guint32     timestamp)
{
  ......
menu =
    meta_ui_window_menu_new (window->screen->ui,
                             window->xwindow,
                             ops,
                             insensitive,
                             meta_window_get_net_wm_desktop (window),
                             meta_screen_get_n_workspaces (window->screen),
                             menu_callback,
                             NULL);
  ......
}

MetaWindowMenu*
meta_ui_window_menu_new  (MetaUI             *ui,
                          Window              client_xwindow,
                          MetaMenuOp     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值