From a48850817a24b39a4c0dd35b287112e18edf93ee Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Tue, 22 May 2007 03:07:08 +0000 Subject: [PATCH] merge r6704-6722 from trunk --- data/xsession/openbox-gnome-session.in | 2 +- openbox/client.c | 78 +++--- openbox/event.c | 89 +++++-- openbox/frame.c | 127 ++++++---- openbox/frame.h | 5 +- openbox/geom.h | 5 + openbox/openbox.c | 12 +- openbox/openbox.h | 1 + openbox/session.c | 68 +++-- openbox/session.h | 1 - po/LINGUAS | 3 +- po/et.po | 330 +++++++++++++++++++++++++ po/{it_IT.po => it.po} | 0 po/pl.po | 147 ++++++----- po/sv.po | 28 +-- 15 files changed, 686 insertions(+), 210 deletions(-) create mode 100644 po/et.po rename po/{it_IT.po => it.po} (100%) diff --git a/data/xsession/openbox-gnome-session.in b/data/xsession/openbox-gnome-session.in index c2bc9399..cacfec4d 100644 --- a/data/xsession/openbox-gnome-session.in +++ b/data/xsession/openbox-gnome-session.in @@ -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 "$@" diff --git a/openbox/client.c b/openbox/client.c index 9b89b103..68dfedce 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -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 */ } } diff --git a/openbox/event.c b/openbox/event.c index bf2fd932..aa082e68 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -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(); diff --git a/openbox/frame.c b/openbox/frame.c index 0f1df63d..18d922cc 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -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; diff --git a/openbox/frame.h b/openbox/frame.h index b1ed8183..0d3cf0e7 100644 --- a/openbox/frame.h +++ b/openbox/frame.h @@ -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; diff --git a/openbox/geom.h b/openbox/geom.h index 39832e94..67a82cde 100644 --- a/openbox/geom.h +++ b/openbox/geom.h @@ -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 && \ diff --git a/openbox/openbox.c b/openbox/openbox.c index f66f6a76..b69f2c1e 100644 --- a/openbox/openbox.c +++ b/openbox/openbox.c @@ -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 diff --git a/openbox/openbox.h b/openbox/openbox.h index e258d31e..460de0b4 100644 --- a/openbox/openbox.h +++ b/openbox/openbox.h @@ -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; diff --git a/openbox/session.c b/openbox/session.c index d0db0717..5a084ab6 100644 --- a/openbox/session.c +++ b/openbox/session.c @@ -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%s\n", t); g_free(t); - fprintf(f, "\t%d\n", c->type); - fprintf(f, "\t%d\n", c->desktop); fprintf(f, "\t%d\n", prex); fprintf(f, "\t%d\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); } diff --git a/openbox/session.h b/openbox/session.h index 97e55a3b..ddf6f776 100644 --- a/openbox/session.h +++ b/openbox/session.h @@ -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; diff --git a/po/LINGUAS b/po/LINGUAS index dbfef242..ee54ed0f 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -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 index 00000000..424f8570 --- /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 , 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 \n" +"Language-Team: Estonian \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" + diff --git a/po/it_IT.po b/po/it.po similarity index 100% rename from po/it_IT.po rename to po/it.po diff --git a/po/pl.po b/po/pl.po index 4a223d76..dc13b627 100644 --- 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 , 2004. +# Paweł Rusinek , 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 \n" -"Language-Team: NONE\n" +"PO-Revision-Date: 2007-05-21 18:09+0100\n" +"Last-Translator: Paweł Rusinek \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 mogę 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" + diff --git a/po/sv.po b/po/sv.po index 1bb3f090..c674e848 100644 --- 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 \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" -- 2.39.2