merge r6704-6722 from trunk
authorDana Jansens <danakj@orodu.net>
Tue, 22 May 2007 03:07:08 +0000 (03:07 +0000)
committerDana Jansens <danakj@orodu.net>
Tue, 22 May 2007 03:07:08 +0000 (03:07 +0000)
15 files changed:
data/xsession/openbox-gnome-session.in
openbox/client.c
openbox/event.c
openbox/frame.c
openbox/frame.h
openbox/geom.h
openbox/openbox.c
openbox/openbox.h
openbox/session.c
openbox/session.h
po/LINGUAS
po/et.po [new file with mode: 0644]
po/it.po [moved from po/it_IT.po with 100% similarity]
po/pl.po
po/sv.po

index c2bc9399401b831ed6aa467991fbd000ec7cb982..cacfec4d5b7106c9f78c9ab7cae064f53980631a 100644 (file)
@@ -2,4 +2,4 @@
 
 # Run GNOME with Openbox as its window manager
 export WINDOW_MANAGER="@bindir@/openbox"
-exec gnome-session "$@"
+exec gnome-session --choose-session=openbox-session "$@"
index 9b89b10356cd4b947ebc1053692ce8f0bb9e5d5e..68dfedce3468ba67d5874910ec3ef3692627668f 100644 (file)
@@ -241,6 +241,7 @@ void client_manage(Window window)
     XWMHints *wmhint;
     gboolean activate = FALSE;
     ObAppSettings *settings;
+    gint placex, placey;
 
     grab_server(TRUE);
 
@@ -359,6 +360,15 @@ void client_manage(Window window)
         activate = TRUE;
     }
 
+    /* adjust the frame to the client's size before showing or placing
+       the window */
+    frame_adjust_area(self->frame, FALSE, TRUE, FALSE);
+    frame_adjust_client_area(self->frame);
+
+    /* where the frame was placed is where the window was originally */
+    placex = self->area.x;
+    placey = self->area.y;
+
     /* figure out placement for the window */
     if (ob_state() == OB_STATE_RUNNING) {
         gboolean transient;
@@ -369,10 +379,10 @@ void client_manage(Window window)
                    (self->positioned == USPosition ? "user specified" :
                     "BADNESS !?"))), self->area.x, self->area.y);
 
-        transient = place_client(self, &self->area.x, &self->area.y, settings);
+        transient = place_client(self, &placex, &placey, settings);
 
         /* make sure the window is visible. */
-        client_find_onscreen(self, &self->area.x, &self->area.y,
+        client_find_onscreen(self, &placex, &placey,
                              self->area.width, self->area.height,
                              /* non-normal clients has less rules, and
                                 windows that are being restored from a
@@ -392,31 +402,32 @@ void client_manage(Window window)
     }
 
     ob_debug("placing window 0x%x at %d, %d with size %d x %d\n",
-             self->window, self->area.x, self->area.y,
+             self->window, placex, placey,
              self->area.width, self->area.height);
     if (self->session)
         ob_debug("  but session requested %d %d instead, overriding\n",
                  self->session->x, self->session->y);
 
-    /* adjust the frame to the client's size before showing the window */
-    frame_adjust_area(self->frame, FALSE, TRUE, FALSE);
-    frame_adjust_client_area(self->frame);
-
+    /* do this after the window is placed, so the premax/prefullscreen numbers
+       won't be all wacko!!
+       also, this moves the window to the position where it has been placed
+    */
+    client_apply_startup_state(self);
 
     /* move the client to its placed position, or it it's already there,
        generate a ConfigureNotify telling the client where it is.
 
        do this after adjusting the frame. otherwise it gets all weird and
-       clients don't work right */
-    client_configure(self, self->area.x, self->area.y,
+       clients don't work right
+
+       also do this after applying the startup state so maximize and fullscreen
+       will get the right sizes and positions if the client is starting with
+       those states
+    */
+    client_configure(self, placex, placey,
                      self->area.width, self->area.height,
                      FALSE, TRUE);
 
-    /* do this after the window is placed, so the premax/prefullscreen numbers
-       won't be all wacko!!
-       also, this moves the window to the position where it has been placed
-    */
-    client_apply_startup_state(self);
 
     if (activate) {
         guint32 last_time = focus_client ?
@@ -649,6 +660,8 @@ void client_unmanage(ObClient *self)
         }
 
         self->fullscreen = self->max_horz = self->max_vert = FALSE;
+        /* let it be moved and resized no matter what */
+        self->functions = OB_CLIENT_FUNC_MOVE | OB_CLIENT_FUNC_RESIZE;
         self->decorations = 0; /* unmanaged windows have no decor */
 
         client_move_resize(self, a.x, a.y, a.width, a.height);
@@ -924,10 +937,10 @@ gboolean client_find_onscreen(ObClient *self, gint *x, gint *y, gint w, gint h,
         POINT_SET(newbl, newtl.x, newbr.y);
 
         /* is it moving or just resizing from some corner? */
-        stationary_l = oldtl.x == oldtl.x;
-        stationary_r = oldtr.x == oldtr.x;
-        stationary_t = oldtl.y == oldtl.y;
-        stationary_b = oldbl.y == oldbl.y;
+        stationary_l = oldtl.x == newtl.x;
+        stationary_r = oldtr.x == newtr.x;
+        stationary_t = oldtl.y == newtl.y;
+        stationary_b = oldbl.y == newbl.y;
 
         /* if left edge is growing and didnt move right edge */
         if (stationary_r && newtl.x < oldtl.x)
@@ -1582,6 +1595,8 @@ void client_update_normal_hints(ObClient *self)
     }
 }
 
+/*! This needs to be followed by a call to client_configure to make
+  the changes show */
 void client_setup_decor_and_functions(ObClient *self)
 {
     /* start with everything (cept fullscreen) */
@@ -1635,11 +1650,13 @@ void client_setup_decor_and_functions(ObClient *self)
            do with them is move them */
         self->decorations = 0;
         self->functions = OB_CLIENT_FUNC_MOVE;
+        break;
 
     case OB_CLIENT_TYPE_DESKTOP:
         /* these windows are not manipulated by the window manager */
         self->decorations = 0;
         self->functions = 0;
+        break;
 
     case OB_CLIENT_TYPE_DOCK:
         /* these windows are not manipulated by the window manager, but they
@@ -1700,8 +1717,8 @@ void client_setup_decor_and_functions(ObClient *self)
         self->decorations &= ~OB_FRAME_DECOR_MAXIMIZE;
     }
 
-    /* kill the handle on fully maxed windows */
-    if (self->max_vert && self->max_horz)
+    if (self->max_horz && self->max_vert)
+        /* kill the handle on fully maxed windows */
         self->decorations &= ~(OB_FRAME_DECOR_HANDLE | OB_FRAME_DECOR_GRIPS);
 
     /* If there are no decorations to remove, don't allow the user to try
@@ -1731,11 +1748,6 @@ void client_setup_decor_and_functions(ObClient *self)
     }
 
     client_change_allowed_actions(self);
-
-    if (self->frame) {
-        /* adjust the client's decorations, etc. */
-        client_reconfigure(self);
-    }
 }
 
 static void client_change_allowed_actions(ObClient *self)
@@ -2740,6 +2752,7 @@ void client_configure(ObClient *self, gint x, gint y, gint w, gint h,
     gboolean fmoved, fresized;
     guint fdecor = self->frame->decorations;
     gboolean fhorz = self->frame->max_horz;
+    gboolean fvert = self->frame->max_vert;
     gint logicalw, logicalh;
 
     /* find the new x, y, width, and height (and logical size) */
@@ -2775,8 +2788,11 @@ void client_configure(ObClient *self, gint x, gint y, gint w, gint h,
     /* find the frame's dimensions and move/resize it */
     fmoved = moved;
     fresized = resized;
-    if (self->decorations != fdecor || self->max_horz != fhorz)
+    if (self->decorations != fdecor ||
+        self->max_horz != fhorz || self->max_vert != fvert)
+    {
         fmoved = fresized = TRUE;
+    }
     if (fmoved || fresized)
         frame_adjust_area(self->frame, fmoved, fresized, FALSE);
 
@@ -3086,7 +3102,7 @@ void client_set_desktop_recursive(ObClient *self,
     guint old;
     GSList *it;
 
-    if (target != self->desktop) {
+    if (target != self->desktop && self->type != OB_CLIENT_TYPE_DESKTOP) {
 
         ob_debug("Setting desktop %u\n", target+1);
 
@@ -3488,12 +3504,9 @@ void client_activate(ObClient *self, gboolean here, gboolean user)
                   self->window, event_curtime, last_time,
                   (user ? "user" : "application"), allow);
 
-    if (allow) {
-        if (event_curtime != CurrentTime)
-            self->user_time = event_curtime;
-
+    if (allow)
         client_present(self, here, TRUE);
-    else
+    else
         /* don't focus it but tell the user it wants attention */
         client_hilite(self, TRUE);
 }
@@ -3605,6 +3618,7 @@ void client_set_undecorated(ObClient *self, gboolean undecorated)
     {
         self->undecorated = undecorated;
         client_setup_decor_and_functions(self);
+        client_reconfigure(self); /* show the lack of decorations */
         client_change_state(self); /* reflect this in the state hints */
     }
 }
index bf2fd932cf1f68e2ab90888cb627743641560b73..aa082e68a8c66a187b615e2405f3a1405b1457b1 100644 (file)
@@ -810,6 +810,8 @@ static void event_handle_client(ObClient *client, XEvent *e)
                             e->xmotion.x, e->xmotion.y);
         switch (con) {
         case OB_FRAME_CONTEXT_TITLEBAR:
+        case OB_FRAME_CONTEXT_TLCORNER:
+        case OB_FRAME_CONTEXT_TRCORNER:
             /* we've left the button area inside the titlebar */
             if (client->frame->max_hover || client->frame->desk_hover ||
                 client->frame->shade_hover || client->frame->iconify_hover ||
@@ -861,6 +863,22 @@ static void event_handle_client(ObClient *client, XEvent *e)
         con = frame_context(client, e->xcrossing.window,
                             e->xcrossing.x, e->xcrossing.y);
         switch (con) {
+        case OB_FRAME_CONTEXT_TITLEBAR:
+        case OB_FRAME_CONTEXT_TLCORNER:
+        case OB_FRAME_CONTEXT_TRCORNER:
+            /* we've left the button area inside the titlebar */
+            if (client->frame->max_hover || client->frame->desk_hover ||
+                client->frame->shade_hover || client->frame->iconify_hover ||
+                client->frame->close_hover)
+            {
+                client->frame->max_hover = FALSE;
+                client->frame->desk_hover = FALSE;
+                client->frame->shade_hover = FALSE;
+                client->frame->iconify_hover = FALSE;
+                client->frame->close_hover = FALSE;
+                frame_adjust_state(client->frame);
+            }
+            break;
         case OB_FRAME_CONTEXT_MAXIMIZE:
             client->frame->max_hover = FALSE;
             frame_adjust_state(client->frame);
@@ -975,14 +993,11 @@ static void event_handle_client(ObClient *client, XEvent *e)
         */
 
         gint x, y, w, h;
+        gboolean move = FALSE;
+        gboolean resize = FALSE;
 
-        /* if nothing is changed, then a configurenotify is needed */
-        gboolean config = TRUE;
-
-        x = client->area.x;
-        y = client->area.y;
-        w = client->area.width;
-        h = client->area.height;
+        /* get the current area */
+        RECT_TO_DIMS(client->area, x, y, w, h);
 
         ob_debug("ConfigureRequest desktop %d wmstate %d visibile %d\n",
                  screen_desktop, client->wmstate, client->frame->visible);
@@ -990,8 +1005,13 @@ static void event_handle_client(ObClient *client, XEvent *e)
         if (e->xconfigurerequest.value_mask & CWBorderWidth)
             if (client->border_width != e->xconfigurerequest.border_width) {
                 client->border_width = e->xconfigurerequest.border_width;
-                /* if only the border width is changing, then it's not needed*/
-                config = FALSE;
+
+                /* if the border width is changing then that is the same
+                   as requesting a resize, but we don't actually change
+                   the client's border, so it will change their root
+                   coordiantes (since they include the border width) and
+                   we need to a notify then */
+                move = TRUE;
             }
 
 
@@ -1011,8 +1031,8 @@ static void event_handle_client(ObClient *client, XEvent *e)
             stacking_restack_request(client, sibling,
                                      e->xconfigurerequest.detail, TRUE);
 
-            /* if a stacking change is requested then it is needed */
-            config = TRUE;
+            /* if a stacking change moves the window without resizing */
+            move = TRUE;
         }
 
         /* don't allow clients to move shaded windows (fvwm does this) */
@@ -1024,7 +1044,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
 
             /* if the client tried to move and we aren't letting it then a
                synthetic event is needed */
-            config = TRUE;
+            move = TRUE;
         }
 
         if (e->xconfigurerequest.value_mask & CWX ||
@@ -1032,25 +1052,31 @@ static void event_handle_client(ObClient *client, XEvent *e)
             e->xconfigurerequest.value_mask & CWWidth ||
             e->xconfigurerequest.value_mask & CWHeight)
         {
-            if (e->xconfigurerequest.value_mask & CWX)
+            if (e->xconfigurerequest.value_mask & CWX) {
                 x = e->xconfigurerequest.x;
-            if (e->xconfigurerequest.value_mask & CWY)
+                move = TRUE;
+            }
+            if (e->xconfigurerequest.value_mask & CWY) {
                 y = e->xconfigurerequest.y;
-            if (e->xconfigurerequest.value_mask & CWWidth)
+                move = TRUE;
+            }
+            if (e->xconfigurerequest.value_mask & CWWidth) {
                 w = e->xconfigurerequest.width;
-            if (e->xconfigurerequest.value_mask & CWHeight)
+                resize = TRUE;
+            }
+            if (e->xconfigurerequest.value_mask & CWHeight) {
                 h = e->xconfigurerequest.height;
-
-            /* if a new position or size is requested, then a configure is
-               needed */
-            config = TRUE;
+                resize = TRUE;
+            }
         }
 
-        ob_debug("ConfigureRequest x(%d) %d y(%d) %d w(%d) %d h(%d) %d\n",
+        ob_debug("ConfigureRequest x(%d) %d y(%d) %d w(%d) %d h(%d) %d "
+                 "move %d resize %d\n",
                  e->xconfigurerequest.value_mask & CWX, x,
                  e->xconfigurerequest.value_mask & CWY, y,
                  e->xconfigurerequest.value_mask & CWWidth, w,
-                 e->xconfigurerequest.value_mask & CWHeight, h);
+                 e->xconfigurerequest.value_mask & CWHeight, h,
+                 move, resize);
 
         /* check for broken apps moving to their root position
 
@@ -1059,7 +1085,8 @@ static void event_handle_client(ObClient *client, XEvent *e)
            desktop. eg. open amarok window on desktop 1, switch to desktop
            2, click amarok tray icon. it will move by its decoration size.
         */
-        if (x != client->area.x &&
+        if (move && !resize &&
+            x != client->area.x &&
             x == (client->frame->area.x + client->frame->size.left -
                   (gint)client->border_width) &&
             y != client->area.y &&
@@ -1074,11 +1101,23 @@ static void event_handle_client(ObClient *client, XEvent *e)
             /* don't move it */
             x = client->area.x;
             y = client->area.y;
+
+            /* they still requested a move, so don't change whether a
+               notify is sent or not */
         }
 
-        if (config) {
+        if (move || resize) {
+            gint lw,lh;
+
             client_find_onscreen(client, &x, &y, w, h, FALSE);
-            client_configure(client, x, y, w, h, FALSE, TRUE);
+            client_try_configure(client, &x, &y, &w, &h, &lw, &lh, FALSE);
+            /* if they requested something that moves the window, or if
+               the window is actually being changed then configure it and
+               send a configure notify to them */
+            if (move || !RECT_EQUAL_DIMS(client->area, x, y, w, h)) {
+                ob_debug("Doing configure\n");
+                client_configure(client, x, y, w, h, FALSE, TRUE);
+            }
 
             /* ignore enter events caused by these like ob actions do */
             event_ignore_all_queued_enters();
index 0f1df63d903e7cc922c052b3a105577b7db5223d..18d922cc5571c807357990e34258063cf6390da7 100644 (file)
@@ -55,6 +55,7 @@ static void layout_title(ObFrame *self);
 static void set_theme_statics(ObFrame *self);
 static void free_theme_statics(ObFrame *self);
 static gboolean frame_animate_iconify(gpointer self);
+static void frame_adjust_cursors(ObFrame *self);
 
 static Window createWindow(Window parent, Visual *visual,
                            gulong mask, XSetWindowAttributes *attrib)
@@ -329,8 +330,13 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
     oldsize = self->size;
 
     if (resized) {
+        /* do this before changing the frame's status like max_horz max_vert */
+        frame_adjust_cursors(self);
+
+        self->functions = self->client->functions;
         self->decorations = self->client->decorations;
         self->max_horz = self->client->max_horz;
+        self->max_vert = self->client->max_vert;
 
         if (self->decorations & OB_FRAME_DECOR_BORDER) {
             self->bwidth = ob_rr_theme->fbwidth;
@@ -340,20 +346,17 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
             self->bwidth = self->cbwidth_x = self->cbwidth_y = 0;
         }
         self->rbwidth = self->bwidth;
-        self->leftb = self->rightb = TRUE;
 
         if (self->max_horz) {
-            self->leftb = self->rightb = FALSE;
             self->cbwidth_x = 0;
-        }
-
-        self->width = self->client->area.width + self->cbwidth_x * 2;
-        self->width = MAX(self->width, 1); /* no lower than 1 */
+            self->width = self->client->area.width - self->bwidth * 2;
+        } else
+            self->width = self->client->area.width + self->cbwidth_x * 2;
 
         STRUT_SET(self->size,
-                  self->cbwidth_x + (self->leftb ? self->bwidth : 0),
+                  self->cbwidth_x + (!self->max_horz ? self->bwidth : 0),
                   self->cbwidth_y + self->bwidth,
-                  self->cbwidth_x + (self->rightb ? self->bwidth : 0),
+                  self->cbwidth_x + (!self->max_horz ? self->bwidth : 0),
                   self->cbwidth_y + self->bwidth);
 
         if (self->decorations & OB_FRAME_DECOR_TITLEBAR)
@@ -370,9 +373,8 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
             if (self->bwidth) {
                 XMoveResizeWindow(ob_display, self->titletop,
                                   ob_rr_theme->grip_width + self->bwidth, 0,
-                                  self->client->area.width +
-                                  self->cbwidth_x * 2 + self->bwidth * 2 -
-                                  (ob_rr_theme->grip_width + self->bwidth) * 2,
+                                  /* width + bwidth*2 - bwidth*2 - grips*2 */
+                                  self->width + ob_rr_theme->grip_width * 2,
                                   self->bwidth);
                 XMoveResizeWindow(ob_display, self->titletopleft,
                                   0, 0,
@@ -380,7 +382,7 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                                   self->bwidth);
                 XMoveResizeWindow(ob_display, self->titletopright,
                                   self->client->area.width +
-                                  self->cbwidth_x * 2 + self->bwidth * 2 -
+                                  self->size.left + self->size.right -
                                   ob_rr_theme->grip_width - self->bwidth,
                                   0,
                                   ob_rr_theme->grip_width + self->bwidth,
@@ -389,15 +391,16 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                 XMoveResizeWindow(ob_display, self->titleleft,
                                   0, self->bwidth,
                                   self->bwidth,
-                                  (self->leftb ?
+                                  (!self->max_horz ?
                                    ob_rr_theme->grip_width :
                                    self->size.top - self->bwidth));
                 XMoveResizeWindow(ob_display, self->titleright,
                                   self->client->area.width +
-                                  self->cbwidth_x * 2 + self->bwidth,
+                                  self->size.left + self->size.right -
+                                  self->bwidth,
                                   self->bwidth,
                                   self->bwidth,
-                                  (self->rightb ?
+                                  (!self->max_horz ?
                                    ob_rr_theme->grip_width :
                                    self->size.top - self->bwidth));
 
@@ -413,8 +416,7 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                     XMoveResizeWindow(ob_display, self->titlebottom,
                                       self->bwidth,
                                       ob_rr_theme->title_height + self->bwidth,
-                                      self->client->area.width +
-                                      self->cbwidth_x * 2,
+                                      self->width,
                                       self->rbwidth);
 
                     XMapWindow(ob_display, self->titlebottom);
@@ -487,11 +489,11 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                                   0,
                                   self->size.top + self->client->area.height +
                                   self->size.bottom -
-                                  (self->leftb ?
+                                  (!self->max_horz ?
                                    ob_rr_theme->grip_width :
                                    self->size.bottom),
                                   self->bwidth,
-                                  (self->leftb ?
+                                  (!self->max_horz ?
                                    ob_rr_theme->grip_width :
                                    self->size.bottom));
                 XMoveResizeWindow(ob_display, self->rgripright,
@@ -499,11 +501,11 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                                   self->size.right - self->bwidth,
                                   self->size.top + self->client->area.height +
                                   self->size.bottom -
-                                  (self->leftb ?
+                                  (!self->max_horz ?
                                    ob_rr_theme->grip_width :
                                    self->size.bottom),
                                   self->bwidth,
-                                  (self->rightb ?
+                                  (!self->max_horz ?
                                    ob_rr_theme->grip_width :
                                    self->size.bottom));
 
@@ -636,7 +638,7 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                 XUnmapWindow(ob_display, self->handle);
             }
 
-            if (self->bwidth && self->leftb) {
+            if (self->bwidth && !self->max_horz) {
                 XMoveResizeWindow(ob_display, self->left,
                                   0,
                                   self->bwidth + ob_rr_theme->grip_width,
@@ -649,7 +651,7 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
             } else
                 XUnmapWindow(ob_display, self->left);
 
-            if (self->bwidth && self->rightb) {
+            if (self->bwidth && !self->max_horz) {
                 XMoveResizeWindow(ob_display, self->right,
                                   self->client->area.width +
                                   self->cbwidth_x * 2 + self->bwidth,
@@ -670,14 +672,13 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
                               self->size.top - self->cbwidth_y,
                               self->client->area.width +
                               self->cbwidth_x * 2 +
-                              (self->leftb ? self->bwidth : 0) +
-                              (self->rightb ? self->bwidth : 0),
+                              (!self->max_horz ? self->bwidth * 2 : 0),
                               self->client->area.height +
                               self->cbwidth_y * 2);
 
             /* move the plate */
             XMoveWindow(ob_display, self->plate,
-                        (self->leftb ? self->bwidth : 0) + self->cbwidth_x,
+                        (!self->max_horz ? self->bwidth : 0) + self->cbwidth_x,
                         self->cbwidth_y);
 
             /* when the client has StaticGravity, it likes to move around. */
@@ -743,13 +744,17 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
     if (resized && (self->decorations & OB_FRAME_DECOR_TITLEBAR))
         XResizeWindow(ob_display, self->label, self->label_width,
                       ob_rr_theme->label_height);
+}
 
-    /* set up cursors */
-    if (!fake &&
-        (self->functions & OB_CLIENT_FUNC_RESIZE) !=
-        (self->client->functions & OB_CLIENT_FUNC_RESIZE))
+static void frame_adjust_cursors(ObFrame *self)
+{
+    if ((self->functions & OB_CLIENT_FUNC_RESIZE) !=
+        (self->client->functions & OB_CLIENT_FUNC_RESIZE) ||
+        ((self->max_horz && self->max_vert) !=
+         (self->client->max_horz && self->client->max_vert)))
     {
-        gboolean r = self->client->functions & OB_CLIENT_FUNC_RESIZE;
+        gboolean r = (self->client->functions & OB_CLIENT_FUNC_RESIZE) &&
+            !(self->client->max_horz && self->client->max_vert);
         XSetWindowAttributes a;
 
         a.cursor = ob_cursor(r ? OB_CURSOR_NORTH : OB_CURSOR_NONE);
@@ -785,8 +790,6 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
         XChangeWindowAttributes(ob_display, self->rgripright, CWCursor, &a);
         XChangeWindowAttributes(ob_display, self->rgriptop, CWCursor, &a);
         XChangeWindowAttributes(ob_display, self->rgripbottom, CWCursor, &a);
-
-        self->functions = self->client->functions;
     }
 }
 
@@ -1201,27 +1204,52 @@ ObFrameContext frame_context(ObClient *client, Window win, gint x, gint y)
         return OB_FRAME_CONTEXT_CLIENT;
     }
 
-    if (win == self->title) {
-        /* when the user clicks in the corners of the titlebar and the client
-           is fully maximized, then treat it like they clicked in the
-           button that is there */
-        if (self->client->max_horz && self->client->max_vert &&
-            y < ob_rr_theme->paddingy + 1 + ob_rr_theme->button_size)
+    /* when the user clicks in the corners of the titlebar and the client
+       is fully maximized, then treat it like they clicked in the
+       button that is there */
+    if (self->max_horz && self->max_vert &&
+        (win == self->title ||
+         win == self->titleleft || win == self->titletopleft ||
+         win == self->titleright || win == self->titletopright))
+    {
+        /* get the mouse coords in reference to the whole frame */
+        gint fx = x;
+        gint fy = y;
+
+        /* these windows are down a border width from the top of the frame */
+        if (win == self->title ||
+            win == self->titleleft || win == self->titleright)
+            fy += self->bwidth;
+
+        /* title is a border width in from the edge */
+        if (win == self->title)
+            fx += self->bwidth;
+        /* titletopright is way to the right edge */
+        else if (win == self->titletopright)
+            fx += self->area.width - (ob_rr_theme->grip_width + self->bwidth);
+        /* titleright is even more way to the right edge */
+        else if (win == self->titleright)
+            fx += self->area.width - self->bwidth;
+
+        /* figure out if we're over the area that should be considered a
+           button */
+        if (fy < self->bwidth + ob_rr_theme->paddingy + 1 +
+            ob_rr_theme->button_size)
         {
-            if (x < ((ob_rr_theme->paddingx + 1) * 2 +
-                     ob_rr_theme->button_size)) {
+            if (fx < (self->bwidth + ob_rr_theme->paddingx + 1 +
+                      ob_rr_theme->button_size))
+            {
                 if (self->leftmost != OB_FRAME_CONTEXT_NONE)
                     return self->leftmost;
             }
-            else if (x > (self->width -
-                          (ob_rr_theme->paddingx + 1 +
-                           ob_rr_theme->button_size)))
+            else if (fx >= (self->area.width -
+                            (self->bwidth + ob_rr_theme->paddingx + 1 +
+                             ob_rr_theme->button_size)))
             {
                 if (self->rightmost != OB_FRAME_CONTEXT_NONE)
                     return self->rightmost;
             }
         }
-        return OB_FRAME_CONTEXT_TITLEBAR;
     }
 
     if (win == self->window)            return OB_FRAME_CONTEXT_FRAME;
@@ -1239,16 +1267,17 @@ ObFrameContext frame_context(ObClient *client, Window win, gint x, gint y)
     if (win == self->rgripright)        return OB_FRAME_CONTEXT_BLCORNER;
     if (win == self->rgriptop)          return OB_FRAME_CONTEXT_BLCORNER;
     if (win == self->rgripbottom)       return OB_FRAME_CONTEXT_BLCORNER;
+    if (win == self->title)             return OB_FRAME_CONTEXT_TITLEBAR;
+    if (win == self->titleleft)         return OB_FRAME_CONTEXT_TLCORNER;
+    if (win == self->titletopleft)      return OB_FRAME_CONTEXT_TLCORNER;
+    if (win == self->titleright)        return OB_FRAME_CONTEXT_TRCORNER;
+    if (win == self->titletopright)     return OB_FRAME_CONTEXT_TRCORNER;
     if (win == self->titletop)          return OB_FRAME_CONTEXT_TOP;
     if (win == self->topresize)         return OB_FRAME_CONTEXT_TOP;
     if (win == self->tltresize)         return OB_FRAME_CONTEXT_TLCORNER;
     if (win == self->tllresize)         return OB_FRAME_CONTEXT_TLCORNER;
-    if (win == self->titleleft)         return OB_FRAME_CONTEXT_TLCORNER;
-    if (win == self->titletopleft)      return OB_FRAME_CONTEXT_TLCORNER;
     if (win == self->trtresize)         return OB_FRAME_CONTEXT_TRCORNER;
     if (win == self->trrresize)         return OB_FRAME_CONTEXT_TRCORNER;
-    if (win == self->titleright)        return OB_FRAME_CONTEXT_TRCORNER;
-    if (win == self->titletopright)     return OB_FRAME_CONTEXT_TRCORNER;
     if (win == self->left)              return OB_FRAME_CONTEXT_LEFT;
     if (win == self->right)             return OB_FRAME_CONTEXT_RIGHT;
     if (win == self->max)               return OB_FRAME_CONTEXT_MAXIMIZE;
index b1ed8183243b791ea220cb11d16b56825fcab7d9..0d3cf0e71a78f4aa818a83fe9bb49778f860cb89 100644 (file)
@@ -85,7 +85,6 @@ struct _ObFrame
 
     guint     functions;
     guint     decorations;
-    gboolean  max_horz;
 
     Window    inner;  /*!< The window for drawing the inner client border */
     Window    title;
@@ -160,8 +159,8 @@ struct _ObFrame
     gint      rbwidth;       /* border width between the title and client */
     gint      cbwidth_x;     /* client border width */
     gint      cbwidth_y;     /* client border width */
-    gboolean  leftb;         /* is there a border to the left of the client? */
-    gboolean  rightb;        /* is there a border to the right of the client?*/
+    gboolean  max_horz;      /* when maxed some decorations are hidden */
+    gboolean  max_vert;      /* when maxed some decorations are hidden */
 
     /* the leftmost and rightmost elements in the titlebar */
     ObFrameContext leftmost;
index 39832e949050c5cbb78ff1e73264945a2dd5108e..67a82cded06ae4a984b5015f354f628c99f19557 100644 (file)
@@ -57,6 +57,11 @@ typedef struct _Rect {
 #define RECT_EQUAL(r1, r2) ((r1).x == (r2).x && (r1).y == (r2).y && \
                             (r1).width == (r2).width && \
                             (r1).height == (r2).height)
+#define RECT_EQUAL_DIMS(r, x, y, w, h) \
+    ((r).x == (x) && (r).y == (y) && (r).width == (w) && (r).height == (h))
+
+#define RECT_TO_DIMS(r, x, y, w, h) \
+    (x) = (r).x, (y) = (r).y, (w) = (r).width, (h) = (r).height
 
 #define RECT_CONTAINS(r, px, py) \
     ((px) >= (r).x && (px) < (r).x + (r).width && \
index f66f6a762e4d748f2add4314619775dbd368cbec..b69f2c1e41fac5d08be5544dd9bd4a31140dc0f5 100644 (file)
@@ -92,6 +92,7 @@ gboolean    ob_replace_wm = FALSE;
 gboolean    ob_sm_use = TRUE;
 gchar      *ob_sm_id = NULL;
 gchar      *ob_sm_save_file = NULL;
+gboolean    ob_sm_restore = TRUE;
 gboolean    ob_debug_xinerama = FALSE;
 
 static ObState   state;
@@ -396,12 +397,13 @@ gint main(gint argc, gchar **argv)
             }
         }
 
-        /* we remove the session arguments from argv, so put them back */
+        /* we remove the session arguments from argv, so put them back,
+           also don't restore the session on restart */
         if (ob_sm_save_file != NULL || ob_sm_id != NULL) {
             gchar **nargv;
             gint i, l;
 
-            l = argc +
+            l = argc + 1 +
                 (ob_sm_save_file != NULL ? 2 : 0) +
                 (ob_sm_id != NULL ? 2 : 0);
             nargv = g_new0(gchar*, l+1);
@@ -416,6 +418,7 @@ gint main(gint argc, gchar **argv)
                 nargv[i++] = g_strdup("--sm-client-id");
                 nargv[i++] = ob_sm_id;
             }
+            nargv[i++] = g_strdup("--sm-no-load");
             g_assert(i == l);
             argv = nargv;
         }
@@ -572,6 +575,11 @@ static void parse_args(gint *argc, gchar **argv)
         else if (!strcmp(argv[i], "--sm-disable")) {
             ob_sm_use = FALSE;
         }
+        else if (!strcmp(argv[i], "--sm-no-load")) {
+            ob_sm_restore = FALSE;
+            remove_args(argc, argv, i, 1);
+            --i; /* this arg was removed so go back */
+        }
         else {
             /* this is a memleak.. oh well.. heh */
             gchar *err = g_strdup_printf
index e258d31e25f6dd5c8a90a93c7ed40d839d5b9920..460de0b46b31382d767b99ef82c3414316210a6c 100644 (file)
@@ -45,6 +45,7 @@ extern gchar   *ob_sm_id;
 /* This save_file will get pass to ourselves if we restart too! So we won't
  make a new file every time, yay. */
 extern gchar   *ob_sm_save_file;
+extern gboolean ob_sm_restore;
 extern gboolean ob_replace_wm;
 extern gboolean ob_debug_xinerama;
 
index d0db0717ffeaf2bf467c8232a090b4d30a12a0fa..5a084ab60ae62d0dfaecb46a29a9949b6c21edfb 100644 (file)
@@ -102,9 +102,11 @@ void session_startup(gint argc, gchar **argv)
     }
 
     if (ob_sm_save_file != NULL) {
-        ob_debug_type(OB_DEBUG_SM, "Loading from session file %s\n",
-                      ob_sm_save_file);
-        session_load_file(ob_sm_save_file);
+        if (ob_sm_restore) {
+            ob_debug_type(OB_DEBUG_SM, "Loading from session file %s\n",
+                          ob_sm_save_file);
+            session_load_file(ob_sm_save_file);
+        }
     } else {
         gchar *filename;
 
@@ -513,8 +515,6 @@ static gboolean session_save_to_file(const ObSMSaveData *savedata)
             fprintf(f, "\t<role>%s</role>\n", t);
             g_free(t);
 
-            fprintf(f, "\t<windowtype>%d</windowtype>\n", c->type);
-
             fprintf(f, "\t<desktop>%d</desktop>\n", c->desktop);
             fprintf(f, "\t<x>%d</x>\n", prex);
             fprintf(f, "\t<y>%d</y>\n", prey);
@@ -578,14 +578,12 @@ static gboolean session_state_cmp(ObSessionState *s, ObClient *c)
     ob_debug_type(OB_DEBUG_SM, "  client name: %s \n", c->name);
     ob_debug_type(OB_DEBUG_SM, "  client class: %s \n", c->class);
     ob_debug_type(OB_DEBUG_SM, "  client role: %s \n", c->role);
-    ob_debug_type(OB_DEBUG_SM, "  client type: %s \n", c->type);
     ob_debug_type(OB_DEBUG_SM, "  client command: %s \n",
                   c->wm_command ? c->wm_command : "(null)");
     ob_debug_type(OB_DEBUG_SM, "  state id: %s \n", s->id);
     ob_debug_type(OB_DEBUG_SM, "  state name: %s \n", s->name);
     ob_debug_type(OB_DEBUG_SM, "  state class: %s \n", s->class);
     ob_debug_type(OB_DEBUG_SM, "  state role: %s \n", s->role);
-    ob_debug_type(OB_DEBUG_SM, "  state type: %s \n", s->type);
     ob_debug_type(OB_DEBUG_SM, "  state command: %s \n",
                   s->command ? s->command : "(null)");
 
@@ -594,13 +592,7 @@ static gboolean session_state_cmp(ObSessionState *s, ObClient *c)
     {
         return (!strcmp(s->name, c->name) &&
                 !strcmp(s->class, c->class) &&
-                !strcmp(s->role, c->role) &&
-                /* the check for type is to catch broken clients, like
-                   firefox, which open a different window on startup
-                   with the same info as the one we saved. only do this
-                   check for old windows that dont use xsmp, others should
-                   know better ! */
-                (!s->command || c->type == s->type));
+                !strcmp(s->role, c->role));
     }
     return FALSE;
 }
@@ -623,6 +615,7 @@ static void session_load_file(const gchar *path)
 {
     xmlDocPtr doc;
     xmlNodePtr node, n;
+    GList *it, *inext;
 
     if (!parse_load(path, "openbox_session", &doc, &node))
         return;
@@ -649,9 +642,6 @@ static void session_load_file(const gchar *path)
         if (!(n = parse_find_node("role", node->children)))
             goto session_load_bail;
         state->role = parse_string(doc, n);
-        if (!(n = parse_find_node("windowtype", node->children)))
-            goto session_load_bail;
-        state->type = parse_int(doc, n);
         if (!(n = parse_find_node("desktop", node->children)))
             goto session_load_bail;
         state->desktop = parse_int(doc, n);
@@ -700,6 +690,50 @@ static void session_load_file(const gchar *path)
         session_state_free(state);
     }
 
+    /* Remove any duplicates.  This means that if two windows (or more) are
+       saved with the same session state, we won't restore a session for any
+       of them because we don't know what window to put what on. AHEM FIREFOX.
+
+       This is going to be an O(2^n) kind of operation unfortunately.
+    */
+    for (it = session_saved_state; it; it = inext) {
+        GList *jt, *jnext;
+        gboolean founddup = FALSE;
+        ObSessionState *s1 = it->data;
+
+        inext = g_list_next(it);
+
+        for (jt = g_list_next(it); jt; jt = jnext) {
+            ObSessionState *s2 = jt->data;
+            gboolean match;
+
+            jnext = g_list_next(jt);
+
+            if (s1->id && s2->id)
+                match = strcmp(s1->id, s2->id) == 0;
+            else if (s1->command && s2->command)
+                match = strcmp(s1->command, s2->command) == 0;
+            else
+                match = FALSE;
+
+            if (match &&
+                !strcmp(s1->name, s2->name) &&
+                !strcmp(s1->class, s2->class) &&
+                !strcmp(s1->role, s2->role))
+            {
+                session_state_free(s2);
+                session_saved_state =
+                    g_list_delete_link(session_saved_state, jt);
+                founddup = TRUE;
+            }
+        }
+
+        if (founddup) {
+            session_state_free(s1);
+            session_saved_state = g_list_delete_link(session_saved_state, it);
+        }
+    }
+
     xmlFreeDoc(doc);
 }
 
index 97e55a3b1fe8301b04b8eb709a42c72756c518d0..ddf6f7768bdd9d245b061af7dc0bfd271ba11590 100644 (file)
@@ -27,7 +27,6 @@ typedef struct _ObSessionState ObSessionState;
 
 struct _ObSessionState {
     gchar *id, *command, *name, *class, *role;
-    ObClientType type;
     guint desktop;
     gint x, y, w, h;
     gboolean shaded, iconic, skip_pager, skip_taskbar, fullscreen;
index dbfef2427f81454d41b700b6cc5e08e100d3727b..ee54ed0f9db25836ac5426f3e4d7fb04662ee508 100644 (file)
@@ -14,4 +14,5 @@ pt
 pt_BR
 fi
 en@quot en@boldquot
-it_IT
+it
+et
diff --git a/po/et.po b/po/et.po
new file mode 100644 (file)
index 0000000..424f857
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,330 @@
+# translation of openbox to Estonian
+# Copyright (C) 2007 Dana Jansens
+# This file is distributed under the same license as the Openbox 3 package.
+#
+# Andres Järv <andresjarv@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Openbox 3.4\n"
+"Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
+"POT-Creation-Date: 2007-05-14 22:09-0400\n"
+"PO-Revision-Date: 2007-05-21 20:11+0300\n"
+"Last-Translator: Andres Järv <andresjarv@gmail.com>\n"
+"Language-Team: Estonian <et@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+
+#: openbox/action.c:956
+#, c-format
+msgid "Invalid action '%s' requested. No such action exists."
+msgstr "Taotleti kehtetut käsklust '%s'. Sellist käsklust pole olemas."
+
+#: openbox/action.c:959
+#, c-format
+msgid "Invalid use of action '%s'. Action will be ignored."
+msgstr "Käskluse '%s' kasutus on kehtetu. Käsklust ignoreeritakse."
+
+#: openbox/action.c:1222 openbox/action.c:1240 openbox/action.c:1253
+#, c-format
+msgid "Failed to execute '%s': %s"
+msgstr "'%s' käivitamine ebaõnnestus: %s"
+
+#: openbox/action.c:1261
+#, c-format
+msgid "Failed to convert the path '%s' from utf8"
+msgstr "Raja '%s' ümberkodeerimine UTF8-st ebaõnnestus"
+
+#: openbox/client_list_combined_menu.c:102 openbox/client_list_menu.c:104
+msgid "Go there..."
+msgstr "Mine sinna..."
+
+#: openbox/client_list_combined_menu.c:148
+msgid "Windows"
+msgstr "Aknad"
+
+#: openbox/client_list_menu.c:199
+msgid "Desktops"
+msgstr "Töölauad"
+
+#: openbox/client_menu.c:241
+msgid "All desktops"
+msgstr "Kõik töölauad"
+
+#: openbox/client_menu.c:346
+msgid "&Layer"
+msgstr "&Kiht"
+
+#: openbox/client_menu.c:351
+msgid "Always on &top"
+msgstr "Aken teiste &peal"
+
+#: openbox/client_menu.c:352
+msgid "&Normal"
+msgstr "&Normaalne"
+
+#: openbox/client_menu.c:353
+msgid "Always on &bottom"
+msgstr "Aken teiste &all"
+
+#: openbox/client_menu.c:356
+msgid "&Send to desktop"
+msgstr "&Saada töölauale"
+
+#: openbox/client_menu.c:360
+msgid "Client menu"
+msgstr "Kliendi menüü"
+
+#: openbox/client_menu.c:366
+msgid "R&estore"
+msgstr "&Taasta"
+
+#: openbox/client_menu.c:374
+msgid "&Move"
+msgstr "&Liiguta"
+
+#: openbox/client_menu.c:376
+msgid "Resi&ze"
+msgstr "Muuda &suurust"
+
+#: openbox/client_menu.c:378
+msgid "Ico&nify"
+msgstr "Muuda &ikooniks"
+
+#: openbox/client_menu.c:386
+msgid "Ma&ximize"
+msgstr "Ma&ksimeeri"
+
+#: openbox/client_menu.c:394
+msgid "&Roll up/down"
+msgstr "&Rulli üles/alla"
+
+#: openbox/client_menu.c:396
+msgid "Un/&Decorate"
+msgstr "Äär&ed sisse/välja"
+
+#: openbox/client_menu.c:406
+msgid "&Close"
+msgstr "S&ulge"
+
+#: openbox/config.c:667
+#, c-format
+msgid "Invalid button '%s' specified in config file"
+msgstr "Vigane nupp '%s' määratletud konfiguratsioonifailis"
+
+#: openbox/keyboard.c:162
+msgid "Conflict with key binding in config file"
+msgstr "Konflikt kiirklahviga konfiguratsioonifailis"
+
+#: openbox/menu.c:98 openbox/menu.c:106
+#, c-format
+msgid "Unable to find a valid menu file '%s'"
+msgstr "Ei suudetud leida kehtivat menüüfaili '%s'"
+
+#: openbox/menu.c:149
+#, c-format
+msgid "Failed to execute command for pipe-menu '%s': %s"
+msgstr "Ei suudetud käivitada torumenüü '%s' käsku: %s"
+
+#: openbox/menu.c:166
+#, c-format
+msgid "Invalid output from pipe-menu '%s'"
+msgstr "Vigane väljund torumenüüst '%s'"
+
+#: openbox/menu.c:179
+#, c-format
+msgid "Attempted to access menu '%s' but it does not exist"
+msgstr "Üritati ligi pääseda menüüle '%s', aga seda pole olemas"
+
+#: openbox/menu.c:331 openbox/menu.c:332
+msgid "More..."
+msgstr "Rohkem..."
+
+#: openbox/mouse.c:321
+#, c-format
+msgid "Invalid button '%s' in mouse binding"
+msgstr "Vigane nupp '%s' hiire kiirklahvides"
+
+#: openbox/mouse.c:327
+#, c-format
+msgid "Invalid context '%s' in mouse binding"
+msgstr "Vigane kontekst '%s' hiire kiirklahvides"
+
+#: openbox/openbox.c:125
+#, c-format
+msgid "Unable to change to home directory '%s': %s"
+msgstr "Ei suudetud siseneda kodukataloogi '%s': %s"
+
+#: openbox/openbox.c:145
+msgid "Failed to open the display from the DISPLAY environment variable."
+msgstr "DISPLAY keskkonnamuutujas oleva ekraani avamine ebaõnnestus."
+
+#: openbox/openbox.c:176
+msgid "Failed to initialize the render library."
+msgstr "Renderdamisteegi käivitamine ebaõnnestus."
+
+#: openbox/openbox.c:182
+msgid "X server does not support locale."
+msgstr "X server ei toeta lokaati."
+
+#: openbox/openbox.c:184
+msgid "Cannot set locale modifiers for the X server."
+msgstr "Ei suudetud sättida lokaadimuutujaid X serveri jaoks."
+
+#: openbox/openbox.c:244
+msgid "Unable to find a valid config file, using some simple defaults"
+msgstr "Ei suudetud leida kehtivat konfiguratsioonifaili, kasutatakse lihtsaid vaikimisi seadeid"
+
+#: openbox/openbox.c:270
+msgid "Unable to load a theme."
+msgstr "Ei suudetud laadida teemat."
+
+#: openbox/openbox.c:383
+#, c-format
+msgid "Restart failed to execute new executable '%s': %s"
+msgstr "Taaskäivitusel ebaõnnestus uue käivitusfaili '%s' käivitamine: %s"
+
+#: openbox/openbox.c:451 openbox/openbox.c:453
+msgid "Copyright (c)"
+msgstr "Autoriõigused (c)"
+
+#: openbox/openbox.c:462
+msgid "Syntax: openbox [options]\n"
+msgstr "Süntaks: openbox [seaded]\n"
+
+#: openbox/openbox.c:463
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Seaded:\n"
+
+#: openbox/openbox.c:464
+msgid "  --help              Display this help and exit\n"
+msgstr "  --help              Selle abi kuvamine ja väljumine\n"
+
+#: openbox/openbox.c:465
+msgid "  --version           Display the version and exit\n"
+msgstr "  --version           Versiooni kuvamine ja väljumine\n"
+
+#: openbox/openbox.c:466
+msgid "  --replace           Replace the currently running window manager\n"
+msgstr "  --replace           Hetkel töötava aknahalduri asendamine\n"
+
+#: openbox/openbox.c:467
+msgid "  --sm-disable        Disable connection to the session manager\n"
+msgstr "  --sm-disable        Seansihalduriga ühenduse keelamine\n"
+
+#: openbox/openbox.c:468
+msgid ""
+"\n"
+"Passing messages to a running Openbox instance:\n"
+msgstr ""
+"\n"
+"Jooksvale Openboxi seansile sõnumite edastamine:\n"
+
+#: openbox/openbox.c:469
+msgid "  --reconfigure       Reload Openbox's configuration\n"
+msgstr "  --reconfigure       Openboxi konfiguratsioon uuesti laadimine\n"
+
+#: openbox/openbox.c:470
+msgid ""
+"\n"
+"Debugging options:\n"
+msgstr ""
+"\n"
+"Silumise seaded:\n"
+
+#: openbox/openbox.c:471
+msgid "  --sync              Run in synchronous mode\n"
+msgstr "  --sync              Sünkroonselt jooksutamine\n"
+
+#: openbox/openbox.c:472
+msgid "  --debug             Display debugging output\n"
+msgstr "  --debug             Silumisväljundi kuvamine\n"
+
+#: openbox/openbox.c:473
+msgid "  --debug-focus       Display debugging output for focus handling\n"
+msgstr "  --debug-focus       Fookusekäsitluse siluriväljundi kuvamine\n"
+
+#: openbox/openbox.c:474
+msgid "  --debug-xinerama    Split the display into fake xinerama screens\n"
+msgstr "  --debug-xinerama    Ekraani võlts-Xinerama ekraanideks jagamine\n"
+
+#: openbox/openbox.c:475
+#, c-format
+msgid ""
+"\n"
+"Please report bugs at %s\n"
+msgstr ""
+"\n"
+"Palun teata vigadest siia %s\n"
+
+#: openbox/openbox.c:569
+#, c-format
+msgid "Invalid command line argument '%s'\n"
+msgstr "Vigane käsurea argument '%s'\n"
+
+#: openbox/screen.c:85 openbox/screen.c:186
+#, c-format
+msgid "A window manager is already running on screen %d"
+msgstr "Ekraanil %d juba jookseb aknahaldur"
+
+#: openbox/screen.c:122
+#, c-format
+msgid "Could not acquire window manager selection on screen %d"
+msgstr "Ei suuda hankida aknahaldurite loetelu ekraanil %d"
+
+#: openbox/screen.c:143
+#, c-format
+msgid "The WM on screen %d is not exiting"
+msgstr "Aknahaldur ekraanil %d ei sulgu"
+
+#: openbox/session.c:100
+#, c-format
+msgid "Unable to make directory '%s': %s"
+msgstr "Kausta '%s' tegemine ebaõnnestus: %s"
+
+#: openbox/session.c:442
+#, c-format
+msgid "Unable to save the session to '%s': %s"
+msgstr "Seansi '%s' salvestamine ebaõnnestus: %s"
+
+#: openbox/session.c:550
+#, c-format
+msgid "Error while saving the session to '%s': %s"
+msgstr "Seansi '%s' salvestamisel ilmnes viga: %s"
+
+#: openbox/startupnotify.c:237
+#, c-format
+msgid "Running %s\n"
+msgstr "Jooksev %s\n"
+
+#: openbox/translate.c:58
+#, c-format
+msgid "Invalid modifier key '%s' in key/mouse binding"
+msgstr "Vigane muutujaklahv '%s' hiire/klaviatuuri kiirklahvides"
+
+#: openbox/translate.c:135
+#, c-format
+msgid "Invalid key code '%s' in key binding"
+msgstr "Vigane klahvikood '%s' kiirklahvil"
+
+#: openbox/translate.c:142
+#, c-format
+msgid "Invalid key name '%s' in key binding"
+msgstr "Vigane klahvinimi '%s' kiirklahvil"
+
+#: openbox/translate.c:148
+#, c-format
+msgid "Requested key '%s' does not exist on the display"
+msgstr "Soovitud klahvi '%s' ei ole sellel ekraanil"
+
+#: openbox/xerror.c:39
+#, c-format
+msgid "X Error: %s"
+msgstr "X-i viga: %s"
+
similarity index 100%
rename from po/it_IT.po
rename to po/it.po
index 4a223d76debb31d472320bf05453c8e2c8636744..dc13b627fee26b106a1af8a52eaf54f83a85781e 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,16 +1,17 @@
 # Polish translation of Openbox 3.
-# Copyright (C) 2004 Mikael Magnusson
+# Copyright (C) 2007 Mikael Magnusson
 # This file is distributed under the same license as the Openbox 3 package.
 # Madej <madej@afn.no-ip.org>, 2004.
+# Paweł Rusinek <p.rusinek@gmail.com>, 2007.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Openbox 3.2\n"
+"Project-Id-Version: Openbox 3.4\n"
 "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
 "POT-Creation-Date: 2007-05-21 00:08-0400\n"
-"PO-Revision-Date: 2004-09-07 21:17+0200\n"
-"Last-Translator: Madej <madej@afn.no-ip.org>\n"
-"Language-Team: NONE\n"
+"PO-Revision-Date: 2007-05-21 18:09+0100\n"
+"Last-Translator: Paweł Rusinek <p.rusinek@gmail.com>\n"
+"Language-Team: None\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -18,34 +19,37 @@ msgstr ""
 #: openbox/action.c:954
 #, c-format
 msgid "Invalid action '%s' requested. No such action exists."
-msgstr ""
+msgstr "Wywołano niepoprawną akcję '%s'. Taka akcja nie istnieje."
 
 #: openbox/action.c:957
 #, c-format
 msgid "Invalid use of action '%s'. Action will be ignored."
-msgstr ""
+msgstr "Niepoprawne użycie akcji '%s'. Akcja zostanie pominięta."
 
-#: openbox/action.c:1226 openbox/action.c:1244 openbox/action.c:1257
+#: openbox/action.c:1226
+#: openbox/action.c:1244
+#: openbox/action.c:1257
 #, c-format
 msgid "Failed to execute '%s': %s"
-msgstr ""
+msgstr "Nie udało się uruchomić '%s': %s"
 
 #: openbox/action.c:1265
 #, c-format
 msgid "Failed to convert the path '%s' from utf8"
-msgstr ""
+msgstr "Nie można przekonwertować ścieżki '%s' z kodowania utf8"
 
-#: openbox/client_list_combined_menu.c:102 openbox/client_list_menu.c:104
+#: openbox/client_list_combined_menu.c:102
+#: openbox/client_list_menu.c:104
 msgid "Go there..."
 msgstr "Przejdź..."
 
 #: openbox/client_list_combined_menu.c:148
 msgid "Windows"
-msgstr ""
+msgstr "Okna"
 
 #: openbox/client_list_menu.c:199
 msgid "Desktops"
-msgstr "Pulpit"
+msgstr "Pulpity"
 
 #: openbox/client_menu.c:246
 msgid "All desktops"
@@ -53,7 +57,7 @@ msgstr "Wszystkie pulpity"
 
 #: openbox/client_menu.c:351
 msgid "&Layer"
-msgstr ""
+msgstr "&Warstwa"
 
 #: openbox/client_menu.c:356
 msgid "Always on &top"
@@ -69,7 +73,7 @@ msgstr "Zawsze pod &spodem"
 
 #: openbox/client_menu.c:361
 msgid "&Send to desktop"
-msgstr "Wyślij na &pulpit"
+msgstr "Wyślij na p&ulpit"
 
 #: openbox/client_menu.c:365
 msgid "Client menu"
@@ -77,11 +81,11 @@ msgstr "Menu klienta"
 
 #: openbox/client_menu.c:371
 msgid "R&estore"
-msgstr "Prz&ywróć"
+msgstr "&Przywróć"
 
 #: openbox/client_menu.c:379
 msgid "&Move"
-msgstr "Prz&esuń"
+msgstr "Prze&suń"
 
 #: openbox/client_menu.c:381
 msgid "Resi&ze"
@@ -97,11 +101,11 @@ msgstr "Ma&ksymalizuj"
 
 #: openbox/client_menu.c:399
 msgid "&Roll up/down"
-msgstr "Ro/&Zwiń"
+msgstr "&Zwiń/Rozwiń"
 
 #: openbox/client_menu.c:401
 msgid "Un/&Decorate"
-msgstr ""
+msgstr "Pokaż/Ukryj &dekoracje"
 
 #: openbox/client_menu.c:411
 msgid "&Close"
@@ -110,145 +114,154 @@ msgstr "Z&amknij"
 #: openbox/config.c:701
 #, c-format
 msgid "Invalid button '%s' specified in config file"
-msgstr ""
+msgstr "Niepoprawny klawisz '%s' użyty w pliku konfiguracyjnym"
 
 #: openbox/keyboard.c:162
 msgid "Conflict with key binding in config file"
-msgstr ""
+msgstr "Konflikt z powiązaniem klawiaturowym w pliku konfiguracyjnym"
 
-#: openbox/menu.c:98 openbox/menu.c:106
+#: openbox/menu.c:98
+#: openbox/menu.c:106
 #, c-format
 msgid "Unable to find a valid menu file '%s'"
-msgstr ""
+msgstr "Nie można odnaleźć poprawnego pliku menu '%s'"
 
 #: openbox/menu.c:149
 #, c-format
 msgid "Failed to execute command for pipe-menu '%s': %s"
-msgstr ""
+msgstr "Nie udało się wykonać polecenia dla pipe-menu '%s': %s"
 
 #: openbox/menu.c:166
 #, c-format
 msgid "Invalid output from pipe-menu '%s'"
-msgstr ""
+msgstr "Niepoprawny wynik z pipe-menu '%s'"
 
 #: openbox/menu.c:179
 #, c-format
 msgid "Attempted to access menu '%s' but it does not exist"
-msgstr ""
+msgstr "Plik menu '%s' nie istnieje"
 
-#: openbox/menu.c:331 openbox/menu.c:332
+#: openbox/menu.c:331
+#: openbox/menu.c:332
 msgid "More..."
-msgstr ""
+msgstr "Więcej..."
 
 #: openbox/mouse.c:338
 #, c-format
 msgid "Invalid button '%s' in mouse binding"
-msgstr ""
+msgstr "Niepoprawny klawisz '%s' w powiązaniu myszy"
 
 #: openbox/mouse.c:344
 #, c-format
 msgid "Invalid context '%s' in mouse binding"
-msgstr ""
+msgstr "Niepoprawny kontekst '%s' w powiązaniu myszy"
 
 #: openbox/openbox.c:128
 #, c-format
 msgid "Unable to change to home directory '%s': %s"
-msgstr ""
+msgstr "Nie można przejść do katalogu domowego '%s': %s"
 
 #: openbox/openbox.c:148
 msgid "Failed to open the display from the DISPLAY environment variable."
-msgstr ""
+msgstr "Nie udało się otworzyć ekranu na podstawie zmiennej środowiskowej DISPLAY."
 
 #: openbox/openbox.c:179
 msgid "Failed to initialize the render library."
-msgstr ""
+msgstr "Nie udało się zainicjować biblioteki render."
 
 #: openbox/openbox.c:185
 msgid "X server does not support locale."
-msgstr ""
+msgstr "Serwer X nie obsługuje ustawień lokalnych."
 
 #: openbox/openbox.c:187
 msgid "Cannot set locale modifiers for the X server."
-msgstr ""
+msgstr "Nie można ustawić modyfikatorów lokalnych dla serwera X."
 
 #: openbox/openbox.c:248
 msgid "Unable to find a valid config file, using some simple defaults"
-msgstr ""
+msgstr "Nie można odnaleźć poprawnego pliku konfiguracyjnego, użyte domyślne wartości"
 
 #: openbox/openbox.c:274
 msgid "Unable to load a theme."
-msgstr ""
+msgstr "Nie można załadować motywu."
 
 #: openbox/openbox.c:393
 #, c-format
 msgid "Restart failed to execute new executable '%s': %s"
-msgstr ""
+msgstr "Podczas restartu nie udało się uruchomić nowego pliku '%s': %s"
 
-#: openbox/openbox.c:461 openbox/openbox.c:463
+#: openbox/openbox.c:461
+#: openbox/openbox.c:463
 msgid "Copyright (c)"
-msgstr ""
+msgstr "Copyright (c)"
 
 #: openbox/openbox.c:472
 msgid "Syntax: openbox [options]\n"
-msgstr ""
+msgstr "Składnia: openbox [opcje]\n"
 
 #: openbox/openbox.c:473
 msgid ""
 "\n"
 "Options:\n"
 msgstr ""
+"\n"
+"Opcje:\n"
 
 #: openbox/openbox.c:474
 msgid "  --help              Display this help and exit\n"
-msgstr ""
+msgstr "  --help              Wypisuje tę pomoc i kończy\n"
 
 #: openbox/openbox.c:475
 msgid "  --version           Display the version and exit\n"
-msgstr ""
+msgstr "  --version           Wypisuje informację o wersji i kończy\n"
 
 #: openbox/openbox.c:476
 msgid "  --replace           Replace the currently running window manager\n"
-msgstr ""
+msgstr "  --replace           Zastępuje aktualnie działający menedżer okien\n"
 
 #: openbox/openbox.c:477
 msgid "  --sm-disable        Disable connection to the session manager\n"
-msgstr ""
+msgstr "  --sm-disable        Nie tworzy połączenia z menedżerem sesji\n"
 
 #: openbox/openbox.c:478
 msgid ""
 "\n"
 "Passing messages to a running Openbox instance:\n"
 msgstr ""
+"\n"
+"Przekazywanie komunikatów do działającej instancji Openboksa:\n"
 
 #: openbox/openbox.c:479
 msgid "  --reconfigure       Reload Openbox's configuration\n"
-msgstr ""
+msgstr "  --reconfigure       Ponownie odczytuje pliki konfiguracyjne\n"
 
 #: openbox/openbox.c:480
 msgid "  --restart           Restart Openbox\n"
-msgstr ""
+msgstr "  --restart           Ponownie uruchamia Openboksa\n"
 
 #: openbox/openbox.c:481
 msgid ""
 "\n"
 "Debugging options:\n"
 msgstr ""
+"\n"
+"Opcje debugowania:\n"
 
 #: openbox/openbox.c:482
 msgid "  --sync              Run in synchronous mode\n"
-msgstr ""
+msgstr "  --sync              Uruchamia w trybie synchronicznym\n"
 
 #: openbox/openbox.c:483
 msgid "  --debug             Display debugging output\n"
-msgstr ""
+msgstr "  --debug             Wypisuje informacje dotyczące debugowania\n"
 
 #: openbox/openbox.c:484
 msgid "  --debug-focus       Display debugging output for focus handling\n"
-msgstr ""
+msgstr "  --debug             Wypisuje informacje dotyczące debugowania, związane z obsługą aktywacji\n"
 
 #: openbox/openbox.c:485
 msgid "  --debug-xinerama    Split the display into fake xinerama screens\n"
-msgstr ""
+msgstr "  --debug-xinerama    Dzieli obszar wyświetlania na sztuczne ekrany xineramy\n"
 
 #: openbox/openbox.c:486
 #, c-format
@@ -256,68 +269,72 @@ msgid ""
 "\n"
 "Please report bugs at %s\n"
 msgstr ""
+"\n"
+"Proszę zgłaszać błędy (w języku angielskim) w serwisie %s\n"
 
 #: openbox/openbox.c:578
 #, c-format
 msgid "Invalid command line argument '%s'\n"
-msgstr ""
+msgstr "Niepoprawny argument '%s'\n"
 
-#: openbox/screen.c:85 openbox/screen.c:186
+#: openbox/screen.c:85
+#: openbox/screen.c:186
 #, c-format
 msgid "A window manager is already running on screen %d"
-msgstr ""
+msgstr "Menedżer okien jest już uruchomiony na ekranie %d"
 
 #: openbox/screen.c:122
 #, c-format
 msgid "Could not acquire window manager selection on screen %d"
-msgstr ""
+msgstr "Nie można uzyskać wyboru menedżera okien na ekranie %d"
 
 #: openbox/screen.c:143
 #, c-format
 msgid "The WM on screen %d is not exiting"
-msgstr ""
+msgstr "Menedżer okien na ekranie %d nie kończy działania"
 
 #: openbox/session.c:100
 #, c-format
 msgid "Unable to make directory '%s': %s"
-msgstr "Nie mo utworzyć katalogu '%s': %s"
+msgstr "Nie można utworzyć katalogu '%s': %s"
 
 #: openbox/session.c:442
 #, c-format
 msgid "Unable to save the session to '%s': %s"
-msgstr ""
+msgstr "Nie można zapisać sesji do '%s': %s"
 
 #: openbox/session.c:552
 #, c-format
 msgid "Error while saving the session to '%s': %s"
-msgstr ""
+msgstr "Wystąpił błąd podczas zapisywania sesji do '%s': %s"
 
 #: openbox/startupnotify.c:237
 #, c-format
 msgid "Running %s\n"
-msgstr ""
+msgstr "Uruchamianie %s\n"
 
 #: openbox/translate.c:58
 #, c-format
 msgid "Invalid modifier key '%s' in key/mouse binding"
-msgstr ""
+msgstr "Niepoprawny modyfikator '%s' w powiązaniu klawiaturowym lub myszy"
 
 #: openbox/translate.c:135
 #, c-format
 msgid "Invalid key code '%s' in key binding"
-msgstr ""
+msgstr "Niepoprawny kod '%s' w powiązaniu klawiaturowym"
 
 #: openbox/translate.c:142
 #, c-format
 msgid "Invalid key name '%s' in key binding"
-msgstr ""
+msgstr "Niepoprawna nazwa '%s' w powiązaniu klawiaturowym"
 
 #: openbox/translate.c:148
 #, c-format
 msgid "Requested key '%s' does not exist on the display"
-msgstr ""
+msgstr "Żądany klawisz '%s' nie istnieje na ekranie"
 
 #: openbox/xerror.c:39
 #, c-format
 msgid "X Error: %s"
-msgstr ""
+msgstr "Błąd serwera X: %s"
+
index 1bb3f0908fba9fdfd1f9edfd5ff34cee615df92a..c674e848c9cfff389338ff96cbdb2fcca0535e25 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: openbox 3.4\n"
 "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
-"POT-Creation-Date: 2007-05-21 00:08-0400\n"
-"PO-Revision-Date: 2007-05-06 13:44+0200\n"
+"POT-Creation-Date: 2007-05-21 15:39+0200\n"
+"PO-Revision-Date: 2007-05-22 00:29+0200\n"
 "Last-Translator: Mikael Magnusson <mikachu@icculus.org>\n"
 "Language-Team: None\n"
 "MIME-Version: 1.0\n"
@@ -18,7 +18,7 @@ msgstr ""
 #: openbox/action.c:954
 #, c-format
 msgid "Invalid action '%s' requested. No such action exists."
-msgstr "Ogiltig action '%s' efterfrågades, men finns inte."
+msgstr "Ogiltig action '%s' efterfrågades, men den finns inte."
 
 #: openbox/action.c:957
 #, c-format
@@ -37,7 +37,7 @@ msgstr "Lyckades inte konvertera s
 
 #: openbox/client_list_combined_menu.c:102 openbox/client_list_menu.c:104
 msgid "Go there..."
-msgstr "Gå dit"
+msgstr "Gå dit..."
 
 #: openbox/client_list_combined_menu.c:148
 msgid "Windows"
@@ -69,7 +69,7 @@ msgstr "Alltid &underst"
 
 #: openbox/client_menu.c:361
 msgid "&Send to desktop"
-msgstr "&Skicka till"
+msgstr "&Skicka till skrivbord"
 
 #: openbox/client_menu.c:365
 msgid "Client menu"
@@ -101,7 +101,7 @@ msgstr "&Rulla upp/ner"
 
 #: openbox/client_menu.c:401
 msgid "Un/&Decorate"
-msgstr "(Av)&Dekorera"
+msgstr "&Dekorationer"
 
 #: openbox/client_menu.c:411
 msgid "&Close"
@@ -157,7 +157,7 @@ msgstr "Kunde inte g
 
 #: openbox/openbox.c:148
 msgid "Failed to open the display from the DISPLAY environment variable."
-msgstr "Kunde inte öppna en display från DISPLAY-miljövariabeln."
+msgstr "Kunde inte öppna en display från miljövariabeln DISPLAY."
 
 #: openbox/openbox.c:179
 msgid "Failed to initialize the render library."
@@ -169,11 +169,11 @@ msgstr "X-servern st
 
 #: openbox/openbox.c:187
 msgid "Cannot set locale modifiers for the X server."
-msgstr ""
+msgstr "Kan inte sätta lokaliseringsmodifierare för X-servern."
 
 #: openbox/openbox.c:248
 msgid "Unable to find a valid config file, using some simple defaults"
-msgstr "Kunde inte hitta en giltig konfiguration, använder standardvärden"
+msgstr "Kunde inte hitta en giltig konfigurationsfil, använder enkla standardvärden"
 
 #: openbox/openbox.c:274
 msgid "Unable to load a theme."
@@ -186,7 +186,7 @@ msgstr "Restart misslyckades att starta nytt program '%s': %s"
 
 #: openbox/openbox.c:461 openbox/openbox.c:463
 msgid "Copyright (c)"
-msgstr ""
+msgstr "Copyright (c)"
 
 #: openbox/openbox.c:472
 msgid "Syntax: openbox [options]\n"
@@ -214,7 +214,7 @@ msgstr "  --replace           Ers
 
 #: openbox/openbox.c:477
 msgid "  --sm-disable        Disable connection to the session manager\n"
-msgstr "  --sm-disable        Avaktivera anslutning till sessions-hanteraren\n"
+msgstr "  --sm-disable        Avaktivera anslutning till sessionshanteraren\n"
 
 #: openbox/openbox.c:478
 msgid ""
@@ -254,7 +254,7 @@ msgstr "  --debug-focus       Visa debuginformation f
 
 #: openbox/openbox.c:485
 msgid "  --debug-xinerama    Split the display into fake xinerama screens\n"
-msgstr "  --debug-xinerama    Dela skärmen i fejkade xinerama-skärmar\n"
+msgstr "  --debug-xinerama    Dela skärmen i simulerade xinerama-skärmar\n"
 
 #: openbox/openbox.c:486
 #, c-format
@@ -308,7 +308,7 @@ msgstr "K
 #: openbox/translate.c:58
 #, c-format
 msgid "Invalid modifier key '%s' in key/mouse binding"
-msgstr "Ogiltig modifikationstangent '%s' i tangent/musbindning"
+msgstr "Ogiltig modifikationstangent '%s' i tangent-/musbindning"
 
 #: openbox/translate.c:135
 #, c-format
@@ -328,4 +328,4 @@ msgstr "Efterfr
 #: openbox/xerror.c:39
 #, c-format
 msgid "X Error: %s"
-msgstr "X Fel: %s"
+msgstr "X-fel: %s"