环境: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