docking, mouse wheel can be used on the splitters to expand shrink the area

This commit is contained in:
Basile Burg 2016-05-28 19:43:24 +02:00
parent b475311688
commit 6158dd26a2
2 changed files with 124 additions and 3 deletions

View File

@ -2109,6 +2109,42 @@ object CEMainForm: TCEMainForm
end
object MenuItem79: TMenuItem
Action = actFileRunOut
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000330000003300000000000000000000000000000000000000070000
0033000000330000003300000033000000330000003300000033000000330000
00337C7C81FF7E7D7DFF0000000E00000033000000338886840060440E44B881
14FFB67E0FFFB57D0DFFB57D0CFFB67E0CFFBC7F06FF7F8188FF86878AFFA87F
2DFFA8A8ABFFAAA8A8FF52504F698A8886FF868482FF88868400AC7A14CADCC1
89FFF5F0E0FFF4EDDBFFF4EDDBFFF6EFDBFFFDF4DCFF878789FFCECDCEFF9696
98FFC6C5C6FFC7C5C5FF989695FFD1CFCEFF8B8988FF0000000AB78012FFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3E3DFFFC2C1BBFF959493FFB5B3
B4FF8D8C8CFF8D8C8BFFB6B4B3FF999796FF646260894847465BB98419FFB67E
0EFFB67F0FFFC0902EFFC08E29FFC59128FF747578FFAAA8A9FFCAC8C7FF8F8D
8EFFFFF2D2FFFFFFF5FF8F8D8DFFCBC9C9FFB0AEADFF8E8C8AFFBB871E00B984
1900B8831BEFFFFFFFFFF2E9D3FFF7EDD4FF747577FFABA9AAFFCCCACAFF9290
8FFFDCD2B9FFE9E7E2FF918F8EFFCECCCBFFB1AFAEFF8F8D8BFFBB871F00BA85
1C00B0790BD2FFFFFFFFF1E9D2FFF4EBD2FFFCF2D7FFB4AFA2FF9B9997FFBCBA
BAFF939191FF929191FFBCBABAFF9E9C9AFF6C6B699B908E8C00BB871F00BA85
1C00AA760C9BF0E4CCFFF6EFE0FFF4ECD7FFFAF2DCFF8B8A8AFFD7D6D6FF9A99
97FFD0CECEFFD0CFCFFF9C9A9AFFDBDADBFF918F8EFF94929000BB871F00BA86
1D00AD790E73EADBBBFFFAF7EEFFF6EFDEFFFCF4E2FF7B797AFF8B8A89FFD2CC
BFFFB1AFAEFFB1B1B1FFC3B28EFF939499FF8C8B8EFF8E8E8E00BB871F00BB86
1D00B07B1134DBBF88FFFFFFFFFFF7F2E5FFFAF4E6FFFEF7E9FFFFF9EAFFFFFC
EDFF767574FF777778FFF8E9CAFFAA7200A8888D99008B8E9700BB871F00BB86
1E00B882150CCCA556FFFFFFFFFFF9F6EBFFF9F5EAFFFAF6ECFFFBF7EDFFFDF9
EEFFFFFCF1FFFFFFFCFFFFFFFFFFAB7405CE0000003300000033BB871F00BB87
1E00B9831800C89E49FFFFFFFFFFFCF9F3FFFBF8F1FFFBF8F1FFFBF8F1FFFBF8
F1FFFCF9F3FFFDFBF6FFFFFFFFFFB27701FFBA851BFFBC8921FFBB871F00BB87
1F00B9851B00B27A09E5FFFFFFFFFFFFFFFFFEFEFBFFFEFEFBFFFEFEFCFFFEFE
FCFFFEFEFCFFFFFFFEFFFFFFFFFFC69941FFECDFC2FFC19234FFBB871F00BB87
1F00BA861D00B7801283E4CFA7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFE9DABAFFEEE2C9FFB67F14BFBB871F00BB87
1F00BB871E00B9841A00B67E0FEAC4973BFFC79D49FFC39538FFB37904FFB47A
07FFB47A07FFB47A08FFB57C0AFFB67F0FFFB88114FFBA851B23
}
end
object MenuItem63: TMenuItem
Action = actFileUnittest
@ -3637,6 +3673,42 @@ object CEMainForm: TCEMainForm
end
object MenuItem80: TMenuItem
Action = actFileRunOut
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000330000003300000000000000000000000000000000000000070000
0033000000330000003300000033000000330000003300000033000000330000
00337C7C81FF7E7D7DFF0000000E00000033000000338886840060440E44B881
14FFB67E0FFFB57D0DFFB57D0CFFB67E0CFFBC7F06FF7F8188FF86878AFFA87F
2DFFA8A8ABFFAAA8A8FF52504F698A8886FF868482FF88868400AC7A14CADCC1
89FFF5F0E0FFF4EDDBFFF4EDDBFFF6EFDBFFFDF4DCFF878789FFCECDCEFF9696
98FFC6C5C6FFC7C5C5FF989695FFD1CFCEFF8B8988FF0000000AB78012FFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3E3DFFFC2C1BBFF959493FFB5B3
B4FF8D8C8CFF8D8C8BFFB6B4B3FF999796FF646260894847465BB98419FFB67E
0EFFB67F0FFFC0902EFFC08E29FFC59128FF747578FFAAA8A9FFCAC8C7FF8F8D
8EFFFFF2D2FFFFFFF5FF8F8D8DFFCBC9C9FFB0AEADFF8E8C8AFFBB871E00B984
1900B8831BEFFFFFFFFFF2E9D3FFF7EDD4FF747577FFABA9AAFFCCCACAFF9290
8FFFDCD2B9FFE9E7E2FF918F8EFFCECCCBFFB1AFAEFF8F8D8BFFBB871F00BA85
1C00B0790BD2FFFFFFFFF1E9D2FFF4EBD2FFFCF2D7FFB4AFA2FF9B9997FFBCBA
BAFF939191FF929191FFBCBABAFF9E9C9AFF6C6B699B908E8C00BB871F00BA85
1C00AA760C9BF0E4CCFFF6EFE0FFF4ECD7FFFAF2DCFF8B8A8AFFD7D6D6FF9A99
97FFD0CECEFFD0CFCFFF9C9A9AFFDBDADBFF918F8EFF94929000BB871F00BA86
1D00AD790E73EADBBBFFFAF7EEFFF6EFDEFFFCF4E2FF7B797AFF8B8A89FFD2CC
BFFFB1AFAEFFB1B1B1FFC3B28EFF939499FF8C8B8EFF8E8E8E00BB871F00BB86
1D00B07B1134DBBF88FFFFFFFFFFF7F2E5FFFAF4E6FFFEF7E9FFFFF9EAFFFFFC
EDFF767574FF777778FFF8E9CAFFAA7200A8888D99008B8E9700BB871F00BB86
1E00B882150CCCA556FFFFFFFFFFF9F6EBFFF9F5EAFFFAF6ECFFFBF7EDFFFDF9
EEFFFFFCF1FFFFFFFCFFFFFFFFFFAB7405CE0000003300000033BB871F00BB87
1E00B9831800C89E49FFFFFFFFFFFCF9F3FFFBF8F1FFFBF8F1FFFBF8F1FFFBF8
F1FFFCF9F3FFFDFBF6FFFFFFFFFFB27701FFBA851BFFBC8921FFBB871F00BB87
1F00B9851B00B27A09E5FFFFFFFFFFFFFFFFFEFEFBFFFEFEFBFFFEFEFCFFFEFE
FCFFFEFEFCFFFFFFFEFFFFFFFFFFC69941FFECDFC2FFC19234FFBB871F00BB87
1F00BA861D00B7801283E4CFA7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFE9DABAFFEEE2C9FFB67F14BFBB871F00BB87
1F00BB871E00B9841A00B67E0FEAC4973BFFC79D49FFC39538FFB37904FFB47A
07FFB47A07FFB47A08FFB57C0AFFB67F0FFFB88114FFBA851B23
}
end
object MenuItem64: TMenuItem
Action = actFileUnittest

View File

@ -5,9 +5,10 @@ unit ce_main;
interface
uses
Classes, SysUtils, LazFileUtils, SynEditKeyCmds, SynHighlighterLFM, Forms, StdCtrls,
AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg, Controls, Graphics, strutils,
Dialogs, Menus, ActnList, ExtCtrls, process, XMLPropStorage, SynExportHTML,
Classes, SysUtils, LazFileUtils, SynEditKeyCmds, SynHighlighterLFM, Forms,
StdCtrls, AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg, Controls,
Graphics, strutils, Dialogs, Menus, ActnList, ExtCtrls, process,
XMLPropStorage, SynExportHTML,
ce_common, ce_dmdwrap, ce_nativeproject, ce_synmemo, ce_writableComponent,
ce_widget, ce_messages, ce_interfaces, ce_editor, ce_projinspect, ce_projconf,
ce_search, ce_miniexplorer, ce_libman, ce_libmaneditor, ce_todolist, ce_observer,
@ -18,6 +19,11 @@ type
TCEApplicationOptions = class;
TAnchorDockSplitterEx = class(TAnchorDockSplitter)
public
property OnMouseWheel;
end;
{ TCEMainForm }
TCEMainForm = class(TForm, ICEMultiDocObserver, ICEEditableShortCut, ICEProjectObserver)
actFileCompAndRun: TAction;
@ -338,6 +344,8 @@ type
procedure mruClearClick(Sender: TObject);
// layout
procedure setSplitterWheelEvent;
procedure DockSplitterMw(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
procedure LockTopWindow(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
procedure layoutMnuItemClick(sender: TObject);
procedure layoutLoadFromFile(const aFilename: string);
@ -956,6 +964,46 @@ begin
accept := GetKeyShiftState = [ssCtrl];
end;
procedure TCEMainForm.DockSplitterMw(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
offs: integer;
splt: TAnchorDockSplitter;
begin
offs := -480 div WheelDelta;
splt := TAnchorDockSplitter(sender);
splt.MoveSplitter(offs);
if splt.ResizeAnchor in [akLeft, akRight] then
Mouse.CursorPos:= Point(Mouse.CursorPos.X + offs, Mouse.CursorPos.Y)
else
Mouse.CursorPos:= Point(Mouse.CursorPos.X, Mouse.CursorPos.Y + offs);
Handled := true;
end;
//TODO-cdocking: set splitter MW event when a new widget is docked
procedure TCEMainForm.setSplitterWheelEvent;
var
i: integer;
widg: TCEWidget;
site: TControl;
anchl: TAnchorKind;
begin
for i := 0 to fWidgList.Count-1 do
begin
widg := fWidgList.widget[i];
if not widg.isDockable then continue;
for anchl in [low(anchl) .. high(anchl)] do
if GetDockSplitterOrParent(DockMaster.GetSite(widg), anchl, site) then
begin
if site is TAnchorDockHostSite then
begin
if TAnchorDockHostSite(site).BoundSplitter.isNotNil then
TAnchorDockSplitterEx(TAnchorDockHostSite(site).BoundSplitter).OnMouseWheel:=@DockSplitterMw;
end else if site is TAnchorDockSplitter then
TAnchorDockSplitterEx(TAnchorDockSplitter(site)).OnMouseWheel:=@DockSplitterMw;
end;
end;
end;
procedure TCEMainForm.InitDocking;
var
i: Integer;
@ -1240,6 +1288,7 @@ begin
fFirstShown := true;
end;
setSplitterWheelEvent;
end;
procedure TCEMainForm.FormClose(Sender: TObject; var CloseAction: TCloseAction);