Commit graph

4482 commits

Author SHA1 Message Date
Jan Sucan
625a690067 Add missing scope to a method definition 2020-04-05 10:28:08 +02:00
Gregor Bollerhey
d5902f1785 Const ref instead of const for string vector. 2020-04-05 09:57:59 +02:00
Gregor Bollerhey
d07ee244d3 Ignore case when matching window classnames. 2020-04-05 09:57:59 +02:00
Gregor Bollerhey
89dec4ff15 Corrected comment (now member and returns nothing). 2020-04-05 09:55:33 +02:00
Gregor Bollerhey
f833ff71a5 Use FbTk::StringUtils instead of own tokenizer. 2020-04-05 09:55:33 +02:00
Gregor Bollerhey
47474be46c Sort on remove isn't needed. 2020-04-05 09:50:56 +02:00
Gregor Bollerhey
b23aba180f Icon order now is property of the SystemTray.
This way it is only parsed once in the constructor. Updating the
TrayWindow order is now a method which is called once when the icon is
created.

sortClients/rearrange is now only called on adding and removing icons.
2020-04-05 09:50:20 +02:00
Gregor Bollerhey
bb0790d794 XFree must not be called with 0. 2020-04-05 09:47:18 +02:00
Gregor Bollerhey
173a66346b Thought BadWindow was a return status on failure.
In fact its 0, thats why fluxbox sometimes crashes when freeing the
malformed structure.
2020-04-05 09:47:18 +02:00
Gregor Bollerhey
07d2137024 Store order in TrayWindow instead of using expensive comperator. 2020-04-05 09:47:18 +02:00
Gregor Bollerhey
c65f2ec6fb Use XFree to free memory (not the default "delete"). 2020-04-05 09:47:18 +02:00
Gregor Bollerhey
7e762f0a97 Make systray icon pinning available.
The user options screenname.systray.pinLeft and
screenname.systray.pinRight in .fluxbox/init are read as comma sperated
list of window classnames.

While preserving the order of the lists, systray icons are sorted so
that pinLeft'ed classnames appear left and vice versa.
2020-04-05 09:47:18 +02:00
Christian Hesse
53fa0d6aac explicitly expect unsigned int
This fixes:

src/FbTk/XftFontImp.cc: In member function ‘virtual bool FbTk::XftFontImp::load(const string&)’:
src/FbTk/XftFontImp.cc:81:53: error: no matching function for call to ‘max(unsigned int, int)’
2019-08-06 14:03:30 +02:00
ryluchs17
368e2935e2
zero check now uses std::max() 2019-07-07 19:07:56 -04:00
Ryan Luchs
ad410a5c93 removed potential division by zero with size zero fonts 2019-07-06 17:44:58 -04:00
Pete Beardmore
ed7ea14167 fbtk, textbox, support horizontal padding
-add 'setPadding' function
2018-03-14 07:49:50 +01:00
Pete Beardmore
ca0995bdec fbtk, textbox, overflow selection deselection
changes the selection's deselection mechanism for oversized (e.g
larger than window width) text

new behaviour ensures the maximum selection width remains whilst
the selection length is 'oversized'. only when the selection length
has a width less than the window width will the selection (i.e. the
highlight / inverted colours) reduce in size

this is in contrast to the existing approach which would immediately
decrease an oversized selection down to nothing visually, leaving
the remainder of the selection 'off screen'. this 'looks like nothing
is selected' when in fact it is, gives a poor UX
2018-03-14 07:49:50 +01:00
Pete Beardmore
f19bb5787f fbtk, textbox, fix selection release on click 2018-03-14 07:49:50 +01:00
Pete Beardmore
3ae7b81ae1 fbtk, textbox, limit selection height to font size 2018-03-14 07:49:50 +01:00
Pete Beardmore
375e41bb37 fbtk, textbox, fix cursor position and size
-use font height for cursor
-prefer 'descent to ascent' coverage as opposed to 'baseline plus
way too high'!
2018-03-14 07:49:50 +01:00
Pete Beardmore
79ce3ef424 fbtk, textbox, fix text vertical centering 2018-03-14 07:49:50 +01:00
Maik Broemme
0df41cf838 Fix evaluating variables in ExportCmd
Don't evaluate trusted variables in *ExportCmd::parse as they will be
always false for SetEnv, Export and SetResourceValue and never executed
via fluxbox-remote.
2018-03-11 13:49:06 +01:00
Lajos Koszti
6e8bf37cc8 Rotate toolbar button on rotated toolbar
In 393ba45f91 added the possibility to
add custom buttons to the toolbar. However, if the toolbar is rotated
the buttons stays horizontal.
Update the button to rotate the text and update the width/height of the
button if rotated
2017-11-19 20:15:10 +01:00
Mark Murawski
7cb7bfaa44 Support 'vertical' Workspace warping
'Vertical' Workspace warping is a variant of the existing Workspace
warping feature: When a user drags a window to the edge of the Screen,
the window is warped to the next / previous workspace.

'Vertical' Workspace warping detects a drag towards the upper / lower
border of the screen and warps the current workspace about an 'offset'.
Example given, lets say the user has 9 workspaces and considers them to
form a 3x3 grid:

  +-+-+-+
  |1|2|3|
  +-+-+-+
  |4|5|6|
  +-+-+-+
  |7|8|9|
  +-+-+-+

An 'offset' of 3 warps from workspaces 2 to workspace 5 (or 8), when a
window is dragged to the bottom / top border.

New configuration ressources:

    session.screenN.workspacewarpingvertical: true
    session.screenN.workspacewarpingverticaloffset: X
2017-11-19 20:10:26 +01:00
Petr Vorel
bdfaaa0e17 slit: Add missing header
Signed-off-by: Petr Vorel <pvorel@suse.cz>
2017-03-01 07:50:58 +01:00
Thomas Lübking
26c1cfcc07 stop focus cycling on explicit workspace changes
Otherwise implicit focus changes by the workspace change would be
perceived as focus stealing and the focus restored to the last window on
the original desktop
2016-11-20 14:08:25 +01:00
Thomas Lübking
3d7b466e7a delay repositioning of labels
The iconbuttons delay their update to cover multiple changes, so if the
labels are repositioned early, they'll operate on dated titles

BUG: 1155

On the run, centralize the delay value in IconButton::updateLaziness()
2016-11-20 14:08:25 +01:00
Thomas Lübking
4bab7afaa4 prevent range overflow
whenever dealing with unsigned, there's better no "-" in the line ...
2016-10-09 20:25:55 +02:00
Thomas Lübking
3301e993ad Make preferredWidth max from un- and focused width
This is notably an issue if the focused font differs from the unfocused
font (eg. is bold or bigger)

Updating the value with the state leads to ugly judder (nasty when minimizing
a window through the iconbar) and not handling this causes random button
widths (depending on whether the button was focused when checking the value)
2016-10-02 15:53:24 +02:00
Thomas Lübking
a375fdb183 attempt a more fair container item squeezing
Ein Schrumpffreibetrag, faktisch schon Kommunismus ;-)

When short on space, items would be squeezed evenly, but this can turn
"a" and "a very long item with useless information text" into
"a very long item" and "", so in a pre-pass we check whether some very
large items cause the shortage and preferably squeeze them.
2016-10-02 15:53:24 +02:00
Thomas Lübking
93a91904e6 compress resize signals
typically buttons will call for this quite some, eg. when switching
workspace or (now) when altering the focused window. This compresses
various changes happening at the same time and re-layout the toolbar
only once for them
2016-10-02 15:53:24 +02:00
Thomas Lübking
7d30d0007d "the least oversight", part #2
playing with the side borders I figured that clicking them
(after ading them ;-) would freeze the pointer.

In addition harden the menu-triggering paths for slit and toolbar.
The menu will implicitly grba/release stuff, but in case it fails to
show up .... better safe than sorry.
2016-09-22 21:07:30 +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
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
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
Thomas Lübking
3058861f89 indicate iconified windows in iconbar 2016-09-03 19:29:52 +02:00