From c9550d36e33d9340fedfc05e017075417a381fe6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Geulfucci?= Date: Tue, 19 May 2009 19:10:13 +0200 Subject: [PATCH] Adjust the Mouse Gestures coding style --- extensions/mouse-gestures/main.c | 385 +++++++++++++++++-------------- 1 file changed, 208 insertions(+), 177 deletions(-) diff --git a/extensions/mouse-gestures/main.c b/extensions/mouse-gestures/main.c index 3fcb0515..b7e2b251 100644 --- a/extensions/mouse-gestures/main.c +++ b/extensions/mouse-gestures/main.c @@ -13,210 +13,241 @@ #include "mouse-gestures.h" #define MOUSE_GESTURES_VERSION "0.1" -#define DEVIANCE 20 // the deviance to determine if a line is straight or not -#define MINLENGTH 50 // the minimal length of a line to be treated as a gesture +#define DEVIANCE 20 +#define MINLENGTH 50 -// #define __MOUSE_GESTURES_DEBUG__ // uncomment for debugging purposes +/* #define __MOUSE_GESTURES_DEBUG__ */ MouseGesture *gesture; -void mouse_gesture_clear(MouseGesture *g) +void mouse_gesture_clear (MouseGesture *g) { - g->start.x = 0; - g->start.y = 0; - g->middle.x = 0; - g->middle.y = 0; - g->end.x = 0; - g->end.y = 0; - g->last = MOUSE_BUTTON_UNSET; - return; + g->start.x = 0; + g->start.y = 0; + g->middle.x = 0; + g->middle.y = 0; + g->end.x = 0; + g->end.y = 0; + g->last = MOUSE_BUTTON_UNSET; } -MouseGesture* mouse_gesture_new(void) +MouseGesture* mouse_gesture_new (void) { - MouseGesture *g = g_new(MouseGesture, 1); - mouse_gesture_clear(g); - return(g); + MouseGesture *g = g_new (MouseGesture, 1); + mouse_gesture_clear (g); + + return g; } -static gboolean mouse_gestures_handle_events(GtkWidget *widget, GdkEvent *event, MidoriBrowser *browser) +static gboolean mouse_gestures_handle_events (GtkWidget *widget, + GdkEvent *event, + MidoriBrowser *browser) { - if(event->type == GDK_BUTTON_PRESS) // a button was pressed - { - if(gesture->last == MOUSE_BUTTON_UNSET) // if the gesture was previously cleaned -> new gesture -> new start coordinates + /* A button was pressed */ + if (event->type == GDK_BUTTON_PRESS) + { + /* If the gesture was previously cleaned, start a new gesture and coordinates */ + if (gesture->last == MOUSE_BUTTON_UNSET) + { + gesture->start.x = event->button.x; + gesture->start.y = event->button.y; + gesture->last = event->button.button; + } + + return TRUE; + } + else if (event->type == GDK_MOTION_NOTIFY) + { + if (gesture->last != MOUSE_BUTTON_UNSET) + { + guint x, y; + + x = event->motion.x; + y = event->motion.y; + + if ((gesture->start.x - x < DEVIANCE && gesture->start.x - x > -DEVIANCE) || + (gesture->start.y - y < DEVIANCE && gesture->start.y - y > -DEVIANCE)) + { + gesture->middle.x = x; + gesture->middle.y = y; + } + else if ((gesture->middle.x - x < DEVIANCE && gesture->middle.x - x > -DEVIANCE) || + (gesture->middle.y - y < DEVIANCE && gesture->middle.y - y > -DEVIANCE)) + { + gesture->end.x = x; + gesture->end.y = y; + } + } + + return TRUE; + } + else if (event->type == GDK_BUTTON_RELEASE) + { + /* All mouse gestures will use the middle mouse button */ + if (gesture->last == MOUSE_BUTTON_MIDDLE) + { + /* The initial horizontal move is between the bounds */ + if ((gesture->middle.x - gesture->start.x < DEVIANCE) && + (gesture->middle.x - gesture->start.x > -DEVIANCE)) + { + /* We initially moved down more than MINLENGTH pixels */ + if (gesture->middle.y > gesture->start.y + MINLENGTH) { - gesture->start.x = event->button.x; - gesture->start.y = event->button.y; - gesture->last = event->button.button; - } - return(TRUE); - } - else if(event->type == GDK_MOTION_NOTIFY) // the mouse was moved - { - if(gesture->last != MOUSE_BUTTON_UNSET) + /* Then we the final vertical move is between the bounds and + we moved right more than MINLENGTH pixels */ + if ((gesture->middle.y - gesture->end.y < DEVIANCE) && + (gesture->middle.y - gesture->end.y > -DEVIANCE) && + (gesture->end.x > gesture->middle.x + MINLENGTH)) + { + /* We moved down then right: close the tab */ + midori_browser_activate_action (browser, "TabClose"); + } + /* Then we the final vertical move is between the bounds and + we moved left more than MINLENGTH pixels */ + else if ((gesture->middle.y - gesture->end.y < DEVIANCE) && + (gesture->middle.y - gesture->end.y > -DEVIANCE) && + (gesture->end.x + MINLENGTH < gesture->middle.x)) + { + /* We moved down then left: reload */ + midori_browser_activate_action (browser, "Reload"); + } + /* The end node was never updated, we only did a vertical move */ + else if(gesture->end.y == 0 && gesture->end.x == 0) + { + /* We moved down then: create a new tab */ + midori_browser_activate_action (browser, "TabNew"); + } + } + /* We initially moved up more than MINLENGTH pixels */ + else if (gesture->middle.y + MINLENGTH < gesture->start.y) { - guint x, y; - x = event->motion.x; - y = event->motion.y; - if((gesture->start.x - x < DEVIANCE && gesture->start.x - x > -DEVIANCE) || - (gesture->start.y - y < DEVIANCE && gesture->start.y - y > -DEVIANCE)) - { - gesture->middle.x = x; - gesture->middle.y = y; - } - else if((gesture->middle.x - x < DEVIANCE && gesture->middle.x - x > -DEVIANCE) || - (gesture->middle.y - y < DEVIANCE && gesture->middle.y - y > -DEVIANCE)) - { - gesture->end.x = x; - gesture->end.y = y; - } - } - return(TRUE); - } - else if(event->type == GDK_BUTTON_RELEASE) - { - if(gesture->last == MOUSE_BUTTON_MIDDLE) // all mouse gestures will use the middle mouse button + /* The end node was never updated, we only did a vertical move */ + if (gesture->end.y == 0 && gesture->end.x == 0) + { + /* We moved up: stop */ + midori_browser_activate_action (browser, "Stop"); + } + } + } + /* The initial horizontal move is between the bounds */ + else if ((gesture->middle.y - gesture->start.y < DEVIANCE) && + (gesture->middle.y - gesture->start.y > -DEVIANCE)) + { + /* We initially moved right more than MINLENGTH pixels */ + if (gesture->middle.x > gesture->start.x + MINLENGTH) + { + /* The end node was never updated, we only did an horizontal move */ + if (gesture->end.x == 0 && gesture->end.y == 0) + { + /* We moved right: forward */ + midori_browser_activate_action (browser, "Forward"); + } + } + /* We initially moved left more than MINLENGTH pixels */ + else if (gesture->middle.x + MINLENGTH < gesture->start.x) { - // middle mouse button has been released - if(gesture->middle.x - gesture->start.x < DEVIANCE && gesture->middle.x - gesture->start.x > -DEVIANCE) - { - // StartNode to MiddleNode is a straight vertical line - if(gesture->middle.y > gesture->start.y + MINLENGTH) - { - // StartNode to MiddleNode is drawn downwards - if(gesture->middle.y - gesture->end.y < DEVIANCE && gesture->middle.y - gesture->end.y > -DEVIANCE && gesture->end.x > gesture->middle.x + MINLENGTH) - { - // MiddleNode to EndNode is a straight horizontal line (to the right) -> close tab - midori_browser_activate_action(browser, "TabClose"); - #ifdef __MOUSE_GESTURES_DEBUG__ - g_print("TabClose gesture\n"); - #endif - } - else if(gesture->middle.y - gesture->end.y < DEVIANCE && gesture->middle.y - gesture->end.y > -DEVIANCE && gesture->end.x < gesture->middle.x - MINLENGTH) - { - // MiddleNode to EndNode is a straight horizontal line (to the left) -> reload - midori_browser_activate_action(browser, "Reload"); - #ifdef __MOUSE_GESTURES_DEBUG__ - g_print("Reload gesture\n"); - #endif - } - else if(gesture->end.y == 0 && gesture->end.x == 0) - { - // no EndNode, just a vertical line -> new tab - midori_browser_activate_action(browser, "TabNew"); - #ifdef __MOUSE_GESTURES_DEBUG__ - g_print("TabNew gesture\n"); - #endif - } - } - if(gesture->middle.y < gesture->start.y - MINLENGTH) - { - // StartNode to MiddleNode is drawn upwards - if(gesture->end.y == 0 && gesture->end.x == 0) - { - // no EndNode, just a vertical line -> stop - midori_browser_activate_action(browser, "Stop"); - #ifdef __MOUSE_GESTURES_DEBUG__ - g_print("Stop gesture\n"); - #endif - } - } - } - else if(gesture->middle.y - gesture->start.y < DEVIANCE && gesture->middle.y - gesture->start.y > -DEVIANCE) - { - // Start Node to MiddleNode is a straight horizontal line - if(gesture->middle.x > gesture->start.x + MINLENGTH) - { - // the line was drawn from left to right - if(gesture->end.x == 0 && gesture->end.y == 0) - { - // we only have one horizontal line from left to right -> forward gesture - midori_browser_activate_action(browser, "Forward"); - #ifdef __MOUSE_GESTURES_DEBUG__ - g_print("Forward gesture\n"); - #endif - } - } - else if(gesture->middle.x < gesture->start.x - MINLENGTH) - { - // the line was drawn from right to left - if(gesture->end.x == 0 && gesture->end.y == 0) - { - // we only have one horizontal line from right to left -> backwards gesture - midori_browser_activate_action(browser, "Back"); - #ifdef __MOUSE_GESTURES_DEBUG__ - g_print("Back gesture\n"); - #endif - } - } - } - } - mouse_gesture_clear(gesture); // gesture finished, clear it - return(TRUE); - } - else - return(FALSE); // this event is supposed to be handled again (by someone else's code) since it was irrelevant to us + /* The end node was never updated, we only did an horizontal move */ + if (gesture->end.x == 0 && gesture->end.y == 0) + { + /* We moved left: back */ + midori_browser_activate_action (browser, "Back"); + } + } + } + } + + mouse_gesture_clear (gesture); + + return TRUE; + } + else + return FALSE; } -static void mouse_gestures_tab_cb(MidoriBrowser* browser, GtkWidget *view) // this is performed when a new tab is created +static void mouse_gestures_tab_cb (MidoriBrowser* browser, GtkWidget *view) { - g_signal_connect(view, "event", G_CALLBACK(mouse_gestures_handle_events), browser); // perform the above callback when an event from the view is received - return; + g_signal_connect (view, "event", G_CALLBACK (mouse_gestures_handle_events), browser); } -static void mouse_gestures_browser_cb(MidoriApp *app, MidoriBrowser *browser) // this is performed when ever a new window is created +static void mouse_gestures_browser_cb (MidoriApp *app, MidoriBrowser *browser) { - g_signal_connect(browser, "add-tab", G_CALLBACK(mouse_gestures_tab_cb), NULL); // connect the above callback to the "add-tab" signal of browser - return; + g_signal_connect (browser, "add-tab", G_CALLBACK (mouse_gestures_tab_cb), NULL); } -/* this is performed when the extension is deactivated. - disconnect all signal handlers, so that mouse gestures are no longer handled */ -static void mouse_gestures_deactivate(MidoriExtension *extension, MidoriApp *app) +static void mouse_gestures_deactivate (MidoriExtension *extension, MidoriApp *app) { - gulong signal_id = g_signal_handler_find(app, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, mouse_gestures_browser_cb, NULL); // get the signal handler id - if(signal_id != 0) // if that id is valid - g_signal_handler_disconnect(app, signal_id); // disconnect the signal - KatzeArray *browsers = katze_object_get_object(app, "browsers"); // get the array that contains all browsers - guint i; // our counter variable :) - for(i = 0; i < katze_array_get_length(browsers); i++) // from the first to the last browser - { - MidoriBrowser *browser = katze_array_get_nth_item(browsers, i); // get a pointer on the current browser - signal_id = g_signal_handler_find(browser, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, mouse_gestures_tab_cb, NULL); // search forthe signal handler id - if(signal_id != 0) // and if its not invalid.. - g_signal_handler_disconnect(browser, signal_id); // disconnect it - - GtkWidget *notebook = katze_object_get_object(browser, "notebook"); // get a pointer on the notebook - gint j; // another counter - for(j = 0; j < gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)); j++) // from the first to the last tab - { - GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), j); // get a pointer on the tab's view - signal_id = g_signal_handler_find(page, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, mouse_gestures_handle_events, NULL); // find the signal id of the event handler - if(signal_id != 0) // if the id is valid - g_signal_handler_disconnect(page, signal_id); // disconnect the handler - } - } - g_signal_handlers_disconnect_by_func(extension, mouse_gestures_deactivate, app); - g_free(gesture); // free the structure that contains the gesture information - return; + gulong signal_id; + KatzeArray *browsers; + guint i; + gint j; + GtkWidget *notebook; + + signal_id = + g_signal_handler_find (app, G_SIGNAL_MATCH_FUNC, + 0, 0, NULL, + mouse_gestures_browser_cb, NULL); + + if(signal_id != 0) + g_signal_handler_disconnect (app, signal_id); + + browsers = katze_object_get_object (app, "browsers"); + + for (i = 0; i < katze_array_get_length (browsers); i++) + { + MidoriBrowser *browser; + + browser = katze_array_get_nth_item (browsers, i); + + signal_id = + g_signal_handler_find (browser, G_SIGNAL_MATCH_FUNC, + 0, 0, NULL, + mouse_gestures_tab_cb, NULL); + + if (signal_id != 0) + g_signal_handler_disconnect (browser, signal_id); + + notebook = katze_object_get_object (browser, "notebook"); + + for (j = 0; j < gtk_notebook_get_n_pages (GTK_NOTEBOOK (notebook)); j++) + { + GtkWidget *page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), j); + + signal_id = + g_signal_handler_find (page, G_SIGNAL_MATCH_FUNC, + 0, 0, NULL, + mouse_gestures_handle_events, NULL); + + if (signal_id != 0) + g_signal_handler_disconnect (page, signal_id); + } + } + + g_signal_handlers_disconnect_by_func (extension, mouse_gestures_deactivate, app); + g_free (gesture); } -static void mouse_gestures_activate(MidoriExtension *extension, MidoriApp *app) // this is performed on extension-activation +static void mouse_gestures_activate (MidoriExtension *extension, MidoriApp *app) { - gesture = mouse_gesture_new(); - g_signal_connect(app, "add-browser", G_CALLBACK(mouse_gestures_browser_cb), NULL); // connect the above callback to the "add-browser" signal of app - g_signal_connect(extension, "deactivate", G_CALLBACK(mouse_gestures_deactivate), app); // connect the deactivate callback to the extension - return; + gesture = mouse_gesture_new (); + + g_signal_connect (app, "add-browser", + G_CALLBACK (mouse_gestures_browser_cb), NULL); + g_signal_connect (extension, "deactivate", + G_CALLBACK (mouse_gestures_deactivate), app); } -MidoriExtension* extension_init(void) +MidoriExtension* extension_init (void) { - MidoriExtension* extension = NULL; - extension = g_object_new(MIDORI_TYPE_EXTENSION, - "name", _("Mouse Gestures"), - "description", _("Control Midori by moving the mouse"), - "version", MOUSE_GESTURES_VERSION, - "authors", "Matthias Kruk ", NULL); - g_signal_connect(extension, "activate", G_CALLBACK(mouse_gestures_activate), NULL); // connect the callback that's executed on activation - return(extension); + MidoriExtension* extension; + + extension = g_object_new (MIDORI_TYPE_EXTENSION, + "name", _("Mouse Gestures"), + "description", _("Control Midori by moving the mouse"), + "version", MOUSE_GESTURES_VERSION, + "authors", "Matthias Kruk ", NULL); + + g_signal_connect (extension, "activate", + G_CALLBACK (mouse_gestures_activate), NULL); + + return extension; } -- 2.39.5