Age | Commit message (Collapse) | Author | Files | Lines |
|
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.
|
|
|
|
|
|
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.
|
|
Move private stuff into FbTk/I18n.cc.
|
|
When the windowmenu file is empty in ~/.fluxbox/init the code falls
back to the default. In ab2eef4 I forgot to set the rc_path which
caused this bug to happen.
|
|
|
|
|
|
Again, gcc-4.2.1 of OpenBSD-5.6 pointed out the use of strcat(). I took the
chance to explain the reasons for the code a little bit.
|
|
gcc-4.2.1 on OpenBSD-5.6 hinted that strcpy() is not the safest function on
earth. While seeing the code I wondered why it we first create copies
of the names at all (let alone using memset() and then strcpy() after it).
|
|
|
|
The lookup for the skip value needs to be based upon the lowercase version of
the current byte.
|
|
In f64727ca I removed one 'else' too much. As a result all [maximized] lines
were mapped to MAX_NONE. Fixed.
The rest of the commit is just some cosmetic to reduce indentation and shorten
function names, easier to read.
|
|
This commit implements a tweak to the typeahead feature already existent in
fluxbox: If the user opens up a menu and starts typing, fluxbox tries to
detect matching menu items and makes them available for quick selection.
The typed pattern is now search also in the middle of the text.
I opted to strip down the code quite a bit and remove complexity by throwing
out FbTk::TypeAhead and FbTk::SearchResult because I do not see the need for a
general solution when the only use case for such a feature is in fluxbox'
menus. FbTk::ITypeAheadable shrunk down to 2 functions; the whole file might
be combined with the code that implements FbTk::Menu::TypeSearch.
FbTk::Menu::setIndex() and related code is also gone: the position of each
menu item is defined by it's position in the items container. This reduces the
mount of book keeping fluxbox has to do. Fewer moving parts is a good thing.
It's possible that users start to complaint because they expect their
typed pattern to match only at the beginning of the text OR that some
demand other tweaks. We will see.
This commit also fixes a regression introduced by 8387742c. The bug made
the menu vanish.
|
|
|
|
'width' might imply something 'aligned horizontally'. The first parameter
of maxTextLength() is given in pixels. To avoid confusion, the name of
the parameter is changed.
The comment before the binary search reflects better why and what we
need to do.
|
|
A vertically rotated text should be checked against the height of the
button, not the width of it.
Fixes #1119 ("Toolbar cannot display full text of workspace/clock/window
title.")
|
|
|
|
FbWinFrame is now simpler to read due to less overall noise.
|
|
|
|
Sometimes fluxbox is used as a component of a desktop environment (
e.g., the "Lumina Desktop"). It's easier and more stable for this kind
of "users" to disable the toolbar or the slit alltogether. Why not
configure these features out? Because then they would need 2 installations
of fluxbox: One without the slit and the toolbar (and perhaps other
components) and one with them.
This implements feature request #314, at least partially.
This commit also looks bigger than it actually is: I refactored and cleaned
up classes Fluxbox and BScreen.
|
|
|
|
There was a subtle flaw in the way fluxbox detects to which BScreen a
given Window belongs: We have to compare the RootWindow of the given
Window against the RootWindow of each BScreen.
That underlying flaw made _NET_REQUEST_FRAME_EXTENTS fail: the code path
needs a valid BScreen for the given window, otherwise we return early.
Closes #1121.
|
|
std::remove_if() removes an item from a container and returns a
past-the-end iterator ... which equals m_icon_list.end(). As a result
the check
if (erase_it != m_icon_list.end()) {
iconList().erase(erase_it);
iconListSig().emit(*this);
}
will never succeed and thus the iconListSig() will never be emitted.
|
|
|
|
|
|
There was a problem deep within how the menus were connected and when and
what gets deleted. It was clearly related to a menu which was kind of
global. In order to better understand the code flow I eliminated the
ExtraMenu code: it was used only to get the Remember-Menu into the
Window-Menu. Instead of having a singleton of the Remember-Menu and fight
against the shaky interconnections we just create a new one on demand
and delete when the menu gets deleted. Looks like this fixes the problem.
The menu code needs more love anyway.
Closes #1118
|
|
Also: try to avoid unsigned/signed problems in drawing code.
|
|
|
|
If allocation of I2 does not succeed, we need to free I1.
Closes #1120
|
|
This reverts 58e09b719077605efadac9b712acb8f5e752f732 after having regressions
and bug reports in regards to autorepeated key events are not working anymore.
So, the problem with the lost keypress after the workspace change is still
open but at least the behavior for other folks is as it was. Since 58e09b7190
seems to be corelated to "auto repeat" keys it might indicate the problem
which 58e09b7190 "fixed". We will see.
Fixes #1115.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Note: I expect only modern compilers will hit the source of fluxbox. It
seems futile to guard stdlib headers while demanding <algorithm> etc. This
should trim down the noise in the source quite a bit.
|
|
Coverity pointed out that 'size' might be 0 (even if the 'find()' would
detect this). This commit fixes this and avoids entering 'find()' at
all.
|
|
Uncovered by coverity-scan.
|
|
Coverity-scan points to the leaking ClientPattern. The rest is just
cosmetics.
|
|
Part of this massive looking but simple rather simple change is a the way we
check for active Xinerama: XineramaIsActive() was used before. The docs for
XineramaQueryScreens() state that
XineramaQueryScreens() returns NULL and sets number to
0 if Xinerama is not active.
Sold.
|
|
Another patch to trim down the code that needs to be part of BScreen
|
|
Every time either the Slit menu or the Toolbar menu were added to the
root menu, the whole root menu was (re)created from scratch. Now we
create and remove only the menus needed.
Side effect: the position of these menus is now at the end of the root
menu and not somewhere in between. If users complaint, I' ll think about
it.
|
|
Again, it's easier to read the code when the whole menu-generation is out of
the way.
|
|
This commit is a preparation step for some menu cleanup ahead. To make it
easier to understand which types of MenuItems are added where and when, I
converted the overloaded FbTk::Menu::insert() functions into explicit ones
(Menu::insertSubmenu(), Menu::insertItem(), etc. ). This makes it possible
to just grep for 'insertSubmenu()'.
Side effect this commit: it trims down the very verbose creation of menu items
in regards to how the labels are created.
Minor: FbTk::Menu::shown and FbTk::Menu::s_focused are moved out of the class.
|
|
Reorder some includes; remove unused includes
|
|
|
|
The font might have an impact to the result of width() and height(). In order
to render the new pixmap correctly fluxbox now first sets the font and the
width of the border and after that it recreates the pixmap.
|
|
|