]> Dogcows Code - chaz/openbox/commitdiff
remove the client_remaximize function, and replace it with the client_reconfigure...
authorDana Jansens <danakj@orodu.net>
Wed, 4 Jun 2003 23:11:26 +0000 (23:11 +0000)
committerDana Jansens <danakj@orodu.net>
Wed, 4 Jun 2003 23:11:26 +0000 (23:11 +0000)
add support for the VIDMODE extension in client_configure, namely, fullscreen windows are positioned at the point of the viewport rather than at 0,0.
call client_reconfigure when uniconifying a window, so that fullscreen windows are put at the point of the view port.

openbox/client.c
openbox/client.h
openbox/screen.c

index a9a9eb5fa1c88e9370ecca098fce4f372b22f10a..f17d1bafa10ced0d955804a3c45ff102df7b7c45 100644 (file)
@@ -1031,7 +1031,7 @@ void client_setup_decor_and_functions(Client *self)
            we may also need to be repositioned */
        frame_adjust_area(self->frame, TRUE, TRUE);
        /* with new decor, the window's maximized size may change */
-       client_remaximize(self);
+       client_reconfigure(self);
     } else {
         /* this makes sure that these windows appear on all desktops */
         if (self->type == Type_Desktop && self->desktop != DESKTOP_ALL)
@@ -1089,19 +1089,10 @@ static void client_change_allowed_actions(Client *self)
     }
 }
 
-void client_remaximize(Client *self)
+void client_reconfigure(Client *self)
 {
-    int dir;
-    if (self->max_horz && self->max_vert)
-       dir = 0;
-    else if (self->max_horz)
-       dir = 1;
-    else if (self->max_vert)
-       dir = 2;
-    else
-       return; /* not maximized */
-    self->max_horz = self->max_vert = FALSE;
-    client_maximize(self, TRUE, dir, FALSE);
+    client_configure(self, Corner_TopLeft, self->area.x, self->area.y,
+                     self->area.width, self->area.height, TRUE, TRUE);
 }
 
 void client_update_wmhints(Client *self)
@@ -1618,8 +1609,12 @@ void client_configure(Client *self, Corner anchor, int x, int y, int w, int h,
 
     /* set the size and position if fullscreen */
     if (self->fullscreen) {
+#ifdef VIDMODE
+        XF86VidModeGetViewPort(ob_display, ob_screen, &x, &y);
+#else
        x = 0;
        y = 0;
+#endif
        w = screen_physical_size.width;
        h = screen_physical_size.height;
         user = FALSE; /* ignore that increment etc shit when in fullscreen */
@@ -1867,6 +1862,11 @@ void client_iconify(Client *self, gboolean iconic, gboolean curdesk)
         /* this puts it after the current focused window */
         focus_order_remove(self);
         focus_order_add_new(self);
+
+        /* this is here cuz with the VIDMODE extension, the viewport can change
+           while a fullscreen window is iconic, and when it uniconifies, it
+           would be nice if it did so to the new position of the viewport */
+        client_reconfigure(self);
     }
     client_change_state(self);
     client_showhide(self);
index 70fc5a9711fd0972d461d219018d63095ff84ba0..e45b37713beec04aa1db89f450e2b59578c0b84b 100644 (file)
@@ -318,11 +318,6 @@ void client_unmanage(Client *client);
 /*! Sets the client list on the root window from the client_list */
 void client_set_list();
 
-/*! Reapplies the maximized state to the window
-  Use this to make the window readjust its maximized size to new
-  surroundings (struts, etc). */
-void client_remaximize(Client *self);
-
 /*! Determines if the client should be shown or hidden currently.
   @return TRUE if it should be visible; otherwise, FALSE.
 */
@@ -354,6 +349,8 @@ gboolean client_focused(Client *self);
 void client_configure(Client *self, Corner anchor, int x, int y, int w, int h,
                      gboolean user, gboolean final);
 
+void client_reconfigure(Client *self);
+
 /*! Moves a client so that it is on screen if it is entirely out of the
   viewable screen.
 */
index a1ad36e0e5fe69b06b78a399cbc80b78eec314ec..984010bf13ddcc516eda336e943acbb71fda2678 100644 (file)
@@ -581,11 +581,11 @@ static void screen_update_area()
                Client *c = it->data;
                if (i < screen_num_desktops) {
                    if (c->desktop == i)
-                       client_remaximize(c);
+                        client_reconfigure(c);
                } else {
                    /* the 'all desktops' size */
                    if (c->desktop == DESKTOP_ALL)
-                       client_remaximize(c);
+                        client_reconfigure(c);
                }
            }
        }
This page took 0.034725 seconds and 4 git commands to generate.