Commit graph

6137 commits

Author SHA1 Message Date
Thomas Lübking
39b34a9109 fix segfault when completing ~ or .
ie. w/o any / in the given path we'll get an irregular split point and
thus out of bounds array access
2016-09-22 21:03:35 +02:00
Thomas Lübking
facb42fc35 document generic toolbar buttons 2016-09-21 20:52:14 +02:00
Thomas Lübking
c69d5afb64 show tooltips for tabs
on the run (yes sucks, sorry) fixes a bug where windows were not
activated on hovering the tab (for focus-follows-mouse policies)

REQUEST: 95

The iconbar already shows tooltips and I doubt the claim that (untabbed)
titlebars are "often" too short for the window title.
2016-09-21 20:52:14 +02:00
Thomas Lübking
bc1ad61a7d allow to drag tabs to other workspaces
We simply re-use the move code.
The major pitfall is that we must not unmap the dragged window, since it
holds a pointer grab (which will break by unmapping it, so we fail to
continue or finish the tab drag)
Instead, the window is always send to the current workspace and if
detached, all other clients in the group are send back to their original
desktop.

REQUEST: 234
2016-09-21 20:52:14 +02:00
Thomas Lübking
2678060eae implement ON_SLIT actions
On the run, make it raise on left-clicks (like the toolbar)

The enum already existed ;-)

REQUEST: 113
2016-09-21 20:52:14 +02:00
Thomas Lübking
4545f4dac8 support OnWinButton, OnMinButton & OnMaxButton
... actions in keys.
This allows to override the default behavior as well as adding actions
for the mouse wheel.
Special casing of the two "geometry" related buttons (eg. to perform
smart maximization, reverse the partial maximzation, add shading to the
min button or whatnot)
All other buttons have a rather dedicated meaning and are only really
interesting for adding mouse wheels or eg. the window menu on rmb
clicks.

Needs docu.
2016-09-21 20:46:39 +02:00
Thomas Lübking
7fd13acab1 button: export pressed state and assigned commands
latter protected only.
2016-09-21 20:46:39 +02:00
Thomas Lübking
1fc2602499 "the least oversight" #1
The fixes a permanent (sync) button grab.

Well, oversaw global buttonpresses.
Let's wait for more to come ;-)
2016-09-21 20:05:01 +02:00
Thomas Lübking
53bb2407c9 only call applySizeHints when desired
passing the "make_fit" parameter isn't sufficient to ignore constraints
2016-09-21 20:05:01 +02:00
Thomas Lübking
0c13ddc0c8 resolve handle/grip context conflict 2016-09-11 22:07:01 +02:00
Thomas Lübking
7ec5c581c1 fix window placement documentation 2016-09-11 15:30:48 +02:00
Thomas Lübking
ea466fa985 introduce autotabplacement 2016-09-11 15:26:12 +02:00
Thomas Lübking
4be68df4b5 Do not break server grabs
We have a nifty counter-based grab, so use it
2016-09-11 15:26:12 +02:00
Mathias Gumz
52c9f6257d std::auto_ptr to std::unique_ptr 2016-09-11 11:21:00 +02:00
Thomas Lübking
5fc00dee32 Improve utf-8 support
Operate on inverse iscntrl check which allows us to avoid wide character
conversions.
2016-09-11 09:56:33 +02:00
Thomas Lübking
5869f391c1 support ctrl+a for selecting all 2016-09-11 09:56:33 +02:00
Thomas Lübking
cdd6861aff Support editing utf-8 text in TextBox
aka "Flüxbøx"

βµγ, pardon,
BUG: 720
2016-09-11 09:56:33 +02:00
Thomas Lübking
2047b1a2ba document iconified title deco 2016-09-04 00:09:40 +02:00
Thomas Lübking
a2fc845d50 Next|PrevWorkspace 0 toggles former Workspace
REQUEST: 185
also PATCH 92
2016-09-04 00:09:40 +02:00
Thomas Lübking
36993a80f4 hide menus when clicking title or toolbar
BUG: 1149
2016-09-04 00:09:40 +02:00
Thomas Lübking
6c2641404a allow 4px deadzone for clicks
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-04 00:09:40 +02:00
Mathias Gumz
b93010c5e2 remove tabs 2016-09-03 20:23:06 +02:00
gaspard
c3314bd22b translation:fr_FR adding -no-slit, -no-toolbar and minor fixes 2016-09-03 20:22:26 +02:00
gaspard
9f599a1186 apply back the copyright to Fluxbox Team
these are changes from commit bf3714e124
2016-09-03 20:22:26 +02:00
gasp
96c52db689 translation:fr_FR updating $ set 9 #keys
based on C, de_DE and es_ES
2016-09-03 20:22:26 +02:00
Thomas Lübking
31e758f1f1 fix display $WPSETTER
BUG: 1031
2016-09-03 20:08:14 +02:00
Thomas Lübking
e8021e3697 handle DISPLAY :x and :x.0 idem
Patch originally provided by Francesco Poli to Debian

BUG: 1052
2016-09-03 20:08:14 +02:00
Thomas Lübking
2cfffee19b handle subdirs and symlinks in $wallpaperdir
Thanks for the base patch, kindly provided by some Anonymous coward
on the bugtracker ;-)

BUG: 1065
2016-09-03 20:08:14 +02:00
GreenLunar
db97f28e25 Update Translation.m 2016-09-03 20:05:50 +02:00
Thomas Lübking
3058861f89 indicate iconified windows in iconbar 2016-09-03 19:29:52 +02:00
Thomas Lübking
e99d940f40 do not confine transients to desktop layer
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-01 22:51:45 +02:00
Thomas Lübking
14e25f4a65 delay mouse driven tab focus by autoraise interval
REQUEST: 190
2016-09-01 22:51:45 +02:00
Thomas Lübking
3254816b6b expose and fix ActivateTabCmd
The function failed if the last event window was actually the tab.
2016-09-01 22:51:45 +02:00
Thomas Lübking
0d1b204121 re-use position sanitization for modal placement 2016-08-31 20:37:37 +02:00
Thomas Lübking
6ca6422344 introduce a 5s timeout for emacs shortcuts
The user needs to enter his chain within 5 seconds
Otherwise the chain is reset.

REQUEST: 291
2016-08-31 20:37:37 +02:00
Thomas Lübking
6c4d1123c0 Relative aligmment when changing window head
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-30 22:02:59 +02:00
Thomas Lübking
a5b5be5e09 Add "Unclutter" command
Unclutter the desktop by using the MinOverlapPlacement
for all matching windows.

REQUEST: 248
2016-08-30 22:02:59 +02:00
Thomas Lübking
8a6623040e Don't replay presses which are required f/ motions
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-30 22:02:59 +02:00
Mathias Gumz
bb013f5c75 fix compiler warning about std::auto_ptr
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-28 19:49:30 +02:00
Thomas Lübking
1e235e3f01 Grab keyboard synchronouosly to allow replays
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-27 09:36:19 +02:00
Thomas Lübking
2c66471126 Replay toolbar button events
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-27 09:36:19 +02:00
Thomas Lübking
ecdaab5edf fix titlebar ClickN handling
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-27 09:34:01 +02:00
Thomas Lübking
08ea27de38 Control OnTitlebar ./. OnWindow
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-27 09:34:01 +02:00
Thomas Lübking
a1d3065994 Search actual tab under mouse
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-27 09:34:01 +02:00
Thomas Lübking
8d88d9be17 add apps key to ignore XSizeHints
BUG: 1075
2016-08-27 08:54:26 +02:00
Thomas Lübking
3df681da2d apply size hints when applying the state
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-27 08:54:26 +02:00
Thomas Lübking
299e098f5f handle oversized windows
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-27 08:54:26 +02:00
Thomas Lübking
4304e66787 catch absurd but possible div-by-zero 2016-08-27 00:37:52 +02:00
Thomas Lübking
d4e9bb7656 emit resize signal when altering the iconbar mode
Otherwise the iconbar would be capped when showing more (eg. all instead
of iconified) windows
2016-08-27 00:37:52 +02:00
Thomas Lübking
f176c10881 Grab Server when showing or switching desktop
Should reduce exposure events, notably since the
windows are not in stack order.
2016-08-26 08:34:00 +02:00