aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-06-18Speedup overlong text detectionMathias Gumz3-26/+70
Detecting very long window titles is done via FbTk::TextUtils::doAlignment(). Instead of removing one char from the title at a time to see if it fits into a given 'max_width', we now use a binary-search like approach to get faster to the right value. This massively improves the speed for windows with (arbitrary) long window titles (see bug #1090, javascript document.title = new Array(4999).join("."); leads to massive waiting for fluxbox to detect that this window has a very long title). In addition to that Xft returns 'wrapped' shorts ('integer overflows') for long texts: XGlpyhInfo.xOff is declared as signed short, it's able to hold ~32k pixels. A monospace font with font-size 10 produces an integer overflow after 3276 chars / glyphs, thus rendering the check if (text_width < max_width) { /* ... */ } pointless and leading rendering the whole title. By calculating some kind of upper limit for a pseudo-wide glyph ("WW") and strictly cutting off the input string at that limit prevents this issue.
2013-05-26build-sys: move to non-recursive buildSami Kerola56-653/+1013
This rather large change will attempts to make 'make' to work better. See excellent paper 'Recursive Make Considered Harmful' by Peter Miller for further explanation why several make files is worse than one for whole project. Note. The tests are build with 'make check' rather than defining TEST. Reference: http://miller.emu.id.au/pmiller/books/rmch/ Reference: http://karelzak.blogspot.co.uk/2013/02/non-recursive-automake.html
2013-05-26build-sys: use iconv library detections from gettextSami Kerola3-65/+696
This patch took copy of config.rpath from gettext 0.18.2 to build-aux/ directory. Software projects usually does not need to do that, because the file is copied by gettext autopoint in autogen.sh or bootstrap. In Fluxbox case calling autopoint seems wrong, as it would generate po/ directory with necessary make automation, adn 'msgid' & 'msgstr' files, but that is not how the translations are done in this project.
2013-05-26build-sys: unify configure.ac syntaxSami Kerola1-230/+318
2013-05-26build-sys: add test programs to .gitinore fileSami Kerola1-0/+8
2013-05-26build-sys: use pkg-config to locate dependenciesSami Kerola10-447/+175
This commit alters XRANDR (X Resize And Rotate) extension dependency, which is expected to have at least version 1.4. Earlier old versions of xrandr were supported, at least to some extent.
2013-05-26build-sys: move autotools files to subdirectoriesSami Kerola5-7/+6
2013-05-26build-sys: use AC_USE_SYSTEM_EXTENSIONSSami Kerola20-91/+1
The earlier _GNU_SOURCE definitions possibly did not take effect everywhere where it was intended.
2013-05-26build-sys: include config.h to all files using automakeSami Kerola41-149/+7
Do not try to be too smart which compilations need config.h, as most of them will simply because of the config.h has information about system capabilities.
2013-05-26docs: update DoxyfileSami Kerola1-491/+1282
Just a simple 'doxygen -u' version update.
2013-05-26build-sys: remove unnecessary filesSami Kerola3-5/+0
2013-05-26build-sys: use automake subdir-objectSami Kerola1-1/+1
2013-05-24Removing a blank line in nls/it_IT/Translation.m that breaks the -help output.skizzhg1-1/+0
2013-05-23more compact codeMathias Gumz1-19/+12
2013-05-23Use shared code, minor code simplificationMathias Gumz2-14/+19
2013-05-23minorMathias Gumz1-1/+1
2013-05-23fix initial window placement to allow proper head detection and window ↵Peter Hercek1-14/+21
placement based on apps file * a reasonable initial placement is important for later movements to different heads and correct head detection (required by apps file) * it did not work well in case when (0,0) was not near any head
2013-05-23fix head detection for adjacent heads of too different sizes and window ↵Peter Hercek1-11/+14
placement based on apps file * if you have e.g a 1920x1200 monitor and a small 800x600 monitor to the right of the bigger one and a small window at the right side of the big monitor (but still the whole window area at the big monitor) then the original head detection would claim the window is on the small monitor because (800/2+windowWidth/2 < 1920/2+windowWidth/2) is true for small windows; but that is obviously wrong, the window is entirely on the big monitor * these incorrect head detections did lead to incorrect window placements as they were required in the apps file
2013-05-16Fix regression in rendering the Window-Motion-OutlineMathias Gumz1-4/+6
Commit 79fe2fca1de5140f538e68f6981b27cf7f917e7a checks for pending motion events and drops out of the FluxboxWindow::motionNotifyEvent() function early if so. When the user does not use the opaque window movement method an outline will be drawn to the screen. That outline was not cleaned correctly with commit 79..
2013-02-27minor code simplificationsMathias Gumz2-18/+7
2013-02-27Workspace switching on the toolbar via the mouse buttonsSoeren Beye3-6/+12
2013-02-14Trigger ClockTool every second, independent of the format stringMathias Gumz2-63/+44
It's hard to hit right moment to update the clock correctly: Either we are a bit too early and the 'old time' is the same as the 'new time' and the clock looks 'a bit off' or we are too late and the clock is 'a bit off'. This is especially the case for format strings which do not show the second and thus are updated only at the full minute (see bug #1082): if fluxbox does not update the clock 'now' it would do it one minute later and thus the clock might show the wrong time for roughly 1 minute. Instead of coming up with something immensely clever we just trigger the ClockTool every second. If no update of the shown time is needed fluxbox won't do anything. Some minor code reordering as byproduct.
2013-02-14Updates copyright date information in some binariesMathias Gumz2-2/+2
2013-02-13mpfMathias Gumz1-1/+1
2013-02-13Updated Changelog, NEWS, man-pages for 1.3.5Release-1_3_5Mathias Gumz22-49/+44
2013-02-13Fix missing LogicCommandsMathias Gumz1-0/+6
By removing FbTk/LogicCommands.o from LDADD in src/Makefile.am (commit 06655f6) I prevented the linker to pick up FbTk/LogicCommands.o and thus rendered all logic-commands useless. Using a small helper object to pull in the dependency fixes this problem without relying on manually tweaking the build system.
2013-02-13Initialize FbTk::Timer.m_timeout correctlyMathias Gumz1-2/+4
2013-02-10Updated Changelog, NEWS, man-pages for 1.3.4Release-1_3_4Mathias Gumz23-120/+190
2013-02-10Remove unused variables, cosmeticsMathias Gumz1-16/+16
2013-02-10FbTk::FbTime::mono() yields microseconds since fluxbox startedMathias Gumz1-3/+2
2013-02-10CleanupMathias Gumz2-31/+31
2013-02-10More subtle brightening of texturesMathias Gumz1-5/+5
2013-02-06Feature #3602124: 'LHalf' and 'RHalf' buttons to the titlebarMathias Gumz6-19/+85
First draft of feature request of #3602124: Having 2 buttons in the titlebar which allow quick positioning of a Window into the left or right half of the current monitor.
2013-02-06Fix bug in renderEllipticGradient()Mathias Gumz1-17/+20
For odd 'widths' and 'heigths' the texture would not be filled completely: Given a 'width' of 5 we would render only 4 instances of x (-2, 1, 0, 1) instead of the needed 5. This results in a texture which looks a bit cut off to the bottom right side.
2013-02-06Minor cosmeticsMathias Gumz1-38/+41
2013-02-06Fix integer overflowMathias Gumz1-1/+1
I forgot this piece in 779618e45d4571bb6a4866aa2e398780f4b4da5d.
2013-02-06Reduces memory footprintMathias Gumz1-7/+5
The buffer for some gradients does not have to be width * height big when two lines are sufficient.
2013-02-06Branchless code for interlacing a textureMathias Gumz1-25/+15
2013-02-06Fix integer overflow for bigger texturesMathias Gumz1-2/+6
2013-02-01Fix regression regarding timers with equal end-timeMathias Gumz1-2/+6
std::set<Key, Comp> stores Key only if Comp(Key) yields a unique result (My mistake: I was under the impression Comp is only used for the ordering). This prevents FbTk::Timers with equal end-times from actually being started. Escpecially in situation with multiple ClockTools this lead to stopped timers (see bug #3600694). Kudos to Adam Majer for enlightening discussions.
2013-01-31Adds 'ClientPatternTest' commandMathias Gumz7-53/+177
ClientPatterns might be tricky to get right. Instead of fiddling around in either the keys-file or the apps-file and restarting fluxbox to see if the changes had any effect / matched the right windows, 'ClientPatternTest' and the fluxbox-remote should make this easier: $> fluxbox-remote "clientpatterntest (title=.*vim*)" This causes fluxbox to store the list of matched windows in the _FLUXBOX_ACTION_RESULT property onto the rootwindow. This property might then be read by: $> xprop -root _FLUXBOX_ACTION_RESULT or $> fluxbox-remote result The format of the list is: win_id \t title_of_window \n win_id is '-1' when fluxbox wasn't able to parse the given ClientPattern. win_id is '0' when there are no windows matching the given ClientPattern.
2013-01-26Calculates timeouts of ClockTool based upon System ClockMathias Gumz5-26/+36
Users expect time switches to happen upon system clock times. Calculating the timeout for the next refresh of the shown time via the monotonic clock is wrong: The monotonic clock yields values based upon some arbitrary point in time which might be off a little bit to the system clock, a 'full' minute of the monotonic clock might be in the midst of a system clock minute.
2013-01-23Improve calculation of brighter colorsMathias Gumz4-22/+209
The old code did not brighten up "pure" colors like "red", "green" and "blue" at all. The new code use a different precomputed LUT which is based upon simplified vector math, see the comments in FbTk/ColorLUT.cc
2013-01-20Adds 'he_IL' translations (provided by Genghis Khan)Mathias Gumz5-2/+333
2013-01-17Fix bug: actually invert a given TextureMathias Gumz1-1/+1
Stupid typo.
2013-01-17build-sys: clean up .gitignore fileSami Kerola2-62/+41
2013-01-15Simplifies and fix bugs in FbTk::TimerMathias Gumz2-41/+36
* Calling Timer::setTimeout() from within Timer::start() might lead to ugly behavior (as experienced in bugs #3590078, #3600143, etc; see commit 4d307dcd10af9d817ff5c05fc40ae7487564cb31, fixes the problem partially). * Stop a timer first, then call the handler (via Timer::fireTimeout()). A given handler might call Timer::start() again, which (re)adds the Timer to the control list .. the following Timer::stop() would remove it again. * Use 'm_start' as indicator if timer is running. * Move the (now quite short) code of ::addTimer / ::removeTimer into the Timer::start() and Timer::stop() functions.
2013-01-13Ensure textures have the correct size bevor applying 'bevel'Mathias Gumz1-7/+8
2013-01-13Optimize inner loop of pixel transfer in TrueColorMathias Gumz1-65/+61
Testing bits-per-pixel in the inner loop is suboptimal, especially since that value does not change. A little helper macro helps to keep the code readable, also improves the situation for StaticGray and PseudoColor.
2013-01-13Use the same lookup-tables for solid and gradient texturesMathias Gumz5-164/+237