aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2016-08-26allow to alter button labels via fluxbox-remoteThomas Lübking7-5/+82
Command is "RelabelButton button.foo $LABEL" This is useful to eg. hint the amount of unread mails in a button to start your MUA, reflect the $USER in a session menu button etc.
2016-08-26toolbar: allow labeled general action buttonsThomas Lübking1-3/+31
With this patch you can add buttons like *.toolbar.button.foo.label: F *.toolbar.button.foo.commands: RootMenu:Exec foo *.toolbar.tools: button.foo, iconbar, ... button.*.label is mandatory button.*.commands suppots 5 mouse buttons, but the way stringtok works, it's required to add a blank (or some junk) between to colons to skip a button
2016-08-26support FbTk::TextButton's in ButtonToolThomas Lübking1-1/+8
required to allow labeled general action buttons in the toolbar
2016-08-26add functions to toggle slit/toolbar hiddenThomas Lübking2-0/+30
2016-08-26Fix autohiding/raising timer logicsThomas Lübking4-78/+67
Trying to control a timer bound to an unconditional toggle, caused by opposing events does not work. <- That's a period. The toolbar implementation would act too seldom, the slit to often. Instead, fire the timer whenever the state does not match the event and bind it to a function that queries the pointer position and acts accordingly.
2016-08-26add autoraising to toolbar and slitThomas Lübking4-2/+25
2016-08-26add commands to toggle toolbar and slit layerThomas Lübking7-0/+53
toggle(Toolbar|Slit)Above toggles the resp. item between its regular and the AboveDock layer (ie. above everything, even visible on active fullscreen windows) Also required step for autoraising. REQUEST: 222
2016-08-26add support for artificial struts (per head)Thomas Lübking2-0/+41
Allows to maintain access to desktop fractions etc. against maximized windows. Also permits to OnToolbar clicks in this case, eg. to raise it. REQUEST: 150
2016-08-26Improve stretching (RELATIVE) toolbar itemsThomas Lübking5-20/+45
The available space is distributed reg. the preferred width of items (spacers and the iconbar ;-) instead of evenly. The preferred width of the iconbar is calculated from its buttons. This allows to align the iconbar using spacers and makes better use of the available space
2016-08-06Adjust RELATIVE ::repositionItems (more relative)Thomas Lübking2-8/+29
The evenly distributed space causes a lot of whitespace and otoh. cut items, so we use the items internal size as indicator IF the item is a textbutton (the regular usecase in fluxbox) Also publish the function to be triggered from outside (because the caller can, in theory, much better compress several text changes)
2016-08-06expose a preferredWidth of *Button'sThomas Lübking5-0/+16
2016-08-06delay title updatesThomas Lübking4-2/+20
Notably shells will cause brief interim titles when calling short-lived commands (try "ls"...) This covers such by waiting 100ms after every title update before reacting (the title will have returned in the mentioned cases, the UI remains steady)
2016-08-06signal title changesThomas Lübking2-0/+4
so that interested parties (the iconbar ;-) can use/forward them
2016-08-06Add SpacerToolThomas Lübking4-0/+104
This allows to add random spacers, fixed size or stretching, to the toolbar. CCBUG: 1141
2016-07-30flag slit for reconfiguration and act on showThomas Lübking2-3/+15
According to Peter Ganzhorn, there's a transparency issue when using an autohiding slit, but I don't use a slit at all. However, the explanations in the bug do make sense and this is just an alternative approach on the problem (that does not require interim showing) BUG: 1132
2016-07-30fix transient dialog placementThomas Lübking1-2/+2
dialogs can be bigger than the mainwindow and the unsigned dimensions then overflow in the subtraction (the window would still be moved into screen bounds but appear on ugly 0,0)
2016-07-30hide window before restoring the client on unmapsThomas Lübking1-0/+2
otherwise compositors will update the texture and operate on (fade) the frame instead of the client. Didn't test why this only happens on ARGBs, but could be the colormap installation. BUG: 1110
2016-07-30reposition visible submenus when changing styleThomas Lübking1-1/+4
a fixed position of the style menu won't help (the menu geometry changes *because* the item geometries do) - warping the pointer would likely be possible, but warping the pointer is cc. "evil" BUG: 715
2016-07-30reconfigTheme's on loading a new styleThomas Lübking4-0/+33
Also reconfigure menus (recursively) on style load The most critical call is the shape update - the menus often become cut-off, preventing mouse interaction with lower items, but also colors are not applied correctly to menus w/o updating them. BUG 1022 is most likely this and only a misinterpretation (for the mentioned items are those with lacking color updates on style updates) BUG: 1146 BUG: 1017 CCBUG: 1022
2016-07-30handle both Focusable's as m_cycling_nextThomas Lübking1-2/+5
m_cycling_next can either be WinClient or a FluxboxWindow In case of the latter, client->fbwindow() needs to be matched in setFocusedWindow when protecting against client side focus juggling. BUG: 1148
2016-07-30explicitly set s_focusedWindow for cycle protectionThomas Lübking1-0/+2
2016-07-30Do not reset cycle focus when unsetting focus onlyThomas Lübking1-1/+1
2016-07-30Do not protect focus while cyclingThomas Lübking1-0/+1
We've better things to do and the focus is moving around anyway BUG: 1048
2016-07-30do not lock focus against unfocusing.Thomas Lübking1-1/+1
Latter happens when eg. closing windows, including such with locked focus
2016-07-30prefer m_cycling_next over s_focused_windowThomas Lübking1-1/+6
as cycle start (former is where we wanted to go and X11 is still async)
2016-07-30allow to force moveResize and use on applyStateThomas Lübking2-5/+5
applyState also requires some updates implied by moveResize, notably the reconfigure, the setBackground on the window etcetc. Instead of testing what'd be missing from a moveResize, we just force the latter to apply even when seeming unrequired. This has notable impact when switching fullscreen state for a window with fullscreen dimensions. BUG: 992
2016-07-23clear selection on text inputThomas Lübking1-0/+1
Entering upcase chars would auto-select them Seems I don't need upcase chars very often ;-)
2016-07-03smart handling of NotifyUngrab crossing eventsThomas Lübking2-5/+12
closing a keyboard driven popup had the sideeffect to return the focus where the pointer is, regardless of whether that window had the focus before (due to a NotifyUngrab crossing event), bug #597 This was resolved by simply ignoring NotifyUngrab mode crossings, but that had the unfortunate sideeffects to break focus passing when the mouse was actually moved (in a DnD operation, 730) or the focus shall be passed on for strict mouse focus and a mouse triggered lower action (1012) So instead we record the window that was last entered by a *real* crossing and only ignore the NotifyUngrab event if this window didn't change. BUG: 1012 BUG: 730 CCBUG: 597
2016-07-01ignore font for empty title height calculationThomas Lübking3-22/+23
and align calculation on init and reconfigure As a result, if a menu has no label, the title height is determined only by menu.titleHeight (and the border sizes), not by the unused font.
2016-07-01re-fix alt+tab'bing through tabbed windowsThomas Lübking2-5/+12
commit 98313bf broke (i'm terribly sorry) this because m_cycling_last stores the first client in a tabgroup, thus cannot be abused for this purpose. So we explicitly store a value and btw. do it before sending the focus, ie. "in time" for sure instead of "for sure™"
2016-07-01fix tabbing of unfocusable clientsThomas Lübking1-1/+4
this affects all java clients, because java uses the retarded WM_TAKE_FOCUS protocol, but also very important clients like xeyes ;-) BUG: 1055
2016-07-01do not leave stale oplock behindThomas Lübking1-1/+3
deiconify'ing a client on a different workspace left an oplock by a shortcut return, turning the client semi- to inaccessible BUG: 1010
2016-07-01avoid calling into XLibThomas Lübking1-4/+12
Testing one bug, the function seems usually be called with the root window as parameter, so we can save a pointless lookup for the root of the root by testing against window before testing against window_root. Elegantly, this will "fix" the bug where XGetGeometry of the second heads root will either report the first heads root or some junk (xephyr case?) BUG: 1128
2016-07-01ensure to update the current client tab from menuThomas Lübking1-0/+3
the menu focuses which tries to set the current tab, but fails because the iconified client won't have the input focus (yet), so we pass it a dedicated "set this client and do not try to set input because we're going to do next anyway explicitly" call =) BUG: 997
2016-07-01do not move unfocused windows to the desktop layerThomas Lübking1-1/+2
While usually™ the window is just reset to its original layer, ensuring to show the active window is certainly a good idea, but it's not required to lower the fullscreen window to the desktop layer, the other windows layer + an extra raise is entirely sufficient and it's rather odd to see conky when activating a utility window to a video player ;-) CCBUG: 894
2016-07-01add _NET_WM_NAME to FbWindow::setNameThomas Lübking1-0/+8
since fluxbox is a f**** WM it should be able to use f**** NETWM hints in its toolkit ;-) CCBUG: 702 (does not fix input)
2016-07-01fix tab selection by mousepressThomas Lübking1-0/+16
Tabs outside the titlebar are not selectable by mouseclicks (ie. the feature does not work) The patch clones the enterNotifyEvent code and ignores (for now) the actual button (no idea whether it makes any sense to restrict it the left button?) BUG: 1103
2016-06-26merge remember focusnew into focusprotectionThomas Lübking4-36/+33
The FocusNewWindow key is still read, but not written and OVERRIDDEN in case of conflict with the FocusProtection key
2016-06-26Add FocusProtection featuresThomas Lübking5-2/+102
The apps file gets a new key FocusProtection supporting a comma separated list. * None : regular behavior * Lock : If this window has the focus, no other may claim it * Deny : This window is not allowed to focus itself I addition there's preparation for a follow-up patch to incorporate and substitute the present FocusNewWindow feature: * Gain : Pass focus to new window * Refuse : Do not pass focus to new window rationale: clients stealing the focus sucks badly and while there's an input driven timeout, that only protects actual typing flow, but if eg. vlc proceeds on the playlist, you'll suddenly control vlc instead of your browser (ie. typing ctrl+w doesn't close the tab, but the playlist ...)
2016-06-26remove strut when property is withdrawnThomas Lübking1-0/+2
CCBUG: 1133
2016-06-26fix tracking of MWM hints in case of removalThomas Lübking1-4/+8
2016-06-26replace FbRootWindow::depth with maxDepthThomas Lübking4-6/+9
The depth member of FbWindow was abused to store the maximum depth but that gets overridden with geometry changes of the root window (screen layout changes) so we store and read the value explicitly while ::depth() maintains the actual depth of the root window The result of this is that frames for ARGB windows were created with a wrong depth and failed to reparent the client window. BUG: 1102 BUG: 1058
2016-06-26prevent clients from positioning out of workspaceThomas Lübking1-6/+35
Still enough stupid ones around which ask for 0,0 (despite there's a panel ...) or restore a position on a VGA screen which they stored while being on a 4k screen. Otoh, do not forcefully position the window just because the topleft position is outside any head, this can still be desired and isn't a problem. Actually, the corner could be covered by the close button and if *only* it is onscreen the window can hardly by used or seen.
2016-06-26keep cmd menus off struts when the mouse is in itThomas Lübking1-2/+7
the mouse is likely the trigger, so the popup would cover the trigger item. The present behavior of the iconbar suggests such behavior is desired.
2016-05-28improve consistencyMathias Gumz2-9/+10
for a std::string::size_type, the right value to use is not "-1", but std::string::npos.
2016-05-28fix broken text selection for FbTk::TextBoxMathias Gumz1-1/+2
uninitialized variables cause all kind of problems.
2016-05-28harden focus cycling against client focussingThomas Lübking1-1/+15
Clients which implement a client-side modality might cause livelocks by reverting the focus to the transient (after the WM tried to put it on the leader as the transient's modality is unknown) So while cycling we revert the focus whenever it moves somewhere where we don't expect it. When done, we also focus the window that should have the focus anyway to allow the client to redistribute the focus (as we prevented it during cycling) Hall of Shame: Softmaker Freeoffice uses (only) client side modality.
2016-04-25Fix menus over a single column wideJuan Gonzalez Lopez1-3/+4
Fixes menus more than 1 column wide (such as the Placement menus for the Toolbar/Slit/Tabs) which stopped working with commit 3e4570b.
2016-04-25Allow text selectionThomas Lübking2-62/+151
FbTk::TextBox now acts like any contemporary input field ;-)
2016-04-06place transient centered on its parentThomas Lübking1-6/+9
so far, transients are simply unplaced, resulting in a static 0,0 position.