Commit Graph

151 Commits

Author SHA1 Message Date
Vaxry 61a71c65ac
internal: Formatter rework (#3186) 2023-09-06 12:51:36 +02:00
vaxerski e6ca4b6eee window: check for special id matching in close_special_on_empty 2023-09-03 13:02:05 +02:00
vaxerski 5e0cf7d6a5 special: add misc:close_special_on_empty
fixes #3156
2023-09-03 13:00:06 +02:00
MightyPlaza b10cae3010
decos: groupbar mouse interaction (#3102)
* allow groupbar clicking
	modified:   src/Window.cpp
	modified:   src/Window.hpp
	modified:   src/managers/input/InputManager.cpp
	modified:   src/render/decorations/CHyprGroupBarDecoration.cpp
	modified:   src/render/decorations/CHyprGroupBarDecoration.hpp

* remove setting pos inside insertWindowToGroup()

modified:   src/Window.cpp
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp
modified:   src/managers/KeybindManager.cpp

* add group window by index and group size functions
modified:   src/Window.cpp
modified:   src/Window.hpp
modified:   src/managers/input/InputManager.cpp

* allow dragging into groupbar
modified:   src/Window.cpp
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp

* allow dragging from groupbar
modified:   src/managers/KeybindManager.cpp

* try groupbar clicking before border resize
modified:   src/managers/input/InputManager.cpp

* block grabbing groupbar on floating (crash)

remove later when crashing is fixed

modified:   src/managers/KeybindManager.cpp

* remove redundant { }
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp

* implement getWindowDecorationBox()
modified:   src/Window.cpp
modified:   src/Window.hpp
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp
modified:   src/managers/KeybindManager.cpp
modified:   src/managers/input/InputManager.cpp
modified:   src/render/decorations/CHyprDropShadowDecoration.cpp
modified:   src/render/decorations/CHyprGroupBarDecoration.cpp
modified:   src/render/decorations/IHyprWindowDecoration.cpp
modified:   src/render/decorations/IHyprWindowDecoration.hpp

* fix crash when moveoutofgroup in floating windows

also removes dragging from floating windows limitation

modified:   src/layout/IHyprLayout.cpp
modified:   src/managers/KeybindManager.cpp

* use CRegion in getWindowDecorationBox()
modified:   src/helpers/Region.cpp
modified:   src/helpers/Region.hpp
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp
modified:   src/managers/KeybindManager.cpp
modified:   src/managers/input/InputManager.cpp
modified:   src/render/decorations/IHyprWindowDecoration.cpp
modified:   src/render/decorations/IHyprWindowDecoration.hpp

* add groupbar scrolling
modified:   src/config/ConfigManager.cpp
modified:   src/managers/input/InputManager.cpp

* change name to getWindowDecorationRegion()
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp
modified:   src/managers/KeybindManager.cpp
modified:   src/managers/input/InputManager.cpp
modified:   src/render/decorations/IHyprWindowDecoration.cpp
modified:   src/render/decorations/IHyprWindowDecoration.hpp

* make dragging from group less hacky for floating
modified:   src/managers/KeybindManager.cpp
2023-08-30 17:39:22 +02:00
MightyPlaza 7155b4c266
renderer: Border improvements (#2986)
* simplify getting border size
	modified:   src/Window.cpp
	modified:   src/Window.hpp
	modified:   src/layout/DwindleLayout.cpp
	modified:   src/layout/MasterLayout.cpp
	modified:   src/render/decorations/CHyprGroupBarDecoration.cpp

* fix border damage and input box
	modified:   src/Window.cpp
	modified:   src/managers/AnimationManager.cpp

* add border size in resize_on_border box
	modified:   src/managers/input/InputManager.cpp

* simplify border (fixes possible typo)
	modified:   src/Window.cpp

* use updateSpecialRenderData()
	modified:   Window.cpp
	modified:   Window.hpp
	modified:   events/Windows.cpp
	modified:   layout/DwindleLayout.cpp
	modified:   layout/IHyprLayout.cpp
	modified:   layout/MasterLayout.cpp
	modified:   render/Renderer.cpp

* update window workspace rule data on reload
	modified:   src/config/ConfigManager.cpp

* use rounding()
	modified:   src/Window.cpp
2023-08-17 10:13:19 +02:00
Vaxry 91e28bbe9d xwayland: use a completely separate coordinate system
Use a completely separate coordinate system for XWayland. This fixes all issues with force_zero_scaling overlaps.

Fixes #2916
2023-08-15 19:15:37 +02:00
MightyPlaza c4c3b590e5
toplevel: patches group toplevel-activated (#2931)
* patches group toplevel-activated

	modified:   src/Compositor.cpp
	modified:   src/Window.cpp

* remove redundant call

	modified:   src/Compositor.cpp

* fix style
	modified:   src/Compositor.cpp
2023-08-10 20:06:39 +02:00
Vaxry cbb899740c rules: add layer and window xray rules 2023-08-09 22:03:31 +02:00
Vaxry d7209b90bb renderer: remember extents before removing a window and use them for dt
fixes #2351
2023-08-09 14:28:04 +02:00
MightyPlaza 6295cbe9cb
keybinds: Keep aspect ratio (#2907) 2023-08-08 18:52:20 +02:00
vaxerski af395a8f55 windowrules: fix opacity override 2023-07-23 16:03:59 +02:00
vaxerski 90f69782ee window: fix segfault in boundingbox 2023-07-23 16:02:35 +02:00
MightyPlaza d3bba2489d
render: Border fixes (#2781)
* Window.cpp

* layout

* CHyprGroupBarDecoration.cpp
2023-07-23 15:49:49 +02:00
vaxerski 27dd07f1b8 windowrules: improve opacity 2023-07-21 19:05:00 +02:00
MightyPlaza ca54ceff6f
groups: add use_current_group_pos (#2759) 2023-07-20 19:48:32 +02:00
vaxerski f4f0f35c5b renderer: add occlusion for back layers 2023-07-19 16:13:55 +02:00
outfoxxed 5cd5631fb2
Add bringWindowToTop function to IHyprLayout (#2747)
* Add bringWindowToTop function to IHyprLayout

* Rename `bringWindowToTop` to `requestFocusForWindow`

* Fix doc
2023-07-19 12:39:45 +02:00
vaxerski 4537860079 layout: recalculate monitor instead of window in updateDynamicRules 2023-07-18 11:49:57 +02:00
vaxerski 7f47655f60 layout: recalc window on dynamic rule update 2023-07-18 00:11:43 +02:00
vaxerski 2c7b2ad6ca windowrules: add border size rule 2023-07-18 00:11:29 +02:00
vaxerski 9f7382bca4 keybinds: add movegroupwindow 2023-07-13 17:55:25 +02:00
MightyPlaza 05047f60f4
groupbar fixes (#2630)
Fixes multiple groupbar decoration issues:

  -  togglegroup removes fullscreen to avoid to avoid weird state
 -   fixes issue where a group had multiple windows with head = true
 -   fixes issue where merging 2 groups would cause a window to have 2 groupbar decorations
  -  fixes issue where merging a group with more than 1 window into another group would make windows have no groupbar decoration
  -  fixes issue where ungrouping windows could just move them into another group on the same workspace


---------

Co-authored-by: vaxerski <43317083+vaxerski@users.noreply.github.com>
2023-07-03 12:49:56 +02:00
Vaxry 69fae18e63 damage: account for popups in getFullWindowBoundingBox 2023-06-23 13:54:01 +02:00
vaxerski c4dec4f796 internal: damage window on change group 2023-06-14 19:44:51 +02:00
memchr bca3068db2
feat: add lockactivegroup dispatcher (#2478)
* feat: add lockactivegroup dispatcher

The `lockactivewindow` dispatcher takes `lock`, `toggle` or `unlock` as arguments. When a group is locked, no window or group can be added to it, nor can it be added to another group, but the `moveintogroup` and `moveoutofgroup` dispatches are not affected.

Implementation details:

the lock is implement via `SGroupData.locked` flag (defaults to false).

The flag is only relevant to the group head, and upon the group head's succession, the flag will be passed down to the new head. Meanwhile, the old head's flag will be set to false.

The flag is set to false when a group is dismissed.

New condition checks have been added to the dwindle and master layout to check if target group is unlocked (and if the source is also a group and unlocked) before adding windows to the target group.

* refactor: `lockactivegroup dispatcher code ordering
2023-06-09 23:44:18 +02:00
Franz Berger 4afeedbd56
Fix fractional scale updates in some cases (#2447)
* fix fractional scale update in moveWorkspaceToMonitor

* fix fractional scale update in moveToWorkspace

* Revert "fix fractional scale update in moveWorkspaceToMonitor"

This reverts commit 6612197a38.

* Revert "fix fractional scale update in moveToWorkspace"

This reverts commit 75d9795a06.

* move fractional scale code to updateSurfaceOutputs

* remove duplicate check

* remove superfluous setPreferredScale()
2023-06-06 09:48:07 +02:00
Vaxry 1a4e6e6a4b window: recalc on deco remove 2023-06-05 09:49:21 +02:00
Vaxry 147e962370 deps: update wlroots 2023-06-03 12:20:28 +02:00
Vaxry e76bd43f53 rules: add nodim 2023-05-31 21:11:20 +02:00
vaxerski 0887e2ee6e window: reveal current from group on toplevel activate 2023-05-26 13:44:59 +02:00
vaxerski 1911e4262b renderer: skip rendering bottom layers on fullscreen opaque 2023-04-22 12:36:54 +01:00
vaxerski 8b3d8dc792 Format: use %lx for all addresses 2023-04-17 17:35:28 +01:00
vaxerski 287e6c4ede internal: workspace manip handling rework 2023-04-14 15:03:53 +01:00
vaxerski 70eb74c356 fractional-scale: notify all surfaces on window move 2023-04-14 01:36:07 +01:00
vaxerski c2b25f4701 swallow: move swallowed on workspace change 2023-04-02 10:24:17 +01:00
Alexander Seiler 60527ab180
Fix some typos (#1907)
Signed-off-by: Alexander Seiler <seileralex@gmail.com>
2023-03-29 23:44:25 +01:00
vaxerski d6241a3086 windows: only connect unmap when mapped 2023-03-28 20:17:47 +01:00
vaxerski 3343aac6bf feat: add forcergbx rule 2023-03-26 02:00:24 +01:00
vaxerski a3fda12ba1 window: unassign surface on unmap 2023-03-23 00:39:32 +00:00
Vaxry 788a8f7c13
internal: wrap wlr surfaces (#1822) 2023-03-20 15:00:58 +00:00
vaxerski 2ba5238b8e groups: fix moving between displays 2023-03-18 16:30:29 +00:00
vaxerski 253286669a groups: fix fullscreen behavior with groups 2023-03-10 15:19:09 +00:00
vaxerski 9c0e2bba54 Renderer: Nuke onWindowResize{start/end} 2023-03-03 13:18:44 +00:00
vaxerski 9e028d56c0 fix credentials of invalid surfaces 2023-03-03 11:17:43 +00:00
vaxerski 2187c6cf43 Allow decos to request interactivity 2023-02-28 22:32:42 +00:00
vaxerski 4b20d4f1ad Added decoration reserved area 2023-02-28 19:36:36 +00:00
vaxerski 40622a9e60 properly meld groups together 2023-02-19 22:19:40 +00:00
Vaxry e5a4c0c986
Group/Tab Rework (#1580) 2023-02-19 21:07:32 +00:00
Vaxry 1b56cc4e99
Added an Event Hook System (#1578)
* added an eventHookSystem

* Add all socket2 events to hooks
2023-02-19 20:54:53 +00:00
Ching Pei Yang c92e0c05e4
Resize on border (#1347) 2023-02-18 22:35:31 +00:00
vaxerski 61c817319f don't loop border anim on disabled 2023-02-14 17:10:17 +00:00
ozwaldorf 32d56fec97
feat: border angle animations (#1469)
Co-authored-by: vaxerski <43317083+vaxerski@users.noreply.github.com>
2023-02-01 21:06:01 +00:00
Vaxry a2ae37396f add hyprctl setprop 2023-01-24 19:05:43 +00:00
Vaxry 60b880d931
wp-fractional-scaling-v1 impl (#1373)
* Initial fractional scaling impl

* apply UV after geom calcs

* fix scaling -> scale

* meson: add fractional scale proto

Co-authored-by: Mihai Fufezan <fufexan@protonmail.com>
2023-01-20 19:44:30 +01:00
Vaxry fb2679d5ef add a focus history vec 2023-01-20 19:15:15 +01:00
Vaxry 7525818097 account for dimAround in fullboundingbox 2022-12-31 19:23:02 +01:00
Vaxry a6699ef30c added dimaround 2022-12-28 15:39:17 +01:00
vaxerski 4fd90144d1 touch up the clang format and format all files 2022-12-20 02:18:47 +00:00
Vaxry 98a4fa2b0d
Added clang format (#1239)
* clang-format stuff and format files
2022-12-16 17:17:31 +00:00
vaxerski e8b99ae13a add override to opacity rules 2022-12-11 17:15:02 +00:00
vaxerski 0948b078e1 added border gradients 2022-11-26 17:57:02 +00:00
Vaxry dcb6a0425c override force opaque rule on keybind 2022-11-23 09:55:52 +00:00
vaxerski 95047fb083 return full monitor box for fullscreen windows in idealBB 2022-11-21 23:33:53 +00:00
vaxerski f91f3d1c81 Reset callbacks on remap 2022-11-18 13:53:54 +00:00
Jef dbb6732743
apply some rules dynamically when state of window changes (#1020)
Co-authored-by: Jef Steelant <jef.steelant_ext@softathome.com>
2022-11-15 10:21:26 +00:00
vaxerski 57817f7252 Added resize transitions 2022-11-06 17:52:09 +00:00
vaxerski 22384869a6 fix unregistering avars on sethidden 2022-11-05 13:37:57 +00:00
vaxerski 206360177f Multiple animation optimization and xwayland wine fixes 2022-11-04 15:56:31 +00:00
vaxerski 34cd8b125a rework focus system to be more safe and faster 2022-10-14 20:46:32 +01:00
Felix Dick bf3f519eb7 Remove trailing whitespace. 2022-09-25 20:07:48 +02:00
Vaxry 8b46d0b5a9 simplify some local vars 2022-09-21 15:11:09 +01:00
vaxerski f2d84a7e3a guard parent in X11TransientFor 2022-09-01 10:16:23 +02:00
vaxerski 095185cfe7 guard parent in X11TransientFor 2022-09-01 10:15:55 +02:00
vaxerski 48eb2e0d6f Added window dimming 2022-08-30 12:46:17 +02:00
vaxerski 179562b646 fix dwindle groupbars 2022-08-29 19:52:35 +02:00
vaxerski 5da114477f move X11 transients to top on parent top 2022-08-28 19:47:06 +02:00
vaxerski ed2cacc5d5 fix styling in const ptrs 2022-08-27 21:37:35 +02:00
vaxerski ffaf14c19e minor damage fixes 2022-08-24 13:44:48 +02:00
Darksome f7f3446882 CCompositor::moveWindowToWorkspace -> CWindow::moveToWorkspace 2022-08-21 18:01:26 +03:00
Vaxry c043bcdee6 fixes to toplevel updates 2022-08-10 08:51:59 +02:00
Vaxry 6f137938da send enter and leave events for surfaces 2022-08-08 21:20:41 +02:00
Vaxry 793b23dbe6 fix crash in toplevel set appid 2022-08-06 21:15:50 +02:00
Vaxry 6aa448534f guard toplevel funcs 2022-08-06 21:10:37 +02:00
Vaxry 69b8568ccf better foreign toplevel protocol obedience 2022-08-06 20:57:38 +02:00
vaxerski 920fdd6bff Animation config rework 2022-07-28 13:28:43 +02:00
vaxerski 48e5bd96bc Added shadow colors animations and inactive col 2022-07-16 12:44:45 +02:00
vaxerski a4f82491b7 active opacity is now animated 2022-07-12 13:40:55 +02:00
vaxerski 6f5b8425cb fix invalidating the deque in CHyprGroupBarDeco 2022-07-05 17:31:47 +02:00
vaxerski 781526dac5 added hyprctl kill 2022-06-27 13:42:20 +02:00
vaxerski 3d48469cb4 fix decos with workspace offset 2022-06-27 00:25:37 +02:00
vaxerski 747ff3369d added drop shadows 2022-06-25 20:28:40 +02:00
vaxerski f76b9c4852 fix: ignore reserved in getWindowInDirection 2022-06-23 20:39:48 +02:00
vaxerski b1c11f3d2e consider the full bb with deco in rendering 2022-05-30 14:55:42 +02:00
vaxerski 894ae2d742 Use C++-styled pointers for decorations 2022-05-28 23:43:11 +02:00
vaxerski bdf1c16195 Added IHyprWindowDecoration and Group Bars 2022-05-28 20:46:20 +02:00
vaxerski 77d37cd72a optimization: dont damage entire window on border anim 2022-05-05 14:02:30 +02:00
vaxerski 3ebe7d7972 Added bezier curves 2022-04-23 21:47:16 +02:00
vaxerski 0147975faf New animation system 2022-04-23 14:16:02 +02:00
vaxerski 223beb8a82 Multiple focus handling changes 2022-04-02 18:57:09 +02:00
vaxerski 3ca2d3b678 fix some crashes 2022-03-30 21:18:42 +02:00