Commit graph

258 commits

Author SHA1 Message Date
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
Thomas Lübking
a2fc845d50 Next|PrevWorkspace 0 toggles former Workspace
REQUEST: 185
also PATCH 92
2016-09-04 00:09:40 +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
fbb2d16639 allow to alter button labels via fluxbox-remote
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-26 08:18:48 +02:00
Thomas Lübking
6c0565c482 add commands to toggle toolbar and slit layer
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-26 08:06:47 +02:00
Thomas Lübking
f22435d60b add support for artificial struts (per head)
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-26 08:06:47 +02:00
Thomas Lübking
bccb185cd9 reconfigTheme's on loading a new style
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-30 18:22:49 +02:00
Nephiel
1f1d43bdbf Add Resize Snap
Make windows snap to edges when resizing them, as well as when moving.
From http://darkshed.net/files/patches/fluxbox/fluxbox-resize-snap-try2.diff
2016-01-04 21:17:26 +01:00
Mathias Gumz
ab2eef4937 Add -no-slit and -no-toolbar flags
Sometimes fluxbox is used as a component of a desktop environment (
e.g., the "Lumina Desktop"). It's easier and more stable for this kind
of "users" to disable the toolbar or the slit alltogether. Why not
configure these features out? Because then they would need 2 installations
of fluxbox: One without the slit and the toolbar (and perhaps other
components) and one with them.

This implements feature request #314, at least partially.

This commit also looks bigger than it actually is: I refactored and cleaned
up classes Fluxbox and BScreen.
2015-01-22 16:28:53 +01:00
Mathias Gumz
e2dbdeeb2e Fix segfault on shutdown
There was a problem deep within how the menus were connected and when and
what gets deleted. It was clearly related to a menu which was kind of
global. In order to better understand the code flow I eliminated the
ExtraMenu code: it was used only to get the Remember-Menu into the
Window-Menu. Instead of having a singleton of the Remember-Menu and fight
against the shaky interconnections we just create a new one on demand
and delete when the menu gets deleted. Looks like this fixes the problem.

The menu code needs more love anyway.

Closes #1118
2015-01-21 22:16:19 +01:00
Mathias Gumz
b30438c311 Refactor: bundle xinerama-info together, simpler code
Part of this massive looking but simple rather simple change is a the way we
check for active Xinerama: XineramaIsActive() was used before. The docs for
XineramaQueryScreens() state that

    XineramaQueryScreens() returns NULL and sets number to
    0 if Xinerama is not active.

Sold.
2015-01-16 08:45:11 +01:00
Mathias Gumz
6d5781ce71 Refactor: move some menu-creation functions to MenuCreator
Another patch to trim down the code that needs to be part of BScreen
2015-01-16 08:39:05 +01:00
Mathias Gumz
b495878065 Reduce number of allocations for menu creation
Every time either the Slit menu or the Toolbar menu were added to the
root menu, the whole root menu was (re)created from scratch. Now we
create and remove only the menus needed.

Side effect: the position of these menus is now at the end of the root
menu and not somewhere in between. If users complaint, I' ll think about
it.
2015-01-16 08:36:49 +01:00
Mathias Gumz
bd9afcafb9 Refactor: split out menu generation from BScreen
Again, it's easier to read the code when the whole menu-generation is out of
the way.
2015-01-15 18:49:45 +01:00
Lajos Koszti
7b6dc2ad72 Allow percentage values for some Window commands 2012-04-06 14:11:16 +02:00
Pavel Labath
7525ca9f77 Remove all trace of Observers and Subjects
this marks the completion of the transition to FbTk::Signal
2011-05-10 13:00:46 +02:00
Pavel Labath
79d526b968 Convert Screen::reconfigureSig to FbTk::Signal 2011-05-10 13:00:46 +02:00
Pavel Labath
0775350fee Last round of simplification of Signal/Slot classes
- merged all the common stuff from 0,1,2,3 argument versions into one common base class
- removed ReturnType template parameter as it was instantiated with "void" everywhere and the
  current ignores the return value of the callbacks anyway
2011-05-10 13:00:45 +02:00
Pavel Labath
f7d7dfd2a8 Convert FbTk::Theme::reconfigSig and friends to the new Signal system
I removed the const versions of reconfigSig() in the process since FbTk::Signal has no const
methods anyway.
2011-05-10 13:00:45 +02:00
Mathias Gumz
be90145227 bugfix: do not warp workspaces with only one workspace 2011-04-25 11:33:20 +02:00
Mathias Gumz
745fb8e71c removed useless code 2011-03-23 18:41:48 +01:00
Mathias Gumz
767afd32f3 prepare BScreen::XineramaHeadInfo to be 'RectangleLike' 2011-03-19 15:00:34 +01:00
Mathias Gumz
81b240e976 compile fix for clang, forward declaration of FocusControl was not enough 2011-03-18 11:01:08 +01:00
Mathias Gumz
9616a676d8 renamed FbTk::XLayer to FbTk::Layer and FbTk::XLayerItem to FbTk::LayerItem 2011-02-23 22:49:27 +01:00
Mathias Gumz
ffd5f28072 removed dead code 2010-09-09 23:23:52 +02:00
Mathias Gumz
690d926ac4 introduced FbTk::BidiString
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-09-08 20:17:21 +02:00
Mark Tiefenbruck
5b07791ed4 merge menuDelay and menuDelayClose options 2008-10-12 21:55:03 -07:00
Mark Tiefenbruck
c033c201c4 remove menu modes 2008-10-04 19:49:28 -07:00
Mark Tiefenbruck
86a072e7fd remove follow models 2008-10-04 19:30:19 -07:00
Mark Tiefenbruck
e1eb5e225b remove line style resources from init file 2008-10-04 19:08:50 -07:00
Mark Tiefenbruck
ab25696328 remove rootcommand from init file 2008-10-04 18:49:00 -07:00
Henrik Kinnunen
9aee5b80cb Changed resize signal in BScreen to use the new signal system 2008-09-28 18:13:30 +02:00
Henrik Kinnunen
2fcc0fd9e7 Changed workspace area signal to use the new signal system 2008-09-28 16:00:48 +02:00
Henrik Kinnunen
f2c8868724 Merge branch 'master' of fluxbox@git.fluxbox.org:fluxbox
Conflicts:

	ChangeLog
2008-09-28 10:53:16 +02:00
Henrik Kinnunen
bcf37890b6 Change focused signal to use the new signal system 2008-09-28 10:46:49 +02:00
Mark Tiefenbruck
04a1d2a83b don't let KeyRelease events propagate to windows 2008-09-28 01:26:21 -07:00
Henrik Kinnunen
ed53f3c623 Changed icon list signal in BScreen to use the new signal system 2008-09-21 20:45:01 +02:00
Henrik Kinnunen
52e22a0304 Changed client list signal in BScreen to use the new signal system 2008-09-21 19:32:40 +02:00
Henrik Kinnunen
d05804e666 Changed background changed signal in BScreen to use the new signal system 2008-09-21 16:12:36 +02:00
Henrik Kinnunen
71674739ec Changed workspace names signal in BScreen to use the new signal system 2008-09-21 15:25:47 +02:00
Henrik Kinnunen
86819abab9 Changed current workspace signal in BScreen to use the new signal system 2008-09-21 13:44:48 +02:00
Henrik Kinnunen
2f4db57898 Changed workspace count signal in BScreen to use the new signal system. 2008-09-18 22:27:16 +02:00
Mark Tiefenbruck
de8275f688 fix some default values 2008-09-11 15:48:46 -07:00
Mark Tiefenbruck
6b391c3bea update workspace names atoms/resources when adding a new workspace
also removed unnecessary items from default init file
2008-09-08 18:50:25 -04:00
Mark Tiefenbruck
84c87a86f9 remove option to disable decorations on transient windows 2008-08-27 13:59:24 -04:00
Mark Tiefenbruck
e5c61a7279 move some frame size calculations to FbWinFrame 2008-08-15 04:24:03 -07:00
Mark Tiefenbruck
c492daf2d9 remove dithering code 2008-06-26 12:41:43 -07:00
Mark Tiefenbruck
1a54fbc67d move default window menu to ~/.fluxbox/windowmenu 2008-06-19 20:48:26 -07:00
Mark Tiefenbruck
93b0c5322a refactor menu reloading, added FbTk::AutoReloadHelper 2008-05-11 17:22:40 -07:00
Mark Tiefenbruck
85d8ac7549 more useless code 2008-05-11 09:08:14 -07:00