Well, the good news is that I have a working implementation of "full-
screen" mode.  It's implemented via a user-callable function called
mac-toggle-max-window.

The behavior is as follows: on a per-frame basis, when the function is
invoked, the current frame (i.e., the one that has user focus) takes
up the entire display.  There is no dock, no menu bar, no title bar or
resizing controls.  It is really *the full screen*.  Interactions with
Expose, Spaces, use of Cmd-Tab/Cmd-Tilde to switch applications/emacs
frames work just fine.  When the function is invoked while an already-
maximized frame has focus, that frame reverts to its previous position
and size.

I've also tested this with external displays being connected and
disconnected, and maximized frames are automatically un-maximized when
external displays go away.  This was done to avoid having full-screen
frames occupying so much of a lower-resolution display that none of
the controls were available.

I'd like to make this available after one more pass of code cleanup,
but I need a little help with a couple of things.

(1) Error handling.  There are a number of ways that the Carbon API
calls can fail; I haven't experienced any such failures, but I'm not
going to rely on that ;).

In particular, I'm looking for a clean way to propagate an error up to
the emacs user from within the C function; does anyone know of a way
to do this?  Just showing a string in the minibuffer that describes
the nature of the error, or raising an elisp exception (again, from C)
of some kind would be acceptable, I think.  I can silently handle the
errors, but that won't help us debug problems when M-x mac-toggle-full-
window doesn't do anything for someone.

(2) Submission mechanism.  What's the best way to get this into the
release?  This is actually the first time I've contributed to an open
source project; I assume that I can send a modified mac-
functions.patch file to someone with the appropriate repo permissions,
or obtain those permissions and submit the modified patch file
myself.  I'll look around for info on this shortly, but figured I'd
throw it out there since I had people's attention ;).

I'd like to get this out as soon as possible so people can start using
it! =)  I think it's a really handy feature for folks that live in
Emacs, or just want to be free of desktop distractions.

Cheers,

Joel

--~--~---------~--~----~------------~-------~--~----~
Carbon Emacs User Group
http://groups.google.com/group/carbon-emacs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to