0005 숨겨진 창이 주인인 창도 보이게

From 카카오톡 on Wine
Jump to navigationJump to search

트레이 메뉴가 아예 뜨지 않았습니다. 엉뚱한 자리에 뜬 것도 다른 창 뒤에 가린 것도 아니고, 그냥 어디에도 없었습니다.

wayland_win_data_create_wayland_surface는 주인이 있는 창에 주인 표면의 서브서피스를 줍니다. 화면에 없는 주인의 표면에는 역할이 없고, 드라이버는 빈 xdg_toplevel로 컴포지터를 채우지 않으려고 일부러 그렇게 둡니다. 지도에 없는 표면의 서브서피스는 어디에도 그려지지 않습니다.

그래서 주인이 실제로 화면에 있을 때만 서브서피스로 붙이고, 그렇지 않으면 자기 표면을 주도록 했습니다. 주인이 아예 없는 창은 원래부터 그렇게 하고 있었습니다.

이것은 화면이 아니라 Win32에 물어서 찾아냈습니다. 메뉴 창은 분명히 존재하고 visible=1에 크기 124x141, 위치까지 멀쩡한데, 주인이 0x0 크기에 visible=0인 EVA_Window_Dblclk였습니다.

이 변경이 넓이 없는 창까지 올려버려서 0009가 뒤를 수습합니다.