Commit graph

4020 commits

Author SHA1 Message Date
Mathias Gumz
75b9a4ed72 bugfix: free the shape-corners on the last used 'Shape'
the global 's_corners' vector was still used on an application shutdown
(including ctrl-c SIGINT). depending on when 's_corners' was created on
the stack this could lead to an exception ('pure virtual called') while
trying to free the 'FbPixmaps' without having a valid
'FbTk::Application::instance()' left.
2010-09-14 16:54:08 +02:00
Mathias Gumz
36893ac7f9 bugfix: small typo in last cleanup prevented loading workspace names 2010-09-14 12:24:20 +02:00
Mathias Gumz
b10d58588a cosmetic code cleaning
* use FbTk::StringUtil::number2String() to avoid 'sprintf'
* use FbTk::Util::clamp()
* use FbTk::STLUtil::destroyAndClear()
* whitespaces
2010-09-13 22:07:10 +02:00
Mathias Gumz
deb6a1ebf4 code simplification
we do not need a std::map just to store an attribute on an AtomHandler,
it makes housekeeping just more annoying.
2010-09-13 22:04:24 +02:00
Mathias Gumz
f6af17aa58 code simplification 2010-09-13 21:59:09 +02:00
Mathias Gumz
24e4e98dbe updated config version to '13' and adjusted 'fluxbox-update_configs' accordingly
our users should migrate seamlessly to our new windows-cycling behaviour
without losing their current way of doing things. so, 'fluxbox-update_configs'
tries its best to add '(workspace=[current])' wherever it looks like a valid
place for it. such changed lines are marked by '!! FBCV13' at the end and can
be easily spotted in case the updater got it wrong.

addtional changes:

* added '-check' to 'fluxbox-update_configs' to check the version number in
  '~/.fluxbox/init' vs. the version number of 'fluxbox-update_configs'

* moved the update-code for each version into its own function, easier
  housekeeping
2010-09-11 22:04:15 +02:00
Mathias Gumz
51f054e777 added '(workspace=[current])' to our default keys
commit 882a50fe1d removed the hardcoded limit to
cycle to windows on other workspaces, though it was and IS a good default
behaviour. if users do not want this (they want to cycle to windows on other
workspaces), they should explicitly avoid '(workspace=[current])' in their
keysfile.
2010-09-11 21:53:55 +02:00
Mathias Gumz
faa4c97888 added 'SetXProp' action and (@PROP=foo) clientpattern
these two allow 'tagging' of arbitrary windows with 'tags' (or 'labels'). such 'tagged' windows can then be used in ':NextWindow (@PROP=foo)' commands to quickly cycle through a subset of available windows.
since the 'tags' are applied as real xproperties to a window they survive a restart of fluxbox or even another windowmanager. the user can also set the tags by using xprop(1).

the next step regarding the UI should be to visualize the tags of a window.
2010-09-11 17:09:07 +02:00
Mathias Gumz
4e2c7e2167 moved helper struct TextPropPtr into anonymous namespace 2010-09-10 16:36:17 +02:00
Mathias Gumz
a6ed9498cc code cleanup
* moved code from public API to internals
* avoid code duplication ( while(!m_terms.empty()) ...)
* cosmetic '(*it)->' vs 'term.'
2010-09-10 16:35:49 +02:00
Mathias Gumz
882a50fe1d removed hardcoded limitation to cycle/focus windows on all workspaces
reasons:

* fixes #1732115, allows to have chatwindows on another workspaces and reach them via :NextWindow (urgent=yes)
* old behavior can be achieve by using the (workspace=[current]) pattern
2010-09-10 13:32:47 +02:00
Mathias Gumz
8a7c117153 disabled potentially dead code 2010-09-09 23:24:47 +02:00
Mathias Gumz
ecdaba2874 simpler code 2010-09-09 23:24:27 +02:00
Mathias Gumz
ffd5f28072 removed dead code 2010-09-09 23:23:52 +02:00
Mathias Gumz
7fdb0676a7 bugfix: initialize the Shape of a menu AFTER we created the window for the menu
on startup a lot of 'Fluxbox: X Error: BadDrawable (invalid Pixmap ...)' occured.
this was caused by using an empty 'Window' to create the shape.
2010-09-09 23:23:33 +02:00
Mathias Gumz
2b9a38cba5 minor cleanup 2010-09-09 15:33:34 +02:00
Mathias Gumz
534db1d409 reduced 'switch/case' and 'else if' hell a little bit 2010-09-09 15:33:12 +02:00
Mathias Gumz
77f39235cf added FbTk::Util::clamp() and simplified related code 2010-09-09 15:31:54 +02:00
Mathias Gumz
1657374940 use FbTk apis instead of raw xlib calls 2010-09-09 12:48:19 +02:00
Mathias Gumz
e685117941 simpler to use FbTk/Timer api 2010-09-09 12:47:38 +02:00
Mathias Gumz
82d0de9ef4 cosmetic 2010-09-08 22:31:41 +02:00
Mathias Gumz
8a08110f19 simpler way of expressing 'Singleton' for 'FbAtoms' 2010-09-08 22:09:06 +02:00
Mathias Gumz
dc5a105c3e fixed code duplication 2010-09-08 21:52:13 +02:00
Mathias Gumz
7a149626e6 improved 'escapeRememberChars()' routine by traversing the string only once
removed obsolete 'getuint()' function
2010-09-08 21:45:33 +02:00
Mathias Gumz
48cc67965b avoid code duplication 2010-09-08 21:43:38 +02:00
Mathias Gumz
b76be98227 improved extract*Number functions from FbTk/StringUtil.cc 2010-09-08 21:42:48 +02:00
Mathias Gumz
6ecfa0ef3e cosmetic fix: looks like a copyNpaste issue 2010-09-08 20:48:37 +02:00
Mathias Gumz
26c1cd0cee code simplification 2010-09-08 20:48:01 +02:00
Mathias Gumz
f4fab105ff avoid code duplication 2010-09-08 20:18:28 +02:00
Mathias Gumz
64afa48bb3 removed unused code 2010-09-08 20:17:36 +02:00
Mathias Gumz
690d926ac4 introduced FbTk::BidiString
a 'BidiString' holds both the logical content and the visual reordered
version of the content of a string. this helps to reduce the number of
calls to reorder the string before drawing it (as introduced in the patch
from Ken Bloom) and to be more consistent in menus and textboxes (drawing
cursors and underlining text).
2010-09-08 20:17:21 +02:00
Mathias Gumz
1e8fe2bc14 removed redundant if-statement 2010-09-08 11:19:49 +02:00
Mathias Gumz
8feb0b8c83 avoid constructing new strings implicit 2010-09-05 10:49:05 +02:00
Mathias Gumz
83656fc0e8 cosmetic 2010-09-05 10:47:12 +02:00
Mathias Gumz
63f9c8c1a2 reuse temporary memory for reencoding / reordering fribidi-strings 2010-09-05 10:47:01 +02:00
Mathias Gumz
60c92b96f2 added info about 'BIDI' support to 'fluxbox -info' 2010-09-05 08:49:13 +02:00
Ken Bloom
ea98db4140 added support for bidirectional text 2010-09-04 15:01:33 +02:00
Mathias Gumz
b1b2f47e7d minor code simplification 2010-09-04 14:41:39 +02:00
Mathias Gumz
1e9dafdc67 fixed the default 'OnTitlebar Mouse1' actions 2010-09-04 14:41:11 +02:00
Mathias Gumz
b8987fc623 code simplification / deduplication
* parse the string only once for a bunch of chars to check instead of
  starting over again and again from the beginning, created a helper
  function to do this (FbTk::StringUtil::findCharFromAlphabetAfterTrigger)

* put same code into a function (setClockModeLabel())

* use much simpler code to switch between 12h and 24h mode and replace
  the fmt-switches
2010-08-24 17:30:24 +02:00
Mathias Gumz
874eb67297 moved knowledge about '_NET_SYSTEM_TRAY_S' into the 'SystemTray' class 2010-08-23 19:49:47 +02:00
Mathias Gumz
a1385e4018 fixed compiler warning 'comparison between signed and unsigned integer expressions' 2010-08-23 19:44:21 +02:00
Mathias Gumz
e23c2c4d1b reenable clickRaise(), but on any button press if no key-action was found 2010-08-23 10:54:49 +02:00
Mathias Gumz
23f56d108f bugfix: compiler warning 2010-08-22 20:11:59 +02:00
Mathias Gumz
442c651d64 fixed compiler warnings regarding signed/unsigned and () around expressions 2010-08-22 14:44:31 +02:00
Mathias Gumz
bc2b21547b implemented 'ActivateTab' action to (re)allow activation of tabs via mouse 2010-08-20 19:01:25 +02:00
Mathias Gumz
b4e65724ef fixed typo 2010-08-16 18:27:00 +02:00
Jim Ramsay
a3b063292c bugfix: another crash when cleaning up signals
While 769130f51a did fix one issue, it introduced another by changing the
logic related to the new SignalTracker.  The original logic (introduced in
9ad388c5bf) was:
  -> in 'leave(Signal)', only call 'disconnect'
  -> in 'leaveAll()', call 'disconnect' and 'disconnectTracker'
But 769130f51a inverted this, calling 'disconnectTracker' in both cases but
only 'disconnect' in the 'leaveAll()' case, which would leave unattached signals
around after calling 'leave(Signal)'.

This fix not only repairs the logic, but renames the ambiguous 'disconnect'
boolean to something more explicit: 'withTracker'.
2010-07-14 11:36:00 -04:00
Jim Ramsay
37a24132b5 Implement StrictMouseFocus
As noted in the previous commit, StrictMouseFocus now works as advertised:
  Focus follows mouse on every EnterNotify event (except when the "ClientMenu"
  closes or during alt+tab window cycling)
2010-05-28 15:50:15 -04:00
Jim Ramsay
cdbaf5c04d Add new focus model: StrictMouseFocus
This is not actually implemented yet, but from now on, "MouseFocus" means:
  Focus follows mouse only when you are moving the mouse, any EnterNotify events
  caused by non-mouse operations (window closing, keycommands, changing
  desktops) will *not* shift focus

And once fully-implemented, "StrictMouseFocus" will mean:
  Focus follows mouse on every EnterNotify event (except when the "ClientMenu"
  closes or during alt+tab window cycling)
2010-05-28 15:10:28 -04:00
Mathias Gumz
769130f51a bugfix: do not use invalid iterators while looping thru a container which gets destroyed 2010-05-23 15:58:35 +02:00
Mathias Gumz
fbcdd34b22 mostly cosmetic fixes, mainly discovered by 'clang --analyze'
reordering of Resource-related stuff was because of

   "error: explicit specialization of 'getString' after instantiation"

complaints.
2010-05-23 12:25:47 +02:00
Mathias Gumz
ff9c68e247 fixed potential memory leak 2010-05-16 14:25:59 +02:00
Mathias Gumz
17b21635a2 cleanup created corner pixmaps, moved the initCorners() function out of the class 2010-05-16 14:25:36 +02:00
Mathias Gumz
04739b2d1f initialize all member variables, otherwise unclean state in some circumstances
(valgrind complained a lot about ::updateGeometry() accessing uninitialized variables)
2010-05-16 14:24:34 +02:00
Mathias Gumz
b8f9ac6d69 prevent crash if m_keylist is 0
again, i do not know yet, why this could happen.
2010-05-08 19:04:44 +02:00
Mathias Gumz
24cfd54eae cleanup: missing initialization
i ran across problems on a freshly installed ubuntu without
any config files, m_keylist was not initialized, yet unsure why.
2010-05-08 19:03:57 +02:00
Mathias Gumz
bca59851f3 bugfix: crash when cleaning up signals
22fa5f544b was not fixing anything, the real cause is that the
SignalHolder still has a reference to a not existing Tracker.
2010-05-07 09:36:30 +02:00
Mathias Gumz
615e9cec32 compile fix: FD_ZERO (sys/select.h) on solaris wants to use memset(); closes #2997117 2010-05-06 21:19:31 +02:00
Mathias Gumz
5be5edc1e5 bugfix: when maximizing a shaded window, unshade it before 2010-05-06 20:54:44 +02:00
Mathias Gumz
22fa5f544b bugfix: added missing 'virtual' keyword, otherwise fluxbox crashes with 'pure virtual method called' 2010-05-06 20:25:47 +02:00
Mathias Gumz
a443d46117 bugfix: resizing/moving a maximized window via keys do not end maximization state (#2980313) 2010-05-06 20:09:59 +02:00
Mathias Gumz
a2f809f8f2 added little helper function to disable the maximization state of a window while keeping its current position / size 2010-05-06 20:07:56 +02:00
Mathias Gumz
d2a7cc60a2 bugfix: resizing stops _NET_WM_STATE_MAXIMIZED*, so trigger signal to set the properties correct
fixes partly #2980313, resize with keys still does not trigger _NET_WM props to be correct
2010-05-05 22:30:42 +02:00
Mathias Gumz
b43be7144f upgrade CONFIG_VERSION to 11 2010-05-05 22:05:28 +02:00
Mathias Gumz
2c66828341 cosmetic 2010-05-05 08:42:37 +02:00
Mathias Gumz
fbcb0cd7e1 use maximize options for fullscreen as well 2010-05-05 08:42:28 +02:00
Mathias Gumz
a10bab0f7c added OnLeftGrip, OnRightGrip, OnWindowBorder modifiers for keys file
this allows to move some hardcoded keysbindings into the keys file and
makes the code simpler
2010-05-05 08:41:03 +02:00
Mathias Gumz
35f17d22b5 cosmetic 2010-05-01 14:29:41 +02:00
Mathias Gumz
b3361eae02 use new closest head calculation code to place windows when clearing up heads 2010-05-01 14:29:31 +02:00
Mathias Gumz
d6bc8d753e bugfix: moving (the center of) a maximized window out of a xinerama head could result in maximizing it over all heads
the old way of deciding which head to (re)maximize the current window
was to just test if the center of the window is INSIDE which head.

now we calculate the closest head which fixes the problem
2010-05-01 14:27:45 +02:00
Mathias Gumz
583398e491 bugfix: using 'int' on 64bit systems while setting window properties is wrong
using a smaller type ('long' on 64bit is 8 byte, 'int' is 4) results in
strange properties, eg:

  _NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_HORZ, undefined atom # 0x2726130

(when xpropping a maximized xterm). this might cause misbehavior in apps.
2010-04-30 09:03:57 +02:00
Henrik Kinnunen
dd8fcc8b7b Changed title signal in Focusable to new signal system 2010-03-26 18:15:45 +01:00
Henrik Kinnunen
9ad388c5bf Added Tracker interface for SignalHolder.
This is used by SignalTracker so Signals can disconnect from it when
they die.
2010-03-26 18:04:58 +01:00
Henrik Kinnunen
1cae9f22f8 Minor fix for argument reference in MemFunSelectArgImpl 2010-03-26 18:00:23 +01:00
Henrik Kinnunen
5bc782561b Initialize all variables in FbWindow 2010-03-26 17:28:18 +01:00
Henrik Kinnunen
43837f82e1 Added simple stress test in python 2010-03-20 00:29:39 +01:00
Henrik Kinnunen
f150f727b2 Added SelectArg.hh to Makefile.am 2010-03-19 02:32:17 +01:00
Henrik Kinnunen
ceff86b794 Added SelectArg and MemFunSelectArg*
The MemFunSelectArg* functions can be used to select
a specific argument from a signal. For example this would
select the string argument as argument to the callback:

Signal<void, int, float, string> signal;
signal.connect(MemFunSelectArg2(obj, &Object::takesOneStringArg));
signal.emit(10, 3.14, "hello");

...

void Object::takesOneStringArg(const string& value) {
...
}
2010-03-19 02:23:41 +01:00
Henrik Kinnunen
68e90ab84f Added missing RelaySignal.hh to Makefile.am 2010-03-18 19:47:14 +01:00
Henrik Kinnunen
6ed8369d57 Changed Focusable::focusSig() to new signal system.
The focus signal emits the window that had the focus status changed.
2010-03-18 19:41:35 +01:00
Henrik Kinnunen
02bb93590c Added FbTk::relaySignal, which relays new signals to old Subject type signals. 2010-03-18 19:35:19 +01:00
Henrik Kinnunen
31a458f365 Fixed so testDemandAttention compiles 2010-03-18 12:08:03 +01:00
Henrik Kinnunen
18570d83a2 minor cleaning in MemFun.hh 2010-03-18 10:56:15 +01:00
Henrik Kinnunen
0504de454a Added MemFunIgnoreArgs which ignores aditional arguments.
For example connecting a function that takes two arguments
to a signal that emits three arguments:
struct Functor {
    void show(int a, int b);
};
Functor f;
Signal<void, int, int, int> s3;
s3.connect(MemFunIgnoreArgs(f, &Functor::show));
2010-03-18 10:45:33 +01:00
Henrik Kinnunen
ce0b41c847 Changed #ifdef DEBUG ... cerr << to using fbdbg.
This will reduce the number of #ifdef DEBUG for
simple debug messages.
include "Debug.hh" and use fbdbg instead of cerr for debug.
2010-03-17 16:35:07 +01:00
Mathias Gumz
254bc96daf fixed little preprocessor error 2010-02-27 10:33:06 +01:00
Mathias Gumz
c65dc30fc2 improved documentation of the code 2010-01-19 20:20:13 +01:00
Mathias Gumz
a2f673ccaf optimization of how often fluxbox checks for the system time to display it in the clocktool
the idea (as a first patch) for this change was provided by
Thomas Habets (thomas at habets pp se). instead of having a
fixed interval each second, we now calculate the next point in
time based upon the format string used by the clocktool to render
the time. as long as no seconds are shown fluxbox now wakes up
once every minute.
2010-01-19 20:19:45 +01:00
Mathias Gumz
46261a8284 implemented 'MoveN' and 'ClickN' support in keys file.
the hardcoded 'OnTitlebar Mouse1 :Raise' (see Window.cc, FluxboxWindow::buttonPressEvent())
is disabled for now, should be added to fluxbox-update_configs
2009-12-18 08:05:07 +01:00
Michal Zime
69d80c5905 Keep 'maximum/fullscreen' when moving a window between different heads 2009-11-23 21:11:04 +01:00
Mark Tiefenbruck
8def80cec3 reportedly fix compiling on gcc 4.4 on Solaris 2009-10-08 00:18:43 -07:00
Mathias Gumz
6645688880 definition should match declaration 2009-10-03 13:53:13 +02:00
Mathias Gumz
69bf3965b7 compile fixes for sun compiler 5.10: class Layer conflicts with class FbTk/Layer .. so just a little renaming 2009-10-03 13:53:00 +02:00
Mathias Gumz
a973154c66 compile fixes for sun compiler 5.10: 'i want an extern C function ptr' 2009-10-03 13:40:32 +02:00
Mathias Gumz
f2ea245f1d compile fixes for sun compiler 5.10: complains about 'not beeing able to initialize this from that' 2009-10-03 13:38:41 +02:00
Mathias Gumz
54c58bba21 cosmetic: use FbTk::StringUtil::number2String() 2009-10-03 09:06:34 +02:00
Mathias Gumz
80e8cd071e just use the FbTk API 2009-10-02 08:38:24 +02:00
Mathias Gumz
261ba26d27 another little helper for FbTk::StringUtil: extractNumber() 2009-10-01 21:16:46 +02:00
Mathias Gumz
4eeac74a3d removed unused code 2009-10-01 08:58:56 +02:00