Re: swapping button click in Evince?



2008-06-30 klockan 11:05 skrev Daniel M German:
> Well, I took the job. I am not sure this is in line with the way Evince
> would like to implement it, but it works:

I'm not sure what the way forward is (I'm not a maintainer), but thanks for
the patch anyway.

> [snip]
> The only bug I could not fix is that by default the menu shows "drag
> mode" as ON, even though its value is false. You need to toggle it twice
> to make it work. The patch contains some simple printfs to help debug
> it/trace it.
> 
> Comments? 

I've added a few comments on your patch below. Note that I've not tested
your code at all.

> Index: shell/ev-view-private.h
> ===================================================================
> --- shell/ev-view-private.h	(revision 3061)
> +++ shell/ev-view-private.h	(working copy)
> @@ -148,6 +148,7 @@
>  	int pressed_button;
>  
>  	/* Information for middle clicking and dragging around. */
> +	gboolean  drag_mode;

If Evince decides to go modal, a EV_DRAG_MODE_* enumeration would fit
better. Perhaps an "image selection" mode or other stuff will be thought of
later, so not having it as a boolean value might be better.

> Index: shell/ev-window.c
> ===================================================================
> --- shell/ev-window.c	(revision 3061)
> +++ shell/ev-window.c	(working copy)
> @@ -370,6 +370,7 @@
>  	ev_window_set_action_sensitive (ev_window, "EditRotateRight", has_pages);
>  
>          /* View menu */
> +	ev_window_set_action_sensitive (ev_window, "ViewDragMode", has_pages);

This might be the line causing "need to click twice" bug you mentioned
before.

> @@ -997,6 +998,7 @@
>  	GValue fullscreen = { 0, };
>  	GValue rotation = { 0, };
>  	GValue maximized = { 0, };
> +	GValue dragMode = { 0, };

Coding style: use drag_mode, not dragMode.

> @@ -1027,6 +1029,12 @@
>  		g_value_unset (&zoom);
>  	}
>  
> +	/* Drag mode */
> +	if (ev_metadata_manager_get (uri, "drag_mode", &dragMode, FALSE)) {
> +		ev_view_set_drag_mode (view, g_value_get_boolean (&dragMode));
> +		g_value_unset (&dragMode);
> +	}
> +

Same here, of course.

> @@ -4475,6 +4529,9 @@
>          { "ViewContinuous", EV_STOCK_VIEW_CONTINUOUS, N_("_Continuous"), NULL,
>  	  N_("Show the entire document"),
>  	  G_CALLBACK (ev_window_cmd_continuous), TRUE },
> +        { "ViewDragMode", NULL, N_("Dra_g Mode"), NULL,
> +          N_("Toggle drag mode") ,
> +	  G_CALLBACK (ev_window_cmd_drag_mode), TRUE },
>          { "ViewDual", EV_STOCK_VIEW_DUAL, N_("_Dual"), NULL,
>  	  N_("Show two pages at once"),
>  	  G_CALLBACK (ev_window_cmd_dual), FALSE },

Are you sure this is correct?

That's it for now.

  mvrgr, Wouter

-- 
:wq                                                       mail uws xs4all nl
                                                      web http://uwstopia.nl

she called out a warning :: don't ever let life pass you by       -- incubus

Attachment: signature.asc
Description: Digital signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]