-inline void window_get_position(GtkWindow* window, WindowPosition& position)
-{
- ASSERT_MESSAGE(window != 0, "error saving window position");
-
- gtk_window_get_position(window, &position.x, &position.y);
- gtk_window_get_size(window, &position.w, &position.h);
-}
-
-inline void window_set_position(GtkWindow* window, const WindowPosition& position)
-{
- gtk_window_set_gravity(window, GDK_GRAVITY_STATIC);
-
- GdkScreen* screen = gdk_screen_get_default();
- if(position.x < 0
- || position.y < 0
- || position.x > gdk_screen_get_width(screen)
- || position.y > gdk_screen_get_height(screen))
- {
- gtk_window_set_position(window, GTK_WIN_POS_CENTER_ON_PARENT);
- }
- else
- {
- gtk_window_move(window, position.x, position.y);
- }
-
- gtk_window_set_default_size(window, position.w, position.h);
-}
-
-inline void WindowPosition_Parse(WindowPosition& position, const char* value)
-{
- if(sscanf(value, "%d %d %d %d", &position.x, &position.y, &position.w, &position.h) != 4)
- {
- position = WindowPosition(c_default_window_pos); // ensure sane default value for window position
- }
-}
-typedef ReferenceCaller1<WindowPosition, const char*, WindowPosition_Parse> WindowPositionImportStringCaller;
-
-inline void WindowPosition_Write(const WindowPosition& position, const StringImportCallback& importCallback)
-{
- char buffer[64];
- sprintf(buffer, "%d %d %d %d", position.x, position.y, position.w, position.h);
- importCallback(buffer);
-}
-typedef ConstReferenceCaller1<WindowPosition, const StringImportCallback&, WindowPosition_Write> WindowPositionExportStringCaller;
-
-
-
-class WindowPositionTracker
-{
- WindowPosition m_position;
-
- static gboolean configure(GtkWidget* widget, GdkEventConfigure *event, WindowPositionTracker* self)
- {
- self->m_position = WindowPosition(event->x, event->y, event->width, event->height);
- return FALSE;
- }
+void window_get_position(ui::Window window, WindowPosition &position);
+
+void window_set_position(ui::Window window, const WindowPosition &position);
+
+struct WindowPosition_String {
+
+ static void Export(const WindowPosition &self, const Callback<void(const char *)> &returnz);
+
+ static void Import(WindowPosition &self, const char *value);