/** * Triggered when window has moved or resized (handled internally by an event) * * @param *window - reference to the window object * @param *event - event object returned by GDK layer * @param parent - the owner of this callback * * @return always false */ bool AppWindow::eventWindowProperty(GtkWindow *window, GdkEventConfigure* event, AppWindow& parent) { if (parent.posEventFirstPass) { // Get original coords Geometry geom = parent.getConfig()->getWindowGeom(); // Correct the position on first pass gtk_window_move(window, geom.getLeft(), geom.getTop()); parent.posEventFirstPass = false; } // Retrieve the new window size ConfigContainer *config = parent.getConfig(); Geometry geom(event->x, event->y, event->width, event->height); config->setWindowGeom(geom); // Always return false, otherwise the event may not trigger properly (GTK will cancel, but Xorg will honour it) return false; }
/** * Triggered when a window has been destroyed (handled internally by an event) * * @param *window - reference to the window object * @param parent - the owner of this callback */ void AppWindow::eventDestroy(GtkWindow *window, AppWindow& parent) { // Save window geometry to user session on exit ConfigContainer *config = parent.getConfig(); ConfigWriter writer; writer.loadFile(config->getSaveToConfig()); writer.saveWindowGeometry(config); gtk_main_quit(); }