[Thread Prev][Thread Next]   >Date Index >Thread Index

Re: [wmx] sec4 tarball.

Lasse Rasinen - Tue Feb 23 15:37:44 1999

Stefan `Sec` Zehl <sec@42.org> writes:

> I did not use the mousbutton code from sven, since I think this should
> be handled a bit differently, which I will try to do myself this week.

How about using function pointers in #defines or possibly a static array,
like this:

enum actions = {CONFIG_ROOT_BUTTON1, CONFIG_ROOT_BUTTON2, ...}:
function_t mouse_actions[] = {popupClientMenu, popupCommandMenu, 
	                      NULL, ...}

and then in Buttons.C/Border.C/somewhere else:

if (mouse_actions[CONFIG_ROOT_BUTTON1])
	mouse_actions[CONFIG_ROOT_BUTTON1]();

instead of any current functionality.

The idea would be to have a function of zero (maybe one, in case we need
some parameters thrown around) arguments to call when the button is
pressed. The if-clause would also let one disable functions by simply
setting them NULL. A smart compiler should see (if helped along with some
consts) that this if-clause is always true and can be optimized away.

Then one can also use #defines, like
#define CONFIG_ROOT_BUTTON1 popupClientMenu

and the code would be 

if (CONFIG_ROOT_BUTTON1)
        CONFIG_ROOT_BUTTON1 ();
If C(++) only had lambda ;(

This trick might have a C++-equivalent, but I'm no C++-wizard ;)

> I'm not sure about what to do with quick-key code. Shall we make the
> keys fully (easily) user-configurable, too ? or simply provide two
> defaults (sun and non-sun) and a way for the user to switch ?

I don't know about quickkeys for client and command menus, which are,
after all, themselves shortcuts for mouse stuff ;)

I think that the current keyboard model is quite good, and if you're going
to add quickkeys, I'd wish that it'd be done in such a way that those of
us who are not interested in them, wouldn't even know there are there.


Next: