bool ActiveWindow::DeShade() { if (!init()) { return false; } static Atom shade = XInternAtom(disp, "_NET_WM_STATE_SHADED", False); if (!set_window_state(disp, *win, shade, 0, false)) { ERROR("couldn't deshade"); return false; } return true; }
bool ActiveWindow::DeFullscreen() { if (!init()) { return false; } static Atom fs = XInternAtom(disp, "_NET_WM_STATE_FULLSCREEN", False); if (!set_window_state(disp, *win, fs, 0, false)) { ERROR("couldn't defullscreen"); return false; } return true; }
void unmanage_window(xcb_window_t win) { coordinates_t loc; if (locate_window(win, &loc)) { put_status(SBSC_MASK_NODE_UNMANAGE, "node_unmanage 0x%08X 0x%08X 0x%08X\n", loc.monitor->id, loc.desktop->id, win); remove_node(loc.monitor, loc.desktop, loc.node); set_window_state(win, XCB_ICCCM_WM_STATE_WITHDRAWN); arrange(loc.monitor, loc.desktop); } else { for (pending_rule_t *pr = pending_rule_head; pr != NULL; pr = pr->next) { if (pr->win == win) { remove_pending_rule(pr); return; } } } }
Portal::Portal() : QMainWindow(), m_workspace(NULL), m_open_mapper(NULL), m_history_mapper(NULL), m_activation_mapper(NULL), m_properties_mapper(NULL), m_filehist_menu(NULL), m_file_menu(NULL), m_window_menu(NULL), m_help_menu(NULL), m_file_toolbar(NULL), m_render_toolbar(NULL), m_open_action(NULL), m_help_action(NULL), m_exit_action(NULL), m_tile_action(NULL), m_cascade_action(NULL), m_close_action(NULL), m_flat_action(NULL), m_phong_action(NULL), m_wireframe_action(NULL), m_center_action(NULL), m_culling_action(NULL), m_texture_action(NULL), m_shading_actions(NULL), m_open_dialog(NULL), m_tool_docker(NULL), m_tool_tab(NULL), m_console(NULL), m_cout_buffer(NULL), m_cerr_buffer(NULL) { m_workspace = new QWorkspace; m_workspace->setScrollBarsEnabled(true); connect( m_workspace, SIGNAL(windowActivated(QWidget*)), this, SLOT(window_activated(QWidget*)) ); connect( m_workspace, SIGNAL(windowActivated(QWidget*)), this, SLOT(handle_glpad_propchange(QWidget*)) ); this->setCentralWidget(m_workspace); m_open_mapper = new QSignalMapper(this); connect( m_open_mapper, SIGNAL(mapped(const QString &)), this, SLOT(open(const QString &))); m_history_mapper = new QSignalMapper(this); connect( m_history_mapper, SIGNAL(mapped(const QString &)), this, SLOT(update_history(const QString &))); m_activation_mapper = new QSignalMapper(this); connect( m_activation_mapper, SIGNAL(mapped(QWidget*)), m_workspace, SLOT(setActiveWindow(QWidget*)) ); m_properties_mapper = new QSignalMapper(this); connect( m_properties_mapper, SIGNAL(mapped(QWidget*)), this, SLOT(handle_glpad_propchange(QWidget*)) ); int isize = Config::main()->get( "icon::size" ).toInt(); this->setIconSize( QSize( isize, isize ) ); construct_actions(); construct_menus(); construct_toolbars(); construct_dialogs(); construct_dockers(); construct_console(); set_geometry(); set_window_state(); this->setWindowTitle( tr("Boxfish3d") ); this->setWindowIcon( Svg_icon( ":/icons/boxfish3d.svg", QSize(32,32 ) ) ); if( Config::main()->defined( "portal::state" ) ) { this->restoreState( Config::main()->get( "portal::state" ).toUtf8() ); } int count = 0; QString fname; do { fname = Config::main()->get( QString("file::history::list::item") + QString::number(count) ); count++; if( !fname.isNull() ) m_file_history.push_back( fname ); } while( !fname.isNull() ); }
void manage_window(xcb_window_t win, rule_consequence_t *csq, int fd) { monitor_t *m = mon; desktop_t *d = mon->desk; node_t *f = mon->desk->focus; parse_rule_consequence(fd, csq); if (ewmh_handle_struts(win)) { for (monitor_t *m = mon_head; m != NULL; m = m->next) { arrange(m, m->desk); } } if (!csq->manage) { free(csq->layer); free(csq->state); window_show(win); return; } if (csq->node_desc[0] != '\0') { coordinates_t ref = {m, d, f}; coordinates_t trg = {NULL, NULL, NULL}; if (node_from_desc(csq->node_desc, &ref, &trg) == SELECTOR_OK) { m = trg.monitor; d = trg.desktop; f = trg.node; } } else if (csq->desktop_desc[0] != '\0') { coordinates_t ref = {m, d, NULL}; coordinates_t trg = {NULL, NULL, NULL}; if (desktop_from_desc(csq->desktop_desc, &ref, &trg) == SELECTOR_OK) { m = trg.monitor; d = trg.desktop; f = trg.desktop->focus; } } else if (csq->monitor_desc[0] != '\0') { coordinates_t ref = {m, NULL, NULL}; coordinates_t trg = {NULL, NULL, NULL}; if (monitor_from_desc(csq->monitor_desc, &ref, &trg) == SELECTOR_OK) { m = trg.monitor; d = trg.monitor->desk; f = trg.monitor->desk->focus; } } if (csq->sticky) { m = mon; d = mon->desk; f = mon->desk->focus; } if (csq->split_dir[0] != '\0' && f != NULL) { direction_t dir; if (parse_direction(csq->split_dir, &dir)) { presel_dir(m, d, f, dir); } } if (csq->split_ratio != 0 && f != NULL) { presel_ratio(m, d, f, csq->split_ratio); } node_t *n = make_node(win); client_t *c = make_client(); c->border_width = csq->border ? d->border_width : 0; n->client = c; initialize_client(n); initialize_floating_rectangle(n); if (c->floating_rectangle.x == 0 && c->floating_rectangle.y == 0) { csq->center = true; } monitor_t *mm = monitor_from_client(c); embrace_client(mm, c); adapt_geometry(&mm->rectangle, &m->rectangle, n); if (csq->center) { window_center(m, c); } snprintf(c->class_name, sizeof(c->class_name), "%s", csq->class_name); snprintf(c->instance_name, sizeof(c->instance_name), "%s", csq->instance_name); f = insert_node(m, d, n, f); clients_count++; put_status(SBSC_MASK_NODE_MANAGE, "node_manage 0x%08X 0x%08X 0x%08X 0x%08X\n", m->id, d->id, win, f!=NULL?f->id:0); if (f != NULL && f->client != NULL && csq->state != NULL && *(csq->state) == STATE_FLOATING) { c->layer = f->client->layer; } if (csq->layer != NULL) { c->layer = *(csq->layer); } if (csq->state != NULL) { set_state(m, d, n, *(csq->state)); } set_hidden(m, d, n, csq->hidden); set_sticky(m, d, n, csq->sticky); set_private(m, d, n, csq->private); set_locked(m, d, n, csq->locked); arrange(m, d); uint32_t values[] = {CLIENT_EVENT_MASK | (focus_follows_pointer ? XCB_EVENT_MASK_ENTER_WINDOW : 0)}; xcb_change_window_attributes(dpy, win, XCB_CW_EVENT_MASK, values); set_window_state(win, XCB_ICCCM_WM_STATE_NORMAL); window_grab_buttons(win); if (d == m->desk) { show_node(d, n); } else { hide_node(d, n); } if (!csq->hidden && csq->focus) { if (d == mon->desk || csq->follow) { focus_node(m, d, n); } else { activate_node(m, d, n); } } else { stack(d, n, false); } ewmh_set_wm_desktop(n, d); ewmh_update_client_list(false); free(csq->layer); free(csq->state); }