Changes

Jump to: navigation, search

Mouse Lock Implementation FAQ

2,744 bytes added, 14:56, 6 December 2011
Blur a window on a mochitest
5. git checkout mouselock, change to mouse lock to merge with our up to date master. <br />
6. git merge master <br />
<br /><br />
To fix a merge conflict <br />
1. git status, to see what files have an issue <br />
One problem that users can run into when trying to merge large number of files in github is the inability of renaming those files. The merge command on github have a limit to how much files can be renamed (not sure the exact limit, but I believe it is O^n limit). To increase the limit for large merge, users can re-set the upper limit with the help of the following command:
<blockquote>
<pre>git config merge.renameLimit 999999</pre>
</blockquote>
If you wish to re-set to the default limit afterwards, then do this:
<blockquote>
<pre>git config --unset merge.renameLimit</pre>
</blockquote>
 
===How do I get a Document (nsIDocument) from a Window (nsIDOMWindow)?===
 
Answer: Given aWindow, an nsIDOMWindow*
<pre>
nsCOMPtr<nsPIDOMWindow> win = do_QueryInterface(aWindow);
nsCOMPtr<nsIDocument> doc;
if (win) {
doc = do_QueryInterface(win->GetExtantDocument());
}
// doc is now an nsIDocument
</pre>
 
===How do I get from a Window (nsIDOMWindow) to a Widget (nsIWidget, nsBaseWidget, nsWindow, etc)?===
 
Answer: Given aWindow, see http://dxr.mozilla.org/mozilla/mozilla-central/toolkit/xre/nsNativeAppSupportUnix.cpp.html#l201
 
<pre>
nsCOMPtr<nsPIDOMWindow> domWindow(do_QueryInterface(aWindow));
if (!domWindow)
return NULL;
 
nsCOMPtr<nsIBaseWindow> baseWindow = do_QueryInterface(domWindow->GetDocShell());
if (!baseWindow)
return NULL;
 
nsCOMPtr<nsIWidget> widget;
baseWindow->GetMainWidget(getter_AddRefs(widget));
// widget is now your widget
</pre>
 
===How can I stack trace events in Firefox in Windows using Visual Studio?===
 
'''Answer 1:''' The answer is going to assume you know the basics of debugging on Visual Studio, like how to start debugging, step into, step out, step over, etc. If you haven't already follow the instructions on this [http://benoitgirard.wordpress.com/2011/05/27/using-visual-studio-2010-ide/ site]. You don't have to do the optional part. Make sure you build your debug version of Firefox before this. Once you've completed the tasks, find out where you want to put your break point, (use [http://mxr.mozilla.org/ mxr] or [http://dxr.mozilla.org/ dxr]), and then hit debug. When you rebuild Firefox, you won't need to do the steps all over again, your solution explorer will automatically update itself.
 
See also https://cs.senecac.on.ca/~david.humphrey/writing/debugging-firefox.html, which is old, but likely still helpful.
 
===How do I programatically set the mouse cursor position?===
 
'''Answer:''' See how SynthesizeNativeMouseEvent does it on Windows:
 
<pre>
5941 nsresult
5942 nsWindow::SynthesizeNativeMouseEvent(nsIntPoint aPoint,
5943 PRUint32 aNativeMessage,
5944 PRUint32 aModifierFlags)
5945 {
5946 RECT r;
5947 ::GetWindowRect(mWnd, &r);
5948 ::SetCursorPos(r.left + aPoint.x, r.top + aPoint.y);
5949
5950 INPUT input;
5951 memset(&input, 0, sizeof(input));
5952
5953 input.type = INPUT_MOUSE;
5954 input.mi.dwFlags = aNativeMessage;
5955 ::SendInput(1, &input, sizeof(INPUT));
5956
5957 return NS_OK;
5958 }
</pre>
 
===How do I work with Preferences in Mozilla?===
 
'''Answer:''' See https://wiki.mozilla.org/Education/Learning/Preferences
 
 
===Blur a window on a mochitest===
 
Instead of window.blur(), window.open() will blur the focused window.
1
edit

Navigation menu