Module: wine
Branch: master
Commit: 987309e528832cfcf3f77fc123bbe00d90017628
URL: http://source.winehq.org/git/wine.git/?a=commit;h=987309e528832cfcf3f77fc12…
Author: Ken Thomases <ken(a)codeweavers.com>
Date: Mon Sep 2 22:48:59 2013 -0500
winemac: Don't use Cocoa parent-child relationship when topmost state is enough to keep owned in front of owner.
The Cocoa parent-child relationship has undesirable side effects and bugs. In
the general case, it's the only way to maintain the z-order of owned windows
relative to their owner. But when the owner is non-topmost and an owned
window is topmost, the Cocoa window level will enforce that and we don't
need it.
---
dlls/winemac.drv/cocoa_window.m | 58 +++++++++++++++++++++++++++++++-------
1 files changed, 47 insertions(+), 11 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m
index b71d31e..7553cfc 100644
--- a/dlls/winemac.drv/cocoa_window.m
+++ b/dlls/winemac.drv/cocoa_window.m
@@ -160,6 +160,9 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
- (void) updateColorSpace;
+ - (BOOL) becameEligibleParentOrChild;
+ - (void) becameIneligibleChild;
+
@end
@@ -626,6 +629,31 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
if (self.floating != state->floating)
{
self.floating = state->floating;
+ if (state->floating)
+ {
+ // Became floating. If child of non-floating window, make that
+ // relationship latent.
+ WineWindow* parent = (WineWindow*)[self parentWindow];
+ if (parent && !parent.floating)
+ [self becameIneligibleChild];
+ }
+ else
+ {
+ // Became non-floating. If parent of floating children, make that
+ // relationship latent.
+ WineWindow* child;
+ for (child in [[[self childWindows] copy] autorelease])
+ {
+ if (child.floating)
+ [child becameIneligibleChild];
+ }
+ }
+
+ // Check our latent relationships. If floating status was the only
+ // reason they were latent, then make them active.
+ if ([self isVisible])
+ [self becameEligibleParentOrChild];
+
[[WineApplicationController sharedController] adjustWindowLevels];
}
@@ -675,7 +703,7 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
{
BOOL reordered = FALSE;
- if ([self isVisible] && (assumeVisible || [child isVisible]))
+ if ([self isVisible] && (assumeVisible || [child isVisible]) && (self.floating || !child.floating))
{
if ([self level] > [child level])
[child setLevel:[self level]];
@@ -714,12 +742,15 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
BOOL reordered = FALSE;
NSUInteger count;
- // If we aren't visible currently, we assume that we should be and soon
- // will be. So, if the latent parent is visible that's enough to assume
- // we can establish the parent-child relationship in Cocoa. That will
- // actually make us visible, which is fine.
- if ([latentParentWindow addChildWineWindow:self assumeVisible:TRUE])
- reordered = TRUE;
+ if (latentParentWindow.floating || !self.floating)
+ {
+ // If we aren't visible currently, we assume that we should be and soon
+ // will be. So, if the latent parent is visible that's enough to assume
+ // we can establish the parent-child relationship in Cocoa. That will
+ // actually make us visible, which is fine.
+ if ([latentParentWindow addChildWineWindow:self assumeVisible:TRUE])
+ reordered = TRUE;
+ }
// Here, though, we may not actually be visible yet and adding a child
// won't make us visible. The caller will have to call this method
@@ -732,7 +763,7 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
for (i = 0; i < count; i++)
{
WineWindow* child = [latentChildWindows objectAtIndex:i];
- if ([child isVisible])
+ if ([child isVisible] && (self.floating || !child.floating))
{
if (child.latentParentWindow == self)
{
@@ -754,11 +785,9 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
return reordered;
}
- - (void) becameIneligibleParentOrChild
+ - (void) becameIneligibleChild
{
WineWindow* parent = (WineWindow*)[self parentWindow];
- NSArray* childWindows = [self childWindows];
-
if (parent)
{
if (!parent->latentChildWindows)
@@ -767,6 +796,13 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
self.latentParentWindow = parent;
[parent removeChildWindow:self];
}
+ }
+
+ - (void) becameIneligibleParentOrChild
+ {
+ NSArray* childWindows = [self childWindows];
+
+ [self becameIneligibleChild];
if ([childWindows count])
{
Module: docs
Branch: master
Commit: 81555011154280813636d684211e515547f07440
URL: http://source.winehq.org/git/docs.git/?a=commit;h=81555011154280813636d6842…
Author: André Hentschel <nerv(a)dawncrow.de>
Date: Tue Sep 3 00:12:20 2013 +0200
winedev: Don't recommend a preprocessor check to comment out code.
---
en/winedev-coding.sgml | 9 ++++-----
1 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/en/winedev-coding.sgml b/en/winedev-coding.sgml
index abc7447..dc865b1 100644
--- a/en/winedev-coding.sgml
+++ b/en/winedev-coding.sgml
@@ -100,21 +100,20 @@
<listitem>
<para>
Commenting out a block of code is usually done by
- enclosing it in <command>#if 0 ... #endif</command>
- statements. For example.
+ using <command>if (0)</command>. For example:
</para>
<screen>
/* note about reason for commenting block */
-#if 0
+if (0) {
code
code /* comments */
code
-#endif
+}
</screen>
<para>
The reason for using this method is that it does not
require that you edit comments that may be inside the
- block of code.
+ block of code and it makes sure the code gets maintained.
</para>
</listitem>
<listitem>
Module: docs
Branch: master
Commit: bf8123ff496696c7312424f693791a80cf2430f5
URL: http://source.winehq.org/git/docs.git/?a=commit;h=bf8123ff496696c7312424f69…
Author: André Hentschel <nerv(a)dawncrow.de>
Date: Mon Sep 2 22:14:37 2013 +0200
winedev: Leave instructions up to the howto.
---
en/winedev-testing.sgml | 5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/en/winedev-testing.sgml b/en/winedev-testing.sgml
index f0643b2..9350f00 100644
--- a/en/winedev-testing.sgml
+++ b/en/winedev-testing.sgml
@@ -389,9 +389,8 @@ Kit</ulink>.
</para></listitem>
<listitem><para>
If you want to use the Microsoft C++ Toolkit under Wine,
- install it under Windows, then copy it to your fake C drive;
- it'll work fine there. See <ulink url="http://kegel.com/wine/cl-howto.html">CL Howto</ulink>
- for some tips on making it easy to use from the Linux command line.
+ see <ulink url="http://kegel.com/wine/cl-howto.html">CL Howto</ulink>
+ for some tips on making it easy to use it from the Linux command line.
</para></listitem>
</itemizedlist>
</para>
Module: docs
Branch: master
Commit: 75e9f01f05ea8c2bb2aecac46d0c41c6773ce645
URL: http://source.winehq.org/git/docs.git/?a=commit;h=75e9f01f05ea8c2bb2aecac46…
Author: André Hentschel <nerv(a)dawncrow.de>
Date: Mon Sep 2 22:15:18 2013 +0200
winedev: Minor updates to the windowing chapter.
---
en/winedev-windowing.sgml | 29 +++++++++++++----------------
1 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/en/winedev-windowing.sgml b/en/winedev-windowing.sgml
index 6effe48..71738bc 100644
--- a/en/winedev-windowing.sgml
+++ b/en/winedev-windowing.sgml
@@ -1,22 +1,21 @@
<chapter>
<title>Windowing system</title>
<sect1>
- <title>USER Module</title>
+ <title>USER32 Module</title>
<para>
- USER implements windowing and messaging subsystems. It also
+ USER32 implements windowing and messaging subsystems. It also
contains code for common controls and for other
miscellaneous stuff (rectangles, clipboard, WNet, etc).
- Wine USER code is located in <filename class="directory">windows/</filename>,
- <filename class="directory">controls/</filename>, and
- <filename class="directory">misc/</filename> directories.
+ Wine USER32 code is located in the
+ <filename class="directory">dlls/user32/</filename> directory.
</para>
<sect2>
<title>Windowing subsystem</title>
- <para><filename>windows/win.c</filename></para>
- <para><filename>windows/winpos.c</filename></para>
+ <para><filename>dlls/user32/win.c</filename></para>
+ <para><filename>dlls/user32/winpos.c</filename></para>
<para>
Windows are arranged into parent/child hierarchy with one
common ancestor for all windows (desktop window). Each
@@ -74,7 +73,7 @@ child1->popup->child2->child3->wnd1->child4->wnd2->desktop.
</para>
<para>
All these issues are dealt with (or supposed to be) in
- <filename>windows/winpos.c</filename> with
+ <filename>dlls/user32/winpos.c</filename> with
<function>SetWindowPos()</function> being the primary
interface to the window manager.
</para>
@@ -91,11 +90,10 @@ child1->popup->child2->child3->wnd1->child4->wnd2->desktop.
<sect3>
<title>Visible region, clipping region and update region</title>
-
- <para><filename>windows/dce.c</filename></para>
- <para><filename>windows/winpos.c</filename></para>
- <para><filename>windows/painting.c</filename></para>
-
+
+ <para><filename>dlls/user32/winpos.c</filename></para>
+ <para><filename>dlls/user32/painting.c</filename></para>
+
<screen>
________________________
|_________ | A and B are child windows of C
@@ -199,8 +197,7 @@ child1->popup->child2->child3->wnd1->child4->wnd2->desktop.
<sect2>
<title>Messaging subsystem</title>
- <para><filename>windows/queue.c</filename></para>
- <para><filename>windows/message.c</filename></para>
+ <para><filename>dlls/user32/message.c</filename></para>
<para>
Each Windows task/thread has its own message queue - this
@@ -238,7 +235,7 @@ child1->popup->child2->child3->wnd1->child4->wnd2->desktop.
messages, then for hardware messages, then it checks if
the queue has the <quote>dirty window</quote> bit set, and, finally, it
checks for expired timers. See
- <filename>windows/message.c</filename>.
+ <filename>dlls/user32/message.c</filename>.
</para>
<para>
From all these different types of messages, only posted
Module: docs
Branch: master
Commit: affa3314584cbdc9010a770168810df7cfac19a3
URL: http://source.winehq.org/git/docs.git/?a=commit;h=affa3314584cbdc9010a77016…
Author: André Hentschel <nerv(a)dawncrow.de>
Date: Mon Sep 2 22:14:14 2013 +0200
winedev: Recommend MinGW-w64.
---
en/winedev-testing.sgml | 22 +++++++++++-----------
1 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/en/winedev-testing.sgml b/en/winedev-testing.sgml
index c6e00ab..f0643b2 100644
--- a/en/winedev-testing.sgml
+++ b/en/winedev-testing.sgml
@@ -181,11 +181,11 @@
<sect1 id="cross-compiling-tests">
- <title>Cross-compiling the tests with MinGW</title>
+ <title>Cross-compiling the tests with MinGW-w64</title>
<sect2>
- <title>Setup of the MinGW cross-compiling environment</title>
+ <title>Setup of the MinGW-w64 cross-compiling environment</title>
<para>
- Here are some instructions to setup MinGW on different Linux
+ Here are some instructions to setup MinGW-w64 on different Linux
distributions and *BSD.
</para>
<sect3>
@@ -195,7 +195,7 @@
The following step should probably work on any deb based system.
</para>
<para>
- Run <userinput>apt-get install mingw32</userinput>.
+ Run <userinput>apt-get install mingw-w64</userinput>.
</para>
</sect3>
<sect3>
@@ -206,13 +206,13 @@
The following step should probably work on any rpm based system.
</para>
<para>
- Run <userinput>yum install mingw32-gcc</userinput>.
+ Run <userinput>yum install mingw64-gcc</userinput>.
</para>
</sect3>
<sect3>
<title>*BSD</title>
<para>
- The *BSD systems have in their ports collection a port for the
+ The *BSD systems have in their ports collection only a port for the
MinGW cross-compiling environment. Please see the documentation
of your system about how to build and install a port.
</para>
@@ -341,13 +341,13 @@ Kit</ulink>.
</itemizedlist>
</sect2>
<sect2>
- <title>With MinGW</title>
+ <title>With MinGW-w64</title>
<para>
- Wine build system already has support for building tests with a MinGW
- cross-compiler. See the section above called <quote>Setup of the MinGW
+ Wine build system already has support for building tests with a MinGW-w64
+ cross-compiler. See the section above called <quote>Setup of the MinGW-w64
cross-compiling environment</quote> for instructions on how to set things up.
- When you have a MinGW environment installed all you need to do is rerun
- configure and it should detect the MinGW compiler and tools. Then run
+ When you have a MinGW-w64 environment installed all you need to do is rerun
+ configure and it should detect the MinGW-w64 compiler and tools. Then run
<command>make crosstest</command> to start building the tests.
</para>
</sect2>