aboutsummaryrefslogtreecommitdiff
path: root/src/Window.cc
AgeCommit message (Collapse)AuthorFilesLines
2014-04-11merge Sami Kerola's new build-systemMathias Gumz1-8/+0
2014-02-19make sure that result of division is signed intAmadeusz Sławiński1-4/+6
there is problem that x/y ended with unsigned int value due to width()/height() and negative result of division ended up being big it causes Focus to move window due to screen boundary checks fixes annoying behaviour of window moving few pixels with Mod4 KP_8 :MacroCmd {ResizeTo 100% 50%} {MoveTo 0 0 Top} {Raise} {Focus}
2013-05-26build-sys: use AC_USE_SYSTEM_EXTENSIONSSami Kerola1-5/+0
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 Kerola1-3/+0
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-23more compact codeMathias Gumz1-19/+12
2013-05-23Use shared code, minor code simplificationMathias Gumz1-7/+5
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-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-06Feature #3602124: 'LHalf' and 'RHalf' buttons to the titlebarMathias Gumz1-0/+27
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-01-26Calculates timeouts of ClockTool based upon System ClockMathias Gumz1-4/+4
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-10Reduced lagging begind of windows on slower displaysAymeric Vincent1-1/+7
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.
2012-11-07Adds the OnTab keyword for the keys fileJulien Viard de Galbert1-53/+5
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-10-04minor cosmeticMathias Gumz1-8/+8
2012-10-04Add support for nearest corner or edge resizingMichael Abbott1-20/+46
2012-08-28changed timing functions to use a monotonic increasing clockMathias Gumz1-23/+11
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 45726d3016e and bug #3560509). it is irrelevant for timers to know the nano-seconds since the epoch anyways.
2012-08-22fix sanity check for transient and explicitly placed windowsPeter Hercek1-5/+9
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-07-09make the menu bit of decoration masks control whether or not menu button is ↵Mark Tiefenbruck1-8/+9
shown on window (it did nothing before)
2012-07-07make alt-tab skip modal windowsMark Tiefenbruck1-0/+4
2012-04-06Allow percentage values for some Window commandsLajos Koszti1-3/+13
2012-01-04Pre-increment non-primitive types.Ryan Pavlik1-2/+2
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."
2011-10-20Added support for ARGB visual, patch #3284774Gediminas Liktaras1-1/+1
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-05-10Convert FbWinFrame::frameExtentSig to FbTk::SignalPavel Labath1-4/+5
Also, I spotted a potential bug in the code. I marked the place with XXX. Someone should take a look at that.
2011-05-10Convert FluxboxWindow::hintSig to FbTk::SignalPavel Labath1-2/+1
2011-05-10Convert FluxboxWindow::layerSig to FbTk::SignalPavel Labath1-3/+2
2011-05-10Convert FluxboxWindow::stateSig to FbTk::SignalPavel Labath1-19/+21
2011-05-10Convert FluxboxWindow::workspaceSig to FbTk::SignalPavel Labath1-6/+5
2011-05-10Convert Focusable::dieSig to FbTk::SignalPavel Labath1-1/+1
2011-05-10Convert FbTk::Theme::reconfigSig and friends to the new Signal systemPavel Labath1-5/+7
I removed the const versions of reconfigSig() in the process since FbTk::Signal has no const methods anyway.
2011-05-08Can check CARDINAL properties in CLIENT PATTERNSnacitar sevaht1-2/+6
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-03-23compile fix: sunCC 5.11 (sunstudio 12) compiles and links againMathias Gumz1-11/+11
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-02-24better solution for warping transient windowsMathias Gumz1-1/+1
see #3088856 / 09f99a4674a75a201effdc912d79a28c2dad4225. at the moment this fix looks side-effect free, time will tell.
2011-02-24intermediate fix for segfault when warping transient windows to different ↵Mathias Gumz1-1/+1
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-24moved Menu placement into ScreenPlacement::placeAndShowMenu()Mathias Gumz1-21/+5
2011-02-23bugfix: place WindowMenu correctly upon first call (closes #2731524)Mathias Gumz1-1/+2
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.
2010-09-14cleanup and code deduplicationMathias Gumz1-20/+14
* 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-11added 'SetXProp' action and (@PROP=foo) clientpatternMathias Gumz1-0/+4
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-08introduced FbTk::BidiStringMathias Gumz1-20/+20
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-08-23reenable clickRaise(), but on any button press if no key-action was foundMathias Gumz1-1/+17
2010-08-22fixed compiler warnings regarding signed/unsigned and () around expressionsMathias Gumz1-7/+14
2010-08-20implemented 'ActivateTab' action to (re)allow activation of tabs via mouseMathias Gumz1-71/+30
2010-05-06bugfix: when maximizing a shaded window, unshade it beforeMathias Gumz1-0/+6
2010-05-06added little helper function to disable the maximization state of a window ↵Mathias Gumz1-5/+13
while keeping its current position / size
2010-05-05bugfix: resizing stops _NET_WM_STATE_MAXIMIZED*, so trigger signal to set ↵Mathias Gumz1-0/+2
the properties correct fixes partly #2980313, resize with keys still does not trigger _NET_WM props to be correct
2010-05-05use maximize options for fullscreen as wellMathias Gumz1-2/+2
2010-05-05added OnLeftGrip, OnRightGrip, OnWindowBorder modifiers for keys fileMathias Gumz1-161/+149
this allows to move some hardcoded keysbindings into the keys file and makes the code simpler
2010-03-26Changed title signal in Focusable to new signal systemHenrik Kinnunen1-15/+19
2010-03-18Changed Focusable::focusSig() to new signal system.Henrik Kinnunen1-4/+4
The focus signal emits the window that had the focus status changed.
2010-03-17Changed #ifdef DEBUG ... cerr << to using fbdbg.Henrik Kinnunen1-101/+64
This will reduce the number of #ifdef DEBUG for simple debug messages. include "Debug.hh" and use fbdbg instead of cerr for debug.
2009-12-18implemented 'MoveN' and 'ClickN' support in keys file.Mathias Gumz1-7/+36
the hardcoded 'OnTitlebar Mouse1 :Raise' (see Window.cc, FluxboxWindow::buttonPressEvent()) is disabled for now, should be added to fluxbox-update_configs
2009-11-23Keep 'maximum/fullscreen' when moving a window between different headsMichal Zime1-0/+14