Commit graph

4243 commits

Author SHA1 Message Date
Mathias Gumz
5f7acf3fb6 Optimize inner loop of pixel transfer in TrueColor
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-13 12:37:26 +01:00
Mathias Gumz
eb725c5c2d Use the same lookup-tables for solid and gradient textures 2013-01-13 12:34:30 +01:00
Mathias Gumz
8143b86fec improved code documentation 2013-01-13 12:25:00 +01:00
Mathias Gumz
13b9ee09ee Minor optimization of handling the timers 2013-01-13 12:23:06 +01:00
Mathias Gumz
4d307dcd10 Fix bug: handle the list of Timers not in-place
With commit 541c8c4 we switched from an (manually) ordered list to a
std::set<> to handle the active timers. The code which checks for overdue
timers now traverses and modifies the std::set<> in place. This might
lead to an infinite loop. Examples of such bad behavior are "flickering of
the tooltip" (bug #3590078) or crashes (bug #3600143) or just insanely high
cpu load when autoraising windows or submenus.

We now make a copy of the std::set<> traverse this instead of the original.
2013-01-12 09:24:11 +01:00
Mathias Gumz
06655f6d7f Optional removal of SystemTray tool
Added the option to remove the SystemTray tool completely from
fluxbox.
2013-01-10 12:11:24 +01:00
Aymeric Vincent
79fe2fca1d Reduced lagging begind of windows on slower displays
In certain situations a speedy mouse might generate more move-events
than fluxbox can handle: The event queue will fill up faster than the
repositioning of the window is finished. The user will experience a
window which lags behind the mouse cursor, aka the window-dance.

We now check the next event in the queue and postpone the move a little
bit so the queue does not fill up that fast.
2013-01-10 08:16:01 +01:00
Sami Kerola
f12e149baf automake: use AM_CPPFLAGS rather than INCLUDES
The INCLUDES macro deprecated in favour of AM_CPPFLAGS.

References: http://www.gnu.org/software/automake/manual/html_node/Program-Variables.html
2013-01-03 08:17:27 +01:00
Sami Kerola
b825874d2e do not try to reach $(top_srcdir)/.git directory contents when building a release tar ball 2013-01-02 10:08:11 +01:00
Mathias Gumz
f587cc9e7e Compile fix: forgotten parentheses around value 2013-01-02 09:57:32 +01:00
Sami Kerola
1f89a19cfc replace XKeycodeToKeysym() with XkbKeycodeToKeysym()
The XKeycodeToKeysym() is deprecated.

References: http://comments.gmane.org/gmane.comp.misc.suckless/9403
2012-12-30 20:31:25 +01:00
Vladimir A. Pavlov
5efef22cba Fix double text rendering if using parentRelative 2012-12-30 12:27:55 +01:00
Vladimir A. Pavlov
edcb6d57ce src/WinButton.{cc,hh}: cosmetic 2012-12-30 12:27:52 +01:00
Vladimir A. Pavlov
c8d0945a8f Make use of window.stuck.pressed.pixmap 2012-12-30 12:27:47 +01:00
Vladimir A. Pavlov
36489e4a17 Set WM_WINDOW_ROLE for fluxbox windows 2012-12-30 12:27:43 +01:00
Mathias Gumz
95f8f33c90 Minor cleaning of 'class Fluxbox' 2012-12-12 10:19:09 +01:00
Mathias Gumz
4191cbf2d2 Fix build regression: enable XRANDR support by default
The changes made in b178bed60b used the wrong
variable to set the default state of '--enable-randr' in configure.in, that is fixed now. I
also removed '--enable-randr12': If support for the Xrandr-extension is
available at compile time we set HAVE_RANDR; if there is also support for
Xrandr-1.2 (or higher), we also set HAVE_RANDR1_2 automatically.

Other changes:

* cleaned out public interface of 'class Fluxbox'
* added 'RANDR' to output of 'fluxbox -info'
2012-12-12 10:18:20 +01:00
Mathias Gumz
d8cd6a928b Fixed bug: use expanded style/theme filename
'filename' might contain a '~' which has to be expanded to work for
regular system calls. We expanded 'filename' already but then did not use
it. Fixes bug #3576586.
2012-12-11 19:37:59 +01:00
Mathias Gumz
b178bed60b Simplified 'configure' / build system
* reduced duplicated auto-code
* renamed '--enable-newwmspec' to '--enable-ewmh'
* don't compile 'Slit'-code when '--disable-slit'
* use AS_IF() in configure.in
* use AS_HELP_STRING() instead of obsolete AC_HELP_STRING in configure.in
* removed redundant calls to 'imlib2-config' to fill in $IMLIB2_CFLAGS
  and $IMLIB2_LIBS, AC_PATH_GENERIC() does that out of the box already
2012-12-05 16:00:55 +01:00
Hendrik Iben
24541caf69 Fixed lost focus glitch on multihead-ws-warping 2012-11-25 08:29:41 +01:00
Hendrik Iben
e65a966d80 Added option for focus revert to stay on current head 2012-11-20 08:04:50 +01:00
Mathias Gumz
b4534e0f28 Rewrite of FbTk::TextureRender
* much more readable and easier to read code
* smaller code
* reduced binary size due to removed big lookup-table for square root
* simple 'optimizations (lookup tables, packing of data), nothing too fancy
2012-11-08 11:02:28 +01:00
Julien Viard de Galbert
5c5ad62846 Adds the OnTab keyword for the keys file
Adding the following lines to the keys file restore the old behaviour to
use Mouse2 on tabs to start tabbing, and keep OnTitlebar Mouse2 to lower
the window.

OnTab Mouse2 :StartTabbing
OnTab Move1 :StartMoving

Note: Internal tabs are triggering both OnTab and OnTitlebar events.
2012-11-07 09:41:49 +01:00
Mathias Gumz
e8f2e964c6 minor cosmetic 2012-10-04 09:56:15 +02:00
Michael Abbott
391712b980 Add support for nearest corner or edge resizing 2012-10-04 09:36:23 +02:00
Mathias Gumz
7b6ab828c7 Improved vertical alignment of text in FbTk::TextButton
The old formula for vertical align text inside FbTk::TextButton ('height/2 +
font_ascent/2 - 1') produced not always good looking results, escpecially
when different fonts are involved (eg, ClockTool and WorkspaceName have
different fonts and font-sizes).

'(height - font_ascent) / 2 - 1' produces better results.

Additional changes:

* added ASCII-Art to document the involved entities when calculating the
  baseline
* rewritten tests/testFont.cc to accept multiples texts and multiple
  fonts
* removed some internal parts of FbTk::Font from the public interface
2012-10-03 10:27:16 +02:00
Mathias Gumz
032a23d1e7 removed duplicate function signature for FbTk::StringUtil::extractNumber() 2012-09-14 08:53:38 +02:00
Mathias Gumz
e512c1becd minor cosmetic 2012-09-14 08:52:13 +02:00
Mathias Gumz
2f279e96b1 Fix regression: switch back to microseconds for DelayCmd 2012-09-14 08:51:42 +02:00
Mathias Gumz
59d097bcea Fix bug: (re)setting timeouts on a running FbTk::Timer might lead to broken timer list
Setting a new timeout on a running FbTk::Timer must remove it from the timerlist,
otherwise the list is not ordered correctly anymore. So, we stop the running
FbTk::Timer, set the new timeout and restart it.
2012-09-14 08:48:37 +02:00
Mathias Gumz
541c8c407b changed timing functions to use a monotonic increasing clock
gettimeofday() is subject to be changed on daylight-saving or to ntp-related
(think leap-seconds). even worse, it is subject to be changed BACK in time. this
is hard to fix correctly (see commit 45726d3016 and bug #3560509). it is
irrelevant for timers to know the nano-seconds since the epoch anyways.
2012-08-28 10:51:55 +02:00
Peter Hercek
60a53113e0 fix sanity check for transient and explicitly placed windows
When a screen has more heads and some part of the screen is not on any
head and some window is placed into this invisible area then the window
is invisible which sucks. This patch repositions such windows so that
they are visible.
Example:
* head 1 is at (0,120) (size 640x480)
* head 2 is at (480,0) (size 800x600)
* whole screen virtual size is 1440x600
* that means rectangle from (0,0) to (640,120) is not visible on any head
  and any windows placed there would not be visible; for example wireshark
  likes to place dialog boxes at (0,0)
2012-08-22 18:49:09 +02:00
Vladimir A. Pavlov
71f75c70ae Add menu.hilite.font and menu.hilite.justify style resources 2012-08-03 11:37:34 +02:00
Vladimir A. Pavlov
9d25ea54a1 FbTk/ThemeItems.cc: move loading additional font resources to load()
The same logic had been already implemented for texture resources.
2012-08-03 11:37:17 +02:00
Vladimir A. Pavlov
8c50e81e44 FbTk/ThemeItems.cc: don't use style resources in ThemeItem<Font>::setDefaultValue() 2012-08-03 11:37:07 +02:00
Mark Tiefenbruck
2944cd0014 make the menu bit of decoration masks control whether or not menu button is shown on window (it did nothing before) 2012-07-08 17:56:26 -07:00
Mark Tiefenbruck
9eecd58bf3 make alt-tab skip modal windows 2012-07-06 19:30:39 -07:00
Mark Tiefenbruck
610a15ac47 add fullscreen, maximizedhorizontal, and maximizedvertical tests to ClientPattern 2012-07-01 21:22:01 -07:00
Paul Tagliamonte
940fbca3fe removed 'always-true' expression 2012-04-10 09:28:52 +02:00
Paul Tagliamonte
e6a01dcabb use the 'z' modifier for printing 'size_t' like variables 2012-04-10 09:27:44 +02:00
Mathias Gumz
56af5a1635 Bugfix: Don't draw the interlace lines 1px too far 2012-04-10 09:13:04 +02:00
Lajos Koszti
7b6dc2ad72 Allow percentage values for some Window commands 2012-04-06 14:11:16 +02:00
Ryan Pavlik
5d56046b68 FocusableList.cc,.hh: Pass string arguments by const reference.
Found by cppcheck
2012-01-04 07:55:44 +01:00
Ryan Pavlik
85596c1ee2 FbTk/XrmDatabaseHelper.hh: operator== can be const.
Found with cppcheck.
2012-01-04 07:55:17 +01:00
Ryan Pavlik
d70bdbe675 Check .empty() instead of .size() == 0
Found with cppcheck.
2012-01-04 07:54:46 +01:00
Ryan Pavlik
5ae8bdf49d Pre-increment non-primitive types.
Found with cppcheck:
"Prefix ++/-- operators should be preferred for non-primitive
types. Pre-increment/decrement can be more efficient than
post-increment/decrement. Post-increment/decrement usually
involves keeping a copy of the previous value around and adds
a little extra code."
2012-01-04 07:53:54 +01:00
Ryan Pavlik
f859e78cb2 Exceptions should be caught by reference.
Found using cppcheck.
2012-01-04 07:51:35 +01:00
Daniel Diaz
db08329d8b Add mwm _MOTIF_WM_INFO atom to advertise mwm hints capability
Applications like urxvt look for the _MOTIF_WM_INFO atom in order
 to know if the window manager implements mwm hints. If this atom
 is not found, then urxvt sets override_redirect when started with
 the borderless option and falls out of the control of Fluxbox.
2012-01-04 07:45:20 +01:00
Paul Tagliamonte
0f994dbb28 No need to check if a pointer is null before de-allocating it.
5.3.5/2 of the C++ standard:

  "In either alternative, if the value of the operand of delete is the null
   pointer the operation has no effect."
2012-01-04 07:43:21 +01:00
Ryan Pavlik
ea5f7b56ec src/Makefile.am,FbTk/StringUtil.cc: Search relative to the executable.
On Windows, prepend /DUMMYPREFIX to default paths, and replace it at
runtime with the prefix relative to the exe directory.
2011-10-31 10:54:33 -05:00
Ryan Pavlik
65cb53b685 FbTk/StringUtil.cc: Don't return mid-routine.
Prep for Windows dummy prefix code.
2011-10-31 10:54:33 -05:00
Ryan Pavlik
25d04827b5 main.cc,FbTk/StringUtil.cc: On windows, use USERPROFILE instead of HOME 2011-10-31 10:54:32 -05:00
Ryan Pavlik
b82999c1ac FbTk/FbString.cc,Font.cc: Windows doesn't have nl_langinfo 2011-10-31 10:54:09 -05:00
Ryan Pavlik
d4f682c7bd FbCommands.cc: Implement ExecuteCmd for Windows 2011-10-31 10:54:09 -05:00
Ryan Pavlik
f922d2d803 main.cc: Add a wrapper for two-argument mkdir on Windows 2011-10-31 10:54:09 -05:00
Ryan Pavlik
42f647553a fluxbox.cc: ifdef the signals windows doesn't have. 2011-10-31 10:54:08 -05:00
Ryan Pavlik
b0779c413b FbTk/Timer.cc: Check HAVE_SYS_SELECT_H, add alternate for windows 2011-10-31 10:54:08 -05:00
Ryan Pavlik
5bf23bb05d Merge branches 'fix-out-of-range-memory', 'obey-configure' and 'other-improvements' into windows-mingw 2011-10-31 10:53:05 -05:00
Ryan Pavlik
afa870802b FbTk/App.cc: make startup failure easier to diagnose 2011-10-31 10:51:51 -05:00
Ryan Pavlik
d5b58a8033 main.cc: Use expandFilename for default paths 2011-10-31 10:51:45 -05:00
Ryan Pavlik
7510c2d173 src/Makefile.am: Add warning to defaults.cc as well 2011-10-31 10:51:41 -05:00
Ryan Pavlik
fa63fcdc66 main.cc: Check getenv output better.
Windows returns pointers to empty strings for non-existent env vars.
2011-10-31 10:51:38 -05:00
Ryan Pavlik
75c6cee969 FbTk/FileUtil.cc: Use only file masks defined.
Needed for mingw-cross-env
2011-10-31 10:51:13 -05:00
Ryan Pavlik
cc1193ef0c FbTk/SignalHandler.cc: Use HAVE_SIGACTION, with signal() fallback
This fixes platforms without sigaction, like Windows.
2011-10-31 10:50:26 -05:00
Ryan Pavlik
f40be36f75 FbTk/Timer.cc: Check HAVE_SYS_SELECT_H 2011-10-31 10:47:59 -05:00
Ryan Pavlik
757f78035d FbTk/StringUtil.cc: Fix out-of-range memory access.
if pos is not npos, it will always be less than filename.size().
However, the access later is only safe if there is a character
after pos, which would require pos + 1 to be less than filename.size.
2011-10-31 10:44:11 -05:00
Ryan Pavlik
60c964a4d9 RootTheme.cc: Obey HAVE_SYS_WAIT_H 2011-10-31 10:42:08 -05:00
Ryan Pavlik
4bad431c90 main.cc: Only sync() if we can. 2011-10-31 10:42:06 -05:00
Ryan Pavlik
c944c8c0b3 fluxbox.cc: check HAVE_SYS_WAIT_H 2011-10-31 10:42:00 -05:00
Ryan Pavlik
f47ed1be51 FbTk/I18n.cc: Constructor should also check defined(NLS) 2011-10-31 10:41:32 -05:00
Mathias Gumz
fe0eda27bd bugfix: use the imlib cache for every imlib context used
calling imlib_set_cache_size() before a context is created by fluxbox creates
an 'unknown' context. that one is never freed at shutdown.
2011-10-23 11:58:32 +02:00
Mathias Gumz
a545ddef17 clean up imlib2 loaders at shutdown 2011-10-23 11:52:05 +02:00
Mathias Gumz
2628a0a4cf clean up resources on shutdown 2011-10-23 11:51:36 +02:00
Mathias Gumz
dc18666ef2 small code simplification 2011-10-23 09:01:19 +02:00
Mathias Gumz
ee34b376d7 Bugfix: clean up static resources correctly
93924af160 might corrupt memory with gcc-4.6.1 when
finishing fluxbox (clicking 'exit', sending it a SIGINT). Allthough the order, in which static / global
objects are initialized is undefined (at least between separate compilation units), the order in
which they are destroyed is well defined: in reverse order of initialization.

this means, that if 'ScreenImlibContextContainer contexts' (of ImageImlib2.cc)
gets initialized AFTER 'ImageImlib2 imlib2_loader' of Image.cc, it gets destroyed before
imlib2_loader. When that happens, ~ImageImlib2() works on a destroyed object.

(That lead to '* glibc detected * fluxbox: corrupted double-linked list: 0x0000000000dd2710 ***'
later on in 'iconv_close')
2011-10-23 00:01:45 +02:00
Mathias Gumz
3f76e117bf refactored MenuCreator
make public only what needs to be public
2011-10-21 08:42:48 +02:00
Gediminas Liktaras
12f44680df Added support for ARGB visual, patch #3284774
fluxbox now properly displays windows that require ARGB visuals when
an external compositor is running. This was done by creating the
container window with the correct visual and colormap when needed.

Closes #2874629
2011-10-20 09:41:55 +02:00
Mathias Gumz
a2558a2b14 removed obsolete handler for the gnome-window manager hints
nowadays every app should use the extended window manager hints exclusively.
2011-10-17 17:07:00 +02:00
Pavel Labath
0e1ee49603 Fix compilation with intel's compiler
the deleted function was never used, otherwise it would generate an error with other compilers as
well. icc noticed that it was nonsensical even when it wasn't used and complained.
2011-09-14 19:39:11 +02:00
Pavel Labath
e54bca68d2 Make sure FocusableList disconnects from signals when it is destroyed 2011-09-14 19:39:11 +02:00
Pavel Labath
aa84c95253 Enable connecting to const Signals
The idea is that connecting to a signal doesn't change it's state or the state of the object
owning the signal (even though it needs to add the functor to the list for later reference).
Emitting, on the other hand, is usually done as a result of a state change and therefore remains
non-const.

Additional benefit of this arrangement is that objects can export const references to signals to
allow connecting, while keeping the ability to emit to themselves.
2011-09-14 19:39:11 +02:00
Pavel Labath
3c050c3d99 Add explicit ReturnType cast to operator() of FbTk::Slots
without this it wasn't possible to construct a Slot returning void from functors returning some
real value because the compiler would complain about "return statement with a value in a function
returning void".

Theoretically, this may produce some unexpected type conversions, because static_cast is slightly
stronger than implicit cast, but I judge the risk to be negligable (the alternative would be to
provide explicit specializations for slots returning void - too much typing)
2011-09-14 19:39:11 +02:00
Pavel Labath
e67b9a6f83 Upgrade FbTk::Timer so it can take an arbitrary functor as a parameter 2011-09-14 19:39:11 +02:00
Pavel Labath
ae252c62cb Rename Signal::connect function taking an already-constructed slot to connectSlot
I do this to avoid compiler ambiguity between the two versions of connect()
2011-09-14 19:39:11 +02:00
Pavel Labath
05b5974e62 Add comparison operators to FbTk::RefCount
without them, gcc would compare them by converting them to bool first, which is not exactly what
one would expect. Frankly, I'm surprised it even worked without this.
2011-09-14 19:39:11 +02:00
Pavel Labath
536a16e6e2 Use RefCount to store keybindings
I'm doing this because I want to have access to keybindings from lua and for that I need more
flexible ownership semantics.
2011-09-14 19:39:11 +02:00
Pavel Labath
d21ceb4a23 Remove the assignment operator from a regular pointer to a RefCount
it is too easy too shoot yourself in the foot with it, other smart pointers also don't allow such
assignments. If you do want to assign to a RefCount pointer, use reset().
ps: assignment between two RefCounts remains possible, of course.
2011-09-14 19:39:11 +02:00
Pavel Labath
1f34dee9b3 Remove obsolete code
ps: it was already commented out, I'm just deleting it
2011-09-14 19:39:10 +02:00
Pavel Labath
2e75d238ab add FbTk::makeRef function, for easier construction of RefCount pointers 2011-09-14 19:39:10 +02:00
Pavel Labath
cfcc4d44aa FbTk::Timer accepts Slots instead of Commands as the former are more general 2011-09-14 19:39:10 +02:00
Pavel Labath
d338e6c003 Signal::connect now also accepts an already-constructed Slot
This way we can use Commands as signal handlers out-of-the-box.
2011-09-14 19:39:10 +02:00
Pavel Labath
bca20c5db4 Make FbTk::Command inherit from FbTk::Slot
Command offers a subset of functionality and could be completely removed at some point.
2011-09-14 19:39:10 +02:00
Pavel Labath
3ad611928a Fix a small bug in BScreen constructor
it was testing for FbWindow.property() == Success, where it should've tested for == true.
2011-09-14 19:39:10 +02:00
Pavel Labath
e4157821fc Add a reset() function to FbTk::RefCount
to make it's interface more compatible with other smart pointers.
2011-09-14 19:39:10 +02:00
Pavel Labath
0f85ade9be Mark FbTk::StringConvertor as NotCopyable 2011-09-14 19:39:10 +02:00
Pavel Labath
7bca844581 Prepare the Slot classes to be used independently of Signals
Added some polish around them and, to mark this special occasion, moved them out of the SigImpl
namespace.

PS: This partially reverts commit 0775350fee, since I had to
reintroduce ReturnType template parameter, because it will be used in other places. But Signal classes
remain without the ReturnType, because I still cannot imagine how would it be used.
2011-09-14 19:39:10 +02:00
Pavel Labath
0a40d1caf3 Add template copy constructor to FbTk::Refcount
and remove a an "almost" copy constructor (almost, because it takes a non-const reference
parameter) which was useless.
2011-09-14 19:39:10 +02:00
Peter Korsgaard
b9e9eb4e44 FbString: fix build without iconv
Commit 690d926 (introduced FbTk::BidiString) broke building without
HAVE_ICONV, because of wrong variable name and use of iconv_t type.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-09-11 17:18:30 +02:00
Mathias Gumz
f9df3ffeda sync the copied config files to disk before continuing
otherwise a race condition might appear between copying the default
config files to .fluxbox/ and executing 'fluxbox-update_configs'. under
macosx this lead to 'fluxbox hangs'.
2011-09-10 20:17:57 +02:00
Mathias Gumz
6c82cd5f84 bugfix: do not change workspaces when using NextWindow / PrevWindow buttons in toolbar 2011-09-01 17:08:50 +02:00