Feature #587

X11 needs minimal multi monitor mode support

Added by Zbigniew Rebacz almost 7 years ago. Updated almost 7 years ago.

Status:ApprovedStart date:11/25/2013
Priority:NormalDue date:
Assignee:Miroslav Fidler% Done:

100%

Category:CtrlCoreSpent time:-
Target version:-

Description

I implemented minimal multi monitor based on the tracking position of the mouse cursor. It doesn't change Ultimate++ overall schemat and works great. Two methods are implemented: "Ctrl::GetDefaultWindowRect()" and "Ctrl::GetPrimaryWorkArea()". Of course some other methods need update as well like "TopWindow::CenterRect(Ctrl *owner)".

P.S.
This update uses Xinerama the X11 extension. If operating system does not recognize this extension Ultimate++ works normally.
Personally, I think that this patch should eliminate most of multi monitors problems on X11.

X11Gui.h Magnifier - Xinerama header (6.41 KB) Zbigniew Rebacz, 11/25/2013 09:16 PM

CtrlCore.upp - Missing Xinerama linking flag (2.39 KB) Zbigniew Rebacz, 11/26/2013 01:49 AM

X11Top.cpp Magnifier - TopWindow::CenterRect - fixed , serialization vol 2 (13.7 KB) Zbigniew Rebacz, 12/14/2013 02:38 AM

X11App.cpp Magnifier - 100% Win32 compatibility - Performance optimization (12.9 KB) Zbigniew Rebacz, 12/21/2013 02:43 AM


Related issues

Follows Bug #568: Ctrl::GetDefaultWindowRect on X11 dosen't recognize multi... Rejected 11/12/2013

History

#1 Updated by Zbigniew Rebacz almost 7 years ago

#2 Updated by Zbigniew Rebacz almost 7 years ago

I think we need to link with Xinerama...

#3 Updated by Zbigniew Rebacz almost 7 years ago

Corrigendum: Xinerama is linking by default when GTK is on. When we are using pure X11 we need to link with Xinerama...

#4 Updated by Zbigniew Rebacz almost 7 years ago

  • Status changed from Ready for QA to New
  • Assignee changed from Miroslav Fidler to Zbigniew Rebacz

I need some time to fix "TopWindow::CenterRect" method...

#5 Updated by Zbigniew Rebacz almost 7 years ago

  • % Done changed from 100 to 80

#6 Updated by Zbigniew Rebacz almost 7 years ago

  • File deleted (X11Top.cpp)

#7 Updated by Zbigniew Rebacz almost 7 years ago

  • File X11Top.cpp added
  • % Done changed from 80 to 90

#8 Updated by Zbigniew Rebacz almost 7 years ago

  • File deleted (X11App.cpp)

#9 Updated by Zbigniew Rebacz almost 7 years ago

  • File X11App.cpp added
  • Status changed from New to Ready for QA
  • Assignee changed from Zbigniew Rebacz to Miroslav Fidler
  • % Done changed from 90 to 100

Done...

P.S.
I added additional mouse detection in "TopWindow::GetDefaultWindowRect()"!

#10 Updated by Zbigniew Rebacz almost 7 years ago

  • File deleted (X11App.cpp)

#11 Updated by Zbigniew Rebacz almost 7 years ago

  • File X11App.cpp added

#12 Updated by Miroslav Fidler almost 7 years ago

  • Status changed from Ready for QA to Patch ready

#13 Updated by Zbigniew Rebacz almost 7 years ago

  • File deleted (X11App.cpp)

#14 Updated by Zbigniew Rebacz almost 7 years ago

  • File X11App.cpp added

Code refactoring...

#15 Updated by Zbigniew Rebacz almost 7 years ago

  • File deleted (X11Top.cpp)

#16 Updated by Zbigniew Rebacz almost 7 years ago

  • File X11Top.cpp added

Now, serialization supports new multi monitor mode.

Rect limit = GetPrimaryScreenArea();

insted of:

Rect limit = GetWorkArea(); // <- We can not limit to specific work area! (Because, we can have more than one!)

#17 Updated by Zbigniew Rebacz almost 7 years ago

  • File deleted (X11App.cpp)

#18 Updated by Zbigniew Rebacz almost 7 years ago

  • File X11App.cpp added

GetVirtualWorkArea is implemented under X11... (The behavior is the same as the win32 version)

#19 Updated by Zbigniew Rebacz almost 7 years ago

  • File deleted (X11Top.cpp)

#20 Updated by Zbigniew Rebacz almost 7 years ago

GetVirtualWorkArea insted of GetPrimaryScreenArea() in serialization code (The behavior is the same as the win32 version).

#21 Updated by Zbigniew Rebacz almost 7 years ago

  • Status changed from Patch ready to In Progress
  • Assignee changed from Miroslav Fidler to Zbigniew Rebacz

#22 Updated by Zbigniew Rebacz almost 7 years ago

  • File deleted (X11App.cpp)

#23 Updated by Zbigniew Rebacz almost 7 years ago

  • File X11App.cpp added
  • Status changed from In Progress to Patch ready
  • Assignee changed from Zbigniew Rebacz to Miroslav Fidler

I implemented two following methods under X11: GetPrimaryScreenArea and GetVirtualScreenArea.

#24 Updated by Zbigniew Rebacz almost 7 years ago

  • File deleted (X11App.cpp)

#25 Updated by Zbigniew Rebacz almost 7 years ago

  • File X11App.cpp added

#26 Updated by Zbigniew Rebacz almost 7 years ago

  • File deleted (X11App.cpp)

#27 Updated by Zbigniew Rebacz almost 7 years ago

  • File X11App.cpp added

#28 Updated by Zbigniew Rebacz almost 7 years ago

  • Status changed from Patch ready to In Progress
  • Assignee changed from Miroslav Fidler to Zbigniew Rebacz

#29 Updated by Zbigniew Rebacz almost 7 years ago

  • File deleted (X11App.cpp)

#30 Updated by Zbigniew Rebacz almost 7 years ago

  • File X11App.cppMagnifier added
  • Status changed from In Progress to Patch ready
  • Assignee changed from Zbigniew Rebacz to Miroslav Fidler

Achieved better performance by using static variables. Small digression: calling "XineramaQueryScreens" over and over again can be painful for real time applications!

#31 Updated by Zbigniew Rebacz almost 7 years ago

BTW, This patch is also compatible with u++ documentation.

#32 Updated by Zbigniew Rebacz almost 7 years ago

  • Status changed from Patch ready to In Progress
  • Assignee changed from Miroslav Fidler to Zbigniew Rebacz

#33 Updated by Zbigniew Rebacz almost 7 years ago

  • Status changed from In Progress to Patch ready
  • Assignee changed from Zbigniew Rebacz to Miroslav Fidler

#34 Updated by Miroslav Fidler almost 7 years ago

  • Status changed from Patch ready to Approved

Also available in: Atom PDF