Commit graph

641 commits

Author SHA1 Message Date
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
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
Pavel Labath
2073ae12a4 Convert FbWinFrame::frameExtentSig to FbTk::Signal
Also, I spotted a potential bug in the code. I marked the place with XXX. Someone should take a
look at that.
2011-05-10 13:00:46 +02:00
Pavel Labath
ff49160b12 Convert FluxboxWindow::hintSig to FbTk::Signal 2011-05-10 13:00:46 +02:00
Pavel Labath
6a0280aa4d Convert FluxboxWindow::layerSig to FbTk::Signal 2011-05-10 13:00:46 +02:00
Pavel Labath
e53d14e910 Convert FluxboxWindow::stateSig to FbTk::Signal 2011-05-10 13:00:46 +02:00
Pavel Labath
4f89009c9e Convert FluxboxWindow::workspaceSig to FbTk::Signal 2011-05-10 13:00:45 +02:00
Pavel Labath
129bac1e0f Convert Focusable::dieSig to FbTk::Signal 2011-05-10 13:00:45 +02:00
Pavel Labath
f7d7dfd2a8 Convert FbTk::Theme::reconfigSig and friends to the new Signal system
I removed the const versions of reconfigSig() in the process since FbTk::Signal has no const
methods anyway.
2011-05-10 13:00:45 +02:00
nacitar sevaht
1dacf57d20 Can check CARDINAL properties in CLIENT PATTERNS
Introduces a new member function, FbWindow::cardinalProperty()

This change also changes other code that previously used
FbWindow::property() to do the same thing as the new function; this
reduces code duplication.

There are still some bits of code (Ewmh.cc, extractNetWmIcon()) that use
FbWindow::property() to retrieve XA_CARDINAL values, but as the new
method is designed for getting a _single_ property, and that code uses
FbWindow::property() to retrieve the number of values present, and then
grab all of them; it's a different use case.  I opted to not try to make
cardinalProperty() into some monolithic all-purpose cardinal method;
FbWindow::property() works just fine for that.

This change also adds an optional (default=NULL) boolean to
FbWindow::textProperty and friends that allows the caller to determine
whether or not a value was actually retrieved.  This was necessary for
integrating FbWindow::cardinalProperty with the codebase, and it seemed
to fit with FbWindow::textProperty as well.  Prior to this change, if
you got a return value of "", you wouldn't know if you successfully
retrieved the value which happened to be blank, or if you failed to
retrieve the value.  Now, you can pass the address of a boolean if you
so choose in order to differentiate these situations; the same applies
to the new FbWindow::cardinalProperty().
2011-05-08 07:48:03 +02:00
Mathias Gumz
e850b01919 compile fix: sunCC 5.11 (sunstudio 12) compiles and links again
biggest change: renaming of 'class Layer' to 'class ResourceLayer' in
Layer.hh to handle complaints about 'ambiguous Layer: Layer or FbTk::Layer'.
'ResourceLayer' sounds crappy, but that was the best I could come
up with right now.
2011-03-23 12:02:15 +01:00
Mathias Gumz
4a161132c2 better solution for warping transient windows
see #3088856 / 09f99a4674.

at the moment this fix looks side-effect free, time will tell.
2011-02-24 16:55:55 +01:00
Mathias Gumz
09f99a4674 intermediate fix for segfault when warping transient windows to different workspace, see #3088856
warping a transient window to the next workspace creates a cycle between
BScreen::changeWorkspaceID(), BScreen::reassociateWindow(), Workspace::removeWindow(),
FocusControl::unfocusWindow(), FluxboxWindow::setCurrentClient(), FluxboxWindow::focus()
and so on.

for now we just stop allowing transient windows to be warped, it is most
likely a bad idea anyway having the modal dialog on one workspace and the
(dead) main window on another one.

this issue must be analyzed further, since there might be a deeper problem
with the way the focus code works.
2011-02-24 15:59:34 +01:00
Mathias Gumz
f0ffaf890f moved Menu placement into ScreenPlacement::placeAndShowMenu() 2011-02-24 11:21:16 +01:00
Mathias Gumz
6febc40c47 bugfix: place WindowMenu correctly upon first call (closes #2731524)
FbTk::Menu::updateMenu() recalculates the width() and height() of the
window. this must be done before the menu is moved to fit completely
onto the screen.

the 'menu().raise()' command is not needed, that is done inside
'menu().show()' already.
2011-02-24 00:26:32 +01:00
Mathias Gumz
2b62cf9733 cleanup and code deduplication
* ClientPattern.cc: make compiler happy (complaints about XPROP not handled in switch)
* FbTk/FbPixmap.cc FbTk/StringUtil.cc: signed vs unsigned
* FbTk/FbString.cc: missing return
* WinClient.cc: create atoms only once; use helper function
* Window.cc: use a helper function
2010-09-15 01:22:01 +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
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
e23c2c4d1b reenable clickRaise(), but on any button press if no key-action was found 2010-08-23 10:54:49 +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
5be5edc1e5 bugfix: when maximizing a shaded window, unshade it before 2010-05-06 20:54:44 +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
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
Henrik Kinnunen
dd8fcc8b7b Changed title signal in Focusable to new signal system 2010-03-26 18:15:45 +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
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
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
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
884db973bb cosmetic fixes: removed redundant ';' + some whitespaces 2009-09-30 21:02:24 +02:00
Mark Tiefenbruck
cfd055064a mwm hints can't control the close button 2009-09-14 02:13:33 -07:00
Mathias Gumz
5a3f25cda1 implemented visibility of titlebar buttons via the apps file 2009-09-12 16:19:46 +02:00
Mark Tiefenbruck
27d181f490 hide the menu when you click on a window 2009-06-28 12:34:34 -07:00
Mark Tiefenbruck
5f9f2475b7 make Raise/LowerLayer accept integer argument for number of layers, default 2 2009-06-28 10:15:06 -07:00
Mark Tiefenbruck
8addc54e7e allow "lower" as a reference point for MoveTo, etc. 2009-06-28 09:04:46 -07:00
Jim Ramsay
54b49c63a6 Merge branch 'mousefocus' 2009-05-26 16:45:05 -04:00
Mathias Gumz
c4d8e9c8e1 buildfix: fluxbox didnt link when configured with --disable-remember 2009-03-04 20:12:25 +01:00
Jim Ramsay
54c1ac8704 Ignore EnterNotify on Move or Resize
Moving and Resizing windows can reveal other windows, which of course can change
unexpected focus changes in focus-follows-mouse.
2009-02-27 15:18:08 -05:00
Jim Ramsay
8a7879913b Ignore EnterNotify on Lower
Lower is one of the actions which may reveal a window under the current mouse
pointer which would unexpectedly change focus under focus-folows-mouse.
2009-02-27 15:18:08 -05:00
Jim Ramsay
5c7784affe Added facility to selectively ignore EnterNotify events
This will be used to avoid some situations where an EnterNotify event should not
focus the window beneath the mouse cursor.  For example, when a menu (or any
window for that matter) is unmapped, focus should not pass to whatever window is
beneath the current location of the mouse cursor, but to the previous window in
the focus list.

This was first noticed when using the ClientMenu feature with
focus-follows-mouse on -> The focus would always end up on the window beneath
the mouse pointer, not the window selected in the menu.
2009-02-27 15:18:07 -05:00
Mark Tiefenbruck
f92fd6ca05 unrevert 1fdef35e51
x
Mathias should listen to me when I say "by the way, I know you liked the code I
just removed; you should change your keys file to use
:MacroCmd {Focus} {Raise} {StartMoving}". Behavior in 1.0.0 and previous was
that alt+click would focus and raise, regardless of whether the window was moved
or not. If mathias really wants his alt+drag to preserve stacking order, he
should add Mouse<N>Move events to the keys file to distinguish moving from
clicking. I've been planning on doing it anyway.
2008-10-15 16:20:30 -07:00
Mathias Gumz
ccf096f771 reverted 1fdef35e51, added more info about that feature 2008-10-15 23:07:14 +02:00
Mathias Gumz
3441261346 don't allow resizing to negative dimensions
this fixes a problem when the user resizes a window over the opposite border.
as a result a signed overflow occured which lead to quite huge windows.
2008-10-15 08:31:10 +02:00
Mark Tiefenbruck
e5fd401f4e focus window when done dragging to a new workspace with outline moving 2008-10-12 09:54:35 -07:00
Mark Tiefenbruck
f3bd8e7565 don't show window on new workspace when warping with outline moving 2008-10-08 17:15:53 -07:00
Mark Tiefenbruck
a97ba40053 fix windows mapping into IconicState again 2008-10-07 00:59:05 -07:00