/* Note that we use marked_message_internal to avoid resetting the alarm. */ void update_window_names (rp_screen *s, char *fmt) { struct sbuf *bar_buffer; int mark_start = 0; int mark_end = 0; if (s->bar_is_raised != BAR_IS_WINDOW_LIST) return; bar_buffer = sbuf_new (0); if(defaults.window_list_style == STYLE_ROW) { get_window_list (fmt, NULL, bar_buffer, &mark_start, &mark_end); marked_message_internal (sbuf_get (bar_buffer), mark_start, mark_end); } else { get_window_list (fmt, "\n", bar_buffer, &mark_start, &mark_end); marked_message_internal (sbuf_get (bar_buffer), mark_start, mark_end); } /* marked_message (sbuf_get (bar_buffer), mark_start, mark_end); */ sbuf_free (bar_buffer); }
WindowPtr WindowManager::getWindowFromID(unsigned id) { auto it = get_window_list().find(id); if(it == get_window_list().end()) { return nullptr; } return it->second.lock(); }
std::vector<WindowPtr> WindowManager::getWindowList() { std::vector<WindowPtr> res; auto it = get_window_list().begin(); for(auto& w : get_window_list()) { res.emplace_back(w.second.lock()); } return res; }
void WindowManager::createWindow(WindowPtr wnd) { wnd->createWindow(); // Add a weak_ptr to our window to the list of id versus windows. get_window_list()[wnd->getWindowID()] = wnd; // We consider the first window created the main one. if(get_main_window().lock() == nullptr) { get_main_window() = wnd; } }