aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2016-09-11Do not break server grabsThomas Lübking1-2/+2
We have a nifty counter-based grab, so use it
2016-09-11std::auto_ptr to std::unique_ptrMathias Gumz2-5/+3
2016-09-11Improve utf-8 supportThomas Lübking1-44/+41
Operate on inverse iscntrl check which allows us to avoid wide character conversions.
2016-09-11support ctrl+a for selecting allThomas Lübking1-0/+5
2016-09-11Support editing utf-8 text in TextBoxThomas Lübking5-23/+113
aka "Flüxbøx" βµγ, pardon, BUG: 720
2016-09-03Next|PrevWorkspace 0 toggles former WorkspaceThomas Lübking3-8/+18
REQUEST: 185 also PATCH 92
2016-09-03hide menus when clicking title or toolbarThomas Lübking3-1/+8
BUG: 1149
2016-09-03allow 4px deadzone for clicksThomas Lübking1-2/+11
For the shaky ones. Since this introduces a visible gap between trigger and move event, we temporarily manipulate the coordinates in the global last event what covers the outdated patch #134 REQUEST: 178
2016-09-03indicate iconified windows in iconbarThomas Lübking3-1/+33
2016-09-01do not confine transients to desktop layerThomas Lübking1-2/+4
Originally patch #170 by gregor_b Desktop stype windows will typically have their config dialogs as transients. If those are confined to the desktop layer, they're stashed behind everything else, so we don't force them there. If the transient already is in the desktop layer otherwise it's a(nother) desktop, not a dialog, and belongs to that layer, there's no need to artificially raise it. It's entirely sufficient to leave these windows untouched.
2016-09-01delay mouse driven tab focus by autoraise intervalThomas Lübking2-1/+10
REQUEST: 190
2016-09-01expose and fix ActivateTabCmdThomas Lübking2-24/+24
The function failed if the last event window was actually the tab.
2016-08-31re-use position sanitization for modal placementThomas Lübking1-5/+9
2016-08-31introduce a 5s timeout for emacs shortcutsThomas Lübking2-7/+18
The user needs to enter his chain within 5 seconds Otherwise the chain is reset. REQUEST: 291
2016-08-30Relative aligmment when changing window headThomas Lübking1-2/+15
So far, altering the head would potentially move the window out of the workspace area (by moving a far right/bottom window from a HUUUUUGE to a small screen) This preserves edge alignments (w/ topleft preference), otherwise moves the window to it's relative topleft position on the new head (ie. if it was 10% left and 3% top into the screen, it will still be)
2016-08-30Add "Unclutter" commandThomas Lübking2-0/+47
Unclutter the desktop by using the MinOverlapPlacement for all matching windows. REQUEST: 248
2016-08-30Don't replay presses which are required f/ motionsThomas Lübking1-0/+4
When trying to doAction(ButtonPress, ...), we check whether the action would hit for type==MotionNotify. In this case we do nothing but return "true" to tell the caller that this event is "for us". Otherwise the event would be replayed to the client and there'd go out MotionNotify grabs. tl;du: This fixes MoveX actions.
2016-08-28fix compiler warning about std::auto_ptrMathias Gumz26-51/+45
fluxbox uses std::unique_ptr<> where it previously used std::auto_ptr<>. C++0X was approved in 2011. among other things, it deprecates std::auto_ptr. 5 years is long enough for compilers to catch up the standard.
2016-08-27Grab keyboard synchronouosly to allow replaysThomas Lübking2-2/+5
This allows to catch if a grabbed key (combo) is actually w/o effect (because eg. the OnDesktop condition does not match) and then replay the event ungrabbed to pass it to the focused client. Just like mouse grabbing, this BEARS THE POTENTIAL TO LOCK INPUT, thus needs AS MUCH TESTING AS POSSIBLE BUG: 1137
2016-08-27Replay toolbar button eventsThomas Lübking4-3/+44
NOTICE!!!! THIS IS HIGHLY EXPERIMENTAL! The patch alters the button grab mode to GrabSync in order to ReplayPointer the event. THIS CAN FREEZE ANY INPUT TO FLUXBOX!!! The toolbar (and other things?) grab buttons in order to handle MouseN events for the entire bar, INCLUDING all child windows. This causes two problems: 1. The bar handles events which are not meant for fluxbox at all (but the systray icons) BUG: 940 2. The bar will intercept (and suck) *every* press, even if only doubleclicks are desired BUG: 949 The problem with this patch is that an oversight here has the potential to completely freeze input event processing in fluxbox (ie. the process needs to be killed from outside), SO IT NEEDS TESTING! As much as possible.
2016-08-27fix titlebar ClickN handlingThomas Lübking1-5/+9
the tabcontainer is usually true and the releases were only handled for the WINDOW context. This relies on the patch to control OnTitlebar ./. OnWindow ! BUG: 1073
2016-08-27Control OnTitlebar ./. OnWindowThomas Lübking2-7/+16
On concurrent shortcuts OnTitlebar implies OnWindow and was so far resolved to OnWindow while OnTitlebar is the more precise condition. This also requires to exclude buttons from the titlebar context, ie. pass the position to the getContext function on press events BUG: 1035 The patch depends on the patch to correctly resolve the tab under the mouse since we're now passing the actual subwindows around
2016-08-27Search actual tab under mouseThomas Lübking1-2/+10
The feature suggests to behave like this bug actually only supported mouse clicks (because the latest event window needed to be the tab) This condition will break with two future patches (OnTitlebar context selection and Sync Pointer grabbing) so the code to determine the tab client needs to be a bit more sophisticated and, as a bonus, keyboard shortcuts to activate the tab under the pointer will work as well =)
2016-08-27add apps key to ignore XSizeHintsThomas Lübking3-1/+14
BUG: 1075
2016-08-27apply size hints when applying the stateThomas Lübking1-3/+5
There's a setting about maximization which allows to control whether the resize increments should be honored when maximizing windows. This is currently used to control whether maximized windows may resize themselves via (rare) configure events, but not when maximizing windows - what's somehow not what the config item sells. BUG: 914
2016-08-27handle oversized windowsThomas Lübking1-0/+19
Clients can still be stupid (feh constrains itself to the root window ...) or lazy (llpp uses the last size - if that was in pivot mode ...) and create windows which exceed the workspace dimensions, resulting in both opposing edges being off-screen (for all tested placements) This applies partial maximization instead and resizes the (restored) window to soem sane size (size constraints applied) CCBUG: 688 CCBUG: 984
2016-08-26catch absurd but possible div-by-zeroThomas Lübking1-1/+1
2016-08-26emit resize signal when altering the iconbar modeThomas Lübking1-0/+2
Otherwise the iconbar would be capped when showing more (eg. all instead of iconified) windows
2016-08-26Grab Server when showing or switching desktopThomas Lübking2-0/+4
Should reduce exposure events, notably since the windows are not in stack order.
2016-08-26XAllowEvent's for CurrentTimeThomas Lübking1-1/+1
ML confirms that be.time seems to be dated or junk and causes permanent freezes. Seen such myself but couldn't sufficiently reproduce to pin a culprit.
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