aboutsummaryrefslogtreecommitdiff
path: root/src/FbTk
AgeCommit message (Collapse)AuthorFilesLines
2016-09-11Improve utf-8 supportThomas Lübking1-44/+41
Operate on inverse iscntrl check which allows us to avoid wide character conversions.
2016-09-11support ctrl+a for selecting allThomas Lübking1-0/+5
2016-09-11Support editing utf-8 text in TextBoxThomas Lübking5-23/+113
aka "Flüxbøx" βµγ, pardon, BUG: 720
2016-08-28fix compiler warning about std::auto_ptrMathias Gumz7-10/+9
fluxbox uses std::unique_ptr<> where it previously used std::auto_ptr<>. C++0X was approved in 2011. among other things, it deprecates std::auto_ptr. 5 years is long enough for compilers to catch up the standard.
2016-08-27Grab keyboard synchronouosly to allow replaysThomas Lübking1-1/+1
This allows to catch if a grabbed key (combo) is actually w/o effect (because eg. the OnDesktop condition does not match) and then replay the event ungrabbed to pass it to the focused client. Just like mouse grabbing, this BEARS THE POTENTIAL TO LOCK INPUT, thus needs AS MUCH TESTING AS POSSIBLE BUG: 1137
2016-08-27Replay toolbar button eventsThomas Lübking1-1/+1
NOTICE!!!! THIS IS HIGHLY EXPERIMENTAL! The patch alters the button grab mode to GrabSync in order to ReplayPointer the event. THIS CAN FREEZE ANY INPUT TO FLUXBOX!!! The toolbar (and other things?) grab buttons in order to handle MouseN events for the entire bar, INCLUDING all child windows. This causes two problems: 1. The bar handles events which are not meant for fluxbox at all (but the systray icons) BUG: 940 2. The bar will intercept (and suck) *every* press, even if only doubleclicks are desired BUG: 949 The problem with this patch is that an oversight here has the potential to completely freeze input event processing in fluxbox (ie. the process needs to be killed from outside), SO IT NEEDS TESTING! As much as possible.
2016-08-06Adjust RELATIVE ::repositionItems (more relative)Thomas Lübking2-8/+29
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-06expose a preferredWidth of *Button'sThomas Lübking3-0/+7
2016-07-23clear selection on text inputThomas Lübking1-0/+1
Entering upcase chars would auto-select them Seems I don't need upcase chars very often ;-)
2016-07-03smart handling of NotifyUngrab crossing eventsThomas Lübking1-3/+1
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-01ignore font for empty title height calculationThomas Lübking3-22/+23
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-01add _NET_WM_NAME to FbWindow::setNameThomas Lübking1-0/+8
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-05-28improve consistencyMathias Gumz2-9/+10
for a std::string::size_type, the right value to use is not "-1", but std::string::npos.
2016-05-28fix broken text selection for FbTk::TextBoxMathias Gumz1-1/+2
uninitialized variables cause all kind of problems.
2016-04-25Fix menus over a single column wideJuan Gonzalez Lopez1-3/+4
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-25Allow text selectionThomas Lübking2-62/+151
FbTk::TextBox now acts like any contemporary input field ;-)
2016-02-28Mixed relative and absolute values for appsArkadiusz Bokowy1-2/+33
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-01-04merge pull-request 14Mathias Gumz1-0/+2
2015-05-02Simplify codeMathias Gumz2-20/+22
* assume 'pattern' to always be lowercase * rename some variables
2015-05-02Fix bug in detecting text in MenuSearchMathias Gumz1-1/+1
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-01Make sure render new styles into full menuLajos Koszti1-0/+2
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-01roll back 7e17056: m_index does not exist anymoreMathias Gumz1-6/+1
m_index was removed in 03ce82a.
2015-05-01TextBox::textStartPos can be const.Mario J. Rugiero1-1/+1
2015-05-01Make Layer::getLayerNum() const.Mario J. Rugiero1-1/+1
2015-05-01Initialize m_index in MenuItem's constructors.Mario J. Rugiero1-1/+6
2015-05-01Reduce the scope of the variable err in stringTokensBetween.Mario J. Rugiero1-2/+2
2015-04-11Don't assume ICONV_NULL = 0Casey Dahlin1-5/+9
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-02-08Move internal code to internal side of FbTk::TransparentMathias Gumz2-20/+23
2015-02-07MinorMathias Gumz1-2/+2
2015-02-07Show toggleitems in menuMathias Gumz1-5/+7
2015-02-07CosmeticMathias Gumz1-27/+36
2015-02-07BoyscoutingMathias Gumz2-4/+0
2015-02-07Fix cleaning exposed menu itemsMathias Gumz1-30/+24
2015-02-07Avoid signed/unsigned woes; minor cleanupMathias Gumz1-80/+64
2015-02-06Add uncommited #include "MenuSearch.hh"Mathias Gumz1-0/+1
Note to myself: less gitting at late hours.
2015-02-05Cleanup; Remove unused functionMathias Gumz2-7/+1
2015-02-05Feature: different MenuSearch modesMathias Gumz6-146/+292
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-04Move nls globals into #ifdef NLSMathias Gumz1-3/+8
2015-01-31Improve I18n supportMathias Gumz1-44/+121
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-31Clean up FbTk::I18n APIMathias Gumz2-118/+102
Move private stuff into FbTk/I18n.cc.
2015-01-29Use strncpy() instead of strcpy()Mathias Gumz1-1/+1
2015-01-29Make fluxbox strcat() freeMathias Gumz1-39/+41
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.
2015-01-28Compiler boyscouting: init orderMathias Gumz1-4/+4
2015-01-28Fix correctness of string searchMathias Gumz1-1/+1
The lookup for the skip value needs to be based upon the lowercase version of the current byte.
2015-01-28Feature: typeahead in menu matches text anywhereMathias Gumz9-550/+381
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.
2015-01-24Improve code documentationMathias Gumz2-16/+24
'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.
2015-01-24Fix text rendering in rotated TextButtonsMathias Gumz1-5/+12
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.")
2015-01-22Add -no-slit and -no-toolbar flagsMathias Gumz1-2/+1
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.
2015-01-22Remove 'always true' conditionMathias Gumz1-1/+1
2015-01-22Fix broken _NET_REQUEST_FRAME_EXTENTS supportMathias Gumz2-13/+14
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.