コード例 #1
0
void forceCloseWindow(FrameworkWindow *window) {
  forceCloseChildren(window);

  if(window->menu) {
    ClearMenuStrip(window->intuitionWindow);
    FreeMenus(window->menu);
  }

  CloseWindow(window->intuitionWindow);

  if(window->kind->freeGadgets) {
    (*window->kind->freeGadgets)(window->gadgets);
  }

  if(window->kind->closeWindow) {
    (*window->kind->closeWindow)(window);
  }

  if(window->parent) {
    removeChildWindow(window->parent, window);
  }

  if(window->next) {
    window->next->prev = window->prev;
  }

  if(window->prev) {
    window->prev->next = window->next;
  }

  free(window);
}
コード例 #2
0
ファイル: compositor.cpp プロジェクト: amezin/qmlcompmgr
bool Compositor::xcbEvent(const xcb_destroy_notify_event_t *e)
{
    if (e->event != root_) {
        return false;
    }

    removeChildWindow(e->window);
    return true;
}
コード例 #3
0
ファイル: compositor.cpp プロジェクト: amezin/qmlcompmgr
bool Compositor::xcbEvent(const xcb_reparent_notify_event_t *e)
{
    if (e->event != root_) {
        return false;
    }

    if (e->parent == root_) {
        addChildWindow(e->window);
    } else {
        removeChildWindow(e->window);
    }

    return xcbDispatchEvent(e);
}