Commit graph

4467 commits

Author SHA1 Message Date
Thomas Lübking
3df681da2d apply size hints when applying the state
There's a setting about maximization which allows to control whether the
resize increments should be honored when maximizing windows.
This is currently used to control whether maximized windows may resize
themselves via (rare) configure events, but not when maximizing windows
- what's somehow not what the config item sells.

BUG: 914
2016-08-27 08:54:26 +02:00
Thomas Lübking
299e098f5f handle oversized windows
Clients can still be stupid (feh constrains itself to the root window
...) or lazy (llpp uses the last size - if that was in pivot mode ...)
and create windows which exceed the workspace dimensions, resulting in
both opposing edges being off-screen (for all tested placements)

This applies partial maximization instead and resizes the (restored)
window to soem sane size (size constraints applied)

CCBUG: 688
CCBUG: 984
2016-08-27 08:54:26 +02:00
Thomas Lübking
4304e66787 catch absurd but possible div-by-zero 2016-08-27 00:37:52 +02:00
Thomas Lübking
d4e9bb7656 emit resize signal when altering the iconbar mode
Otherwise the iconbar would be capped when showing more (eg. all instead
of iconified) windows
2016-08-27 00:37:52 +02:00
Thomas Lübking
f176c10881 Grab Server when showing or switching desktop
Should reduce exposure events, notably since the
windows are not in stack order.
2016-08-26 08:34:00 +02:00
Thomas Lübking
9613d2cd83 XAllowEvent's for CurrentTime
ML confirms that be.time seems to be dated or junk and
causes permanent freezes. Seen such myself but couldn't
sufficiently reproduce to pin a culprit.
2016-08-26 08:33:54 +02:00
Thomas Lübking
fbb2d16639 allow to alter button labels via fluxbox-remote
Command is "RelabelButton button.foo $LABEL"

This is useful to eg. hint the amount of unread mails in a
button to start your MUA, reflect the $USER in a session menu button
etc.
2016-08-26 08:18:48 +02:00
Thomas Lübking
393ba45f91 toolbar: allow labeled general action buttons
With this patch you can add buttons like
*.toolbar.button.foo.label: F
*.toolbar.button.foo.commands: RootMenu:Exec foo
*.toolbar.tools: button.foo, iconbar, ...

button.*.label is mandatory
button.*.commands suppots 5 mouse buttons, but the way
stringtok works, it's required to add a blank
(or some junk) between to colons to skip a button
2016-08-26 08:18:29 +02:00
Thomas Lübking
5c1bb0a21f support FbTk::TextButton's in ButtonTool
required to allow labeled general action
buttons in the toolbar
2016-08-26 08:17:42 +02:00
Thomas Lübking
1473bcf655 add functions to toggle slit/toolbar hidden 2016-08-26 08:06:47 +02:00
Thomas Lübking
10a9574738 Fix autohiding/raising timer logics
Trying to control a timer bound to an unconditional toggle, caused by
opposing events does not work. <- That's a period.
The toolbar implementation would act too seldom, the slit to often.

Instead, fire the timer whenever the state does not match the event and
bind it to a function that queries the pointer position and acts
accordingly.
2016-08-26 08:06:47 +02:00
Thomas Lübking
fe8ff87292 add autoraising to toolbar and slit 2016-08-26 08:06:47 +02:00
Thomas Lübking
6c0565c482 add commands to toggle toolbar and slit layer
toggle(Toolbar|Slit)Above toggles the resp. item between its
regular and the AboveDock layer (ie. above everything, even visible on
active fullscreen windows)

Also required step for autoraising.

REQUEST: 222
2016-08-26 08:06:47 +02:00
Thomas Lübking
f22435d60b add support for artificial struts (per head)
Allows to maintain access to desktop fractions etc. against
maximized windows. Also permits to OnToolbar clicks in this case, eg. to
raise it.

REQUEST: 150
2016-08-26 08:06:47 +02:00
Thomas Lübking
3bde5c8aee Improve stretching (RELATIVE) toolbar items
The available space is distributed reg. the preferred width
of items (spacers and the iconbar ;-) instead of evenly.

The preferred width of the iconbar is calculated from its buttons.

This allows to align the iconbar using spacers and makes better use of
the available space
2016-08-26 07:33:44 +02:00
Thomas Lübking
10e3f10b55 Adjust RELATIVE ::repositionItems (more relative)
The evenly distributed space causes a lot of whitespace and otoh. cut
items, so we use the items internal size as indicator IF the item is a
textbutton (the regular usecase in fluxbox)

Also publish the function to be triggered from outside (because the
caller can, in theory, much better compress several text changes)
2016-08-06 17:09:30 +02:00
Thomas Lübking
cc80230bd8 expose a preferredWidth of *Button's 2016-08-06 17:09:30 +02:00
Thomas Lübking
59d9b0703b delay title updates
Notably shells will cause brief interim titles when calling
short-lived commands (try "ls"...)
This covers such by waiting 100ms after every title update before
reacting (the title will have returned in the mentioned cases, the UI
remains steady)
2016-08-06 17:09:29 +02:00
Thomas Lübking
a8b0b3632b signal title changes
so that interested parties (the iconbar ;-) can use/forward them
2016-08-06 17:09:29 +02:00
Thomas Lübking
f6e1f555f9 Add SpacerTool
This allows to add random spacers, fixed size or stretching, to the toolbar.

CCBUG: 1141
2016-08-06 17:09:05 +02:00
Thomas Lübking
50b6102bbf flag slit for reconfiguration and act on show
According to Peter Ganzhorn, there's a transparency issue when using an
autohiding slit, but I don't use a slit at all.
However, the explanations in the bug do make sense and this is just an
alternative approach on the problem (that does not require interim
showing)

BUG: 1132
2016-07-30 18:38:28 +02:00
Thomas Lübking
dc226902a7 fix transient dialog placement
dialogs can be bigger than the mainwindow and the unsigned dimensions
then overflow in the subtraction (the window would still be moved into
screen bounds but appear on ugly 0,0)
2016-07-30 18:38:28 +02:00
Thomas Lübking
58491165d3 hide window before restoring the client on unmaps
otherwise compositors will update the texture and operate on (fade) the
frame instead of the client.
Didn't test why this only happens on ARGBs, but could be the colormap
installation.

BUG: 1110
2016-07-30 18:27:21 +02:00
Thomas Lübking
5e08a23f6c reposition visible submenus when changing style
a fixed position of the style menu won't help (the menu geometry changes
*because* the item geometries do) - warping the pointer would likely be
possible, but warping the pointer is cc. "evil"

BUG: 715
2016-07-30 18:22:49 +02:00
Thomas Lübking
bccb185cd9 reconfigTheme's on loading a new style
Also reconfigure menus (recursively) on style load
The most critical call is the shape update - the menus often become
cut-off, preventing mouse interaction with lower items, but also colors
are not applied correctly to menus w/o updating them.

BUG 1022 is most likely this and only a misinterpretation (for the
mentioned items are those with lacking color updates on style updates)

BUG: 1146
BUG: 1017
CCBUG: 1022
2016-07-30 18:22:49 +02:00
Thomas Lübking
6defd9391d handle both Focusable's as m_cycling_next
m_cycling_next can either be WinClient or a FluxboxWindow
In case of the latter, client->fbwindow() needs to be matched in
setFocusedWindow when protecting against client side focus juggling.

BUG: 1148
2016-07-30 15:10:21 +02:00
Thomas Lübking
f6132b7602 explicitly set s_focusedWindow for cycle protection 2016-07-30 15:10:21 +02:00
Thomas Lübking
87c0182ea5 Do not reset cycle focus when unsetting focus only 2016-07-30 15:10:21 +02:00
Thomas Lübking
635f14e5c9 Do not protect focus while cycling
We've better things to do and the focus is moving around anyway
BUG: 1048
2016-07-30 15:10:21 +02:00
Thomas Lübking
2758485d35 do not lock focus against unfocusing.
Latter happens when eg. closing windows, including such with
locked focus
2016-07-30 15:10:20 +02:00
Thomas Lübking
34bf7d31c4 prefer m_cycling_next over s_focused_window
as cycle start (former is where we wanted to go and X11 is still async)
2016-07-30 15:08:41 +02:00
Thomas Lübking
4bc08709f1 allow to force moveResize and use on applyState
applyState also requires some updates implied by moveResize, notably the
reconfigure, the setBackground on the window etcetc.
Instead of testing what'd be missing from a moveResize, we just force
the latter to apply even when seeming unrequired.

This has notable impact when switching fullscreen state for a window
with fullscreen dimensions.

BUG: 992
2016-07-30 11:22:24 +02:00
Thomas Lübking
ed75e883db clear selection on text input
Entering upcase chars would auto-select them
Seems I don't need upcase chars very often ;-)
2016-07-23 16:58:04 +02:00
Thomas Lübking
abd5c9e478 smart handling of NotifyUngrab crossing events
closing a keyboard driven popup had the sideeffect to return the focus
where the pointer is, regardless of whether that window had the focus
before (due to a NotifyUngrab crossing event), bug #597
This was resolved by simply ignoring NotifyUngrab mode crossings, but
that had the unfortunate sideeffects to break focus passing when the
mouse was actually moved (in a DnD operation, 730) or the focus shall be
passed on for strict mouse focus and a mouse triggered lower action (1012)

So instead we record the window that was last entered by a *real*
crossing and only ignore the NotifyUngrab event if this window didn't
change.

BUG: 1012
BUG: 730
CCBUG: 597
2016-07-03 09:29:07 +02:00
Thomas Lübking
ca452a5886 ignore font for empty title height calculation
and align calculation on init and reconfigure

As a result, if a menu has no label, the title height is determined
only by menu.titleHeight (and the border sizes), not by the unused font.
2016-07-01 20:14:04 +02:00
Thomas Lübking
ea306493f9 re-fix alt+tab'bing through tabbed windows
commit 98313bf broke (i'm terribly sorry) this because m_cycling_last stores
the first client in a tabgroup, thus cannot be abused for this purpose.
So we explicitly store a value and btw. do it before sending the focus,
ie. "in time" for sure instead of "for sure™"
2016-07-01 19:42:28 +02:00
Thomas Lübking
e85cf49035 fix tabbing of unfocusable clients
this affects all java clients, because java uses the retarded
WM_TAKE_FOCUS protocol, but also very important clients like xeyes ;-)

BUG: 1055
2016-07-01 19:42:22 +02:00
Thomas Lübking
2aba567ea6 do not leave stale oplock behind
deiconify'ing a client on a different workspace left an oplock by a
shortcut return, turning the client semi- to inaccessible

BUG: 1010
2016-07-01 19:42:14 +02:00
Thomas Lübking
9d34cdbfa9 avoid calling into XLib
Testing one bug, the function seems usually be called with the root
window as parameter, so we can save a pointless lookup for the root of
the root by testing against window before testing against window_root.

Elegantly, this will "fix" the bug where XGetGeometry of the second
heads root will either report the first heads root or some junk (xephyr
case?)

BUG: 1128
2016-07-01 19:41:59 +02:00
Thomas Lübking
9dccccb84d ensure to update the current client tab from menu
the menu focuses which tries to set the current tab, but fails because
the iconified client won't have the input focus (yet), so we pass it a
dedicated "set this client and do not try to set input because we're
going to do next anyway explicitly" call =)

BUG: 997
2016-07-01 19:41:16 +02:00
Thomas Lübking
0951134ced do not move unfocused windows to the desktop layer
While usually™ the window is just reset to its original layer, ensuring
to show the active window is certainly a good idea, but it's not
required to lower the fullscreen window to the desktop layer, the other
windows layer + an extra raise is entirely sufficient and it's rather
odd to see conky when activating a utility window to a video player ;-)

CCBUG: 894
2016-07-01 19:40:55 +02:00
Thomas Lübking
666e7b0337 add _NET_WM_NAME to FbWindow::setName
since fluxbox is a f**** WM it should be able to use f**** NETWM hints
in its toolkit ;-)

CCBUG: 702
(does not fix input)
2016-07-01 19:40:47 +02:00
Thomas Lübking
475e966f19 fix tab selection by mousepress
Tabs outside the titlebar are not selectable by mouseclicks (ie. the
feature does not work)
The patch clones the enterNotifyEvent code and ignores (for now) the
actual button (no idea whether it makes any sense to restrict it the
left button?)

BUG: 1103
2016-07-01 19:40:34 +02:00
Thomas Lübking
07d8fbfba8 merge remember focusnew into focusprotection
The FocusNewWindow key is still read, but not written and OVERRIDDEN in
case of conflict with the FocusProtection key
2016-06-26 16:35:26 +02:00
Thomas Lübking
1a61881ec3 Add FocusProtection features
The apps file gets a new key
FocusProtection
supporting a comma separated list.
* None : regular behavior
* Lock : If this window has the focus, no other may claim it
* Deny : This window is not allowed to focus itself

I addition there's preparation for a follow-up patch to incorporate and
substitute the present FocusNewWindow feature:
* Gain : Pass focus to new window
* Refuse : Do not pass focus to new window

rationale:
clients stealing the focus sucks badly and while there's an input driven
timeout, that only protects actual typing flow, but if eg. vlc proceeds on
the playlist, you'll suddenly control vlc instead of your browser
(ie. typing ctrl+w doesn't close the tab, but the playlist ...)
2016-06-26 16:35:16 +02:00
Thomas Lübking
69b0f0fa97 remove strut when property is withdrawn
CCBUG: 1133
2016-06-26 16:31:37 +02:00
Thomas Lübking
bfe4737427 fix tracking of MWM hints in case of removal 2016-06-26 16:31:22 +02:00
Thomas Lübking
dcdde4d32c replace FbRootWindow::depth with maxDepth
The depth member of FbWindow was abused to store the maximum depth
but that gets overridden with geometry changes of the root window
(screen layout changes) so we store and read the value explicitly while
::depth() maintains the actual depth of the root window

The result of this is that frames for ARGB windows were created with a
wrong depth and failed to reparent the client window.

BUG: 1102
BUG: 1058
2016-06-26 16:29:34 +02:00
Thomas Lübking
484c33bf25 prevent clients from positioning out of workspace
Still enough stupid ones around which ask for 0,0
(despite there's a panel ...) or restore a position
on a VGA screen which they stored while being on a 4k
screen.

Otoh, do not forcefully position the window just because
the topleft position is outside any head, this can still
be desired and isn't a problem.
Actually, the corner could be covered by the close button
and if *only* it is onscreen the window can hardly by used
or seen.
2016-06-26 16:21:02 +02:00
Thomas Lübking
6201286cdf keep cmd menus off struts when the mouse is in it
the mouse is likely the trigger, so the popup would cover the
trigger item.
The present behavior of the iconbar suggests such behavior is
desired.
2016-06-26 16:16:04 +02:00
Mathias Gumz
b9ed1c16de improve consistency
for a std::string::size_type, the right value to use is not "-1", but
std::string::npos.
2016-05-28 16:57:43 +02:00
Mathias Gumz
a9e17d4091 fix broken text selection for FbTk::TextBox
uninitialized variables cause all kind of problems.
2016-05-28 16:52:28 +02:00
Thomas Lübking
98313bfb91 harden focus cycling against client focussing
Clients which implement a client-side modality might cause
livelocks by reverting the focus to the transient (after the
WM tried to put it on the leader as the transient's modality
is unknown)

So while cycling we revert the focus whenever it moves somewhere
where we don't expect it.
When done, we also focus the window that should have the focus anyway
to allow the client to redistribute the focus (as we prevented it
during cycling)

Hall of Shame: Softmaker Freeoffice uses (only) client side modality.
2016-05-28 11:05:45 +02:00
Juan Gonzalez Lopez
5d90b7984c Fix menus over a single column wide
Fixes menus more than 1 column wide (such as the Placement menus for
the Toolbar/Slit/Tabs) which stopped working with commit 3e4570b.
2016-04-25 19:30:38 +02:00
Thomas Lübking
58b50fb786 Allow text selection
FbTk::TextBox now acts like any contemporary input field ;-)
2016-04-25 19:04:13 +02:00
Thomas Lübking
2e8766174e place transient centered on its parent
so far, transients are simply unplaced, resulting in a static
0,0 position.
2016-04-06 21:54:26 +02:00
Arkadiusz Bokowy
53de872163 Mixed relative and absolute values for apps
Allow setting relative value for x and y or width and height separately in
the apps configuration file. This makes these settings compatible with ones
available in the keys file.

Previous buggy behavior:
If someone has specified, e.g. "[Dimensions] {50% 100}" it was parsed as
"{50% 100%}" not as "{50% 100px}" which was inconsistent with the "keys"
configuration file.

From now on it is possible to write something like this:
[app]
  [Position] (RIGHT) {50% 0}
  [Dimensions] {300 100%}
[end]

Signed-off-by: Arkadiusz Bokowy <arkadiusz.bokowy@gmail.com>
2016-02-28 14:55:36 +01:00
Mathias Gumz
3c06e9e93f minor code cosmetics 2016-01-09 18:30:22 +01:00
foobar0815
6346368b58 send ConfigureNotify using root coordinates 2016-01-09 17:45:23 +01:00
Nephiel
1f1d43bdbf Add Resize Snap
Make windows snap to edges when resizing them, as well as when moving.
From http://darkshed.net/files/patches/fluxbox/fluxbox-resize-snap-try2.diff
2016-01-04 21:17:26 +01:00
Mathias Gumz
3e4570becc merge pull-request 14 2016-01-04 20:41:01 +01:00
Ken Moore
a1f647d09c Update MinOverlapPlacement.cc
Skip any windows which are not in the same layer as the window to be placed.
2015-07-29 12:26:15 -04:00
Ken Moore
5905c4623e Update ColSmartPlacement.cc
Skip any window that is not in the same layer as the window to be placed.
2015-07-29 12:22:22 -04:00
Ken Moore
17f8a936ce Update RowSmartPlacement.cc
Skip any window that does not exist in the same layer as the window to be placed.
2015-07-29 12:17:51 -04:00
Peter Ganzhorn
69d13337fe Fix hidden toolbar placement 2015-05-14 14:50:34 +02:00
Mathias Gumz
169d640610 Simplify code
* assume 'pattern' to always be lowercase
* rename some variables
2015-05-02 15:45:16 +02:00
Mathias Gumz
533c9a2aa5 Fix bug in detecting text in MenuSearch
A bug sneaked into my implementation of Boyer-Moore-Horspool. This lead
to not finding certain patterns. Given the text 'abcdde' and the pattern
'dd', the faulty implementation would not find 'dd':

1. 'ab' does not match, skip 2 (length of pattern)
2. 'cd' does not match, skip 2 (length of pattern) <- the bug.
3. 'de' does not match, end of string

The bug in step 2 is to not use 'd' to detect how far to skip but to
use 'c' (which is not in the skip-table) and thus 2 bytes are skipped).
2015-05-02 14:04:50 +02:00
Lajos Koszti
c8a1c67494 Make sure render new styles into full menu
Different styles makes the menu width different.
When the original menu width is bigger than the newly selected style's
width, the rendering produces pretty strange effects:
The old style's frame not cleared, so it was rendered and visible next
to the new style edge.

With this change, the menu width will be as wide as the widest menu
item.

Style switching still not perfect, because the height of a menu item is
from the "first" selected menu, also font color are not updated.
2015-05-01 22:16:03 +02:00
Peter Ganzhorn
e117f5acd6 Fix RIGHTCENTER placement of the toolbar. Instead of subtracting borderwidth (bw) from (frame.height))/2 they were multiplied causing wrong placement for this case. 2015-05-01 14:19:58 +02:00
Peter Ganzhorn
949e973dd2 Shape only toolbar corners not touching any edges of the screen. It just looks better this way. 2015-05-01 14:19:49 +02:00
Peter Ganzhorn
95b7c77409 Fix shaped toolbar being drawn incorrectly at TOPCENTER Fix round corners being drawn incorrectly on the TOP instead BOTTOM of the toolbar when toolbar placement is TOPCENTER. Also align the _values[] table a bit more nicely to make it easier to spot bugs like this. The bug was introduced in commit 67c31b49bd 'Refactor Toolbar.cc, less noise'. 2015-05-01 11:24:25 +02:00
Mathias Gumz
5b6fe35287 roll back 7e17056: m_index does not exist anymore
m_index was removed in 03ce82a.
2015-05-01 10:50:50 +02:00
Mario J. Rugiero
dce4721c84 TextBox::textStartPos can be const. 2015-05-01 10:46:21 +02:00
Mario J. Rugiero
6aff2f7c28 ButtonTheme::name can be const. 2015-05-01 10:46:21 +02:00
Mario J. Rugiero
9667d538eb Make Layer::getLayerNum() const. 2015-05-01 10:46:21 +02:00
Mario J. Rugiero
7e17056c35 Initialize m_index in MenuItem's constructors. 2015-05-01 10:46:21 +02:00
Mario J. Rugiero
2238c004aa Reduce the scope of the variable err in stringTokensBetween. 2015-05-01 10:46:21 +02:00
Mario J. Rugiero
2275e1e6e4 doSubmenu function in menutest.cc avoids copying labelstr by using a const reference. 2015-05-01 10:46:21 +02:00
Mario J. Rugiero
bf607341da addMatching and insertFromParent functions from FocusableList now avoid copying m_parent->clientList() and use a const reference instead. 2015-05-01 10:46:21 +02:00
Mario J. Rugiero
63f89cb433 Pass pre_command to CommandDialog as const reference to avoid unnecessary copying. 2015-05-01 10:46:20 +02:00
Casey Dahlin
79a358346a Don't assume ICONV_NULL = 0
We define the value ICONV_NULL = -1, but when we attempt to set the
s_iconv_convs array to all NULL values, we zero the array instead of setting
its entries to -1.

This patch properly initializes and wipes s_iconv_convs.
2015-04-11 08:25:59 +02:00
Arkadiusz Bokowy
e3300411eb Fix: typo during refactoring
Commit 63d9d69 introduced a bug, which has manifested itself by setting
window transparent state to the fully opaque (255).
2015-02-08 11:14:48 +01:00
Mathias Gumz
9f824b89fd Move internal code to internal side of FbTk::Transparent 2015-02-08 11:06:58 +01:00
Mathias Gumz
f84671ef8e Minor 2015-02-07 18:05:41 +01:00
Mathias Gumz
bd983fab55 Create buttons for titlebar with proper sizes
Instead of creating the titlebar buttons with a size of 10x10 pixels
and rely on resizing later on we now pick the correct dimensions
right on.

This fixes also bug #1125 ("Detaching a window from a tab-group renders
app-icon to 1/2"); the problem also occurred on restart.

I took the chance to refactor a little bit.
2015-02-07 17:59:37 +01:00
Mathias Gumz
c30b75091a Fix glitch of TabOptions menu 2015-02-07 11:46:00 +01:00
Mathias Gumz
9814549fb3 Show toggleitems in menu 2015-02-07 10:13:43 +01:00
Mathias Gumz
17bd806337 Cosmetic 2015-02-07 10:09:24 +01:00
Mathias Gumz
1bacaa7ecb Boyscouting 2015-02-07 09:41:38 +01:00
Mathias Gumz
046092d166 Fix cleaning exposed menu items 2015-02-07 09:38:22 +01:00
Mathias Gumz
8834435bd0 Avoid signed/unsigned woes; minor cleanup 2015-02-07 09:30:28 +01:00
Mathias Gumz
a649a45ed8 Add uncommited #include "MenuSearch.hh"
Note to myself: less gitting at late hours.
2015-02-06 07:31:04 +01:00
Mathias Gumz
92940571f3 Cleanup; Remove unused function 2015-02-05 21:35:02 +01:00
Mathias Gumz
0da4be2a01 Feature: different MenuSearch modes
Fluxbox now supports three MenuSearch modes:

* NoWhere - essentially "disabling" the menu search.
* Somewhere - the search string matches somewhere.
* ItemStart - the search string matches at the start of a menu item.

The default value is "ItemStart", just in the good old times. As long as
this feature is not configurable via the menu it would irritate users
with distinct muscle memory who type without thinking OR checking the
visual feedback: they would trigger items they did not intent to trigger
after years of the old behavior.

Once this feature get's an entry in the config menu the default value
might change.
2015-02-05 21:30:44 +01:00
Mathias Gumz
e79228cc08 Fix problem with too small WinButtons
Under some circumstances a WinButton might be tiny (1x1 pixel). Substracting
values > 1 yields either 0 or something reaaaaly big (UINT_MAX). This will
make fluxbox either crash or make it act weird. We don't want this.
2015-02-04 21:06:51 +01:00
Mathias Gumz
53b3120b32 Move nls globals into #ifdef NLS 2015-02-04 21:06:32 +01:00
Mathias Gumz
461d4b7dbd Fix crash: click the Remember-menu works again
This commit fixes a subtle regression introduced by myself in
f64727ca: WinClient wc = FbMenu::window()->winclient() creates a
copy and this copy gets cleaned up at the end of the scope. What
I really wanted was a reference.
2015-02-01 19:41:07 +01:00
Mathias Gumz
c207226a32 Fix regression: use proper texture for the grips 2015-02-01 09:40:49 +01:00
Mathias Gumz
e1359adfd0 Cosmetic 2015-02-01 08:07:26 +01:00
Mathias Gumz
fff0abad76 Improve I18n support
Among the first steps to produce better i18n support is to test the created
translations adhoc without running "make install". To achieve this, fluxbox
now honors several environment variables:

- NLSPATH: fluxbox won't create the absolute path to the catalog and thus
  catopen() is free to use NLSPATH as described in the manpage. Example
  given: "/tmp/%N" will pick "/tmp/fluxbox.cat". %N refers to FLUXBOX_CATFILE.

- FLUXBOX_CATFILE: By setting FLUXBOX_CATFILE the users can make fluxbox to
  use a different name for the catalog file.  Default: "fluxbox.cat"

- FLUXBOX_CATDIR: Per default fluxbox tries to find FLUXBOX_CATFILE at several
  places. Setting this environment variable allows to point fluxbox to a
  different search path for the catalog files.

Then, fluxbox tries catopen() first without changing the deduced catalog file
name. After that it applies some heuristics to get a good catalog file name.
2015-01-31 21:37:44 +01:00