[gcalctool] Don't override space and return when display area not selected (Bug #596645)



commit 7b8efe4cd32ec0d349819baa0381c6f54ab3943f
Author: Robert Ancell <robert ancell gmail com>
Date:   Mon Feb 22 10:22:25 2010 +1100

    Don't override space and return when display area not selected (Bug #596645)

 NEWS      |    2 ++
 src/gtk.c |   17 +++++++++++++----
 2 files changed, 15 insertions(+), 4 deletions(-)
---
diff --git a/NEWS b/NEWS
index 6a7867a..74f6a59 100644
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,8 @@ Overview of changes in gcalctool 5.29.91
       separator
 
     * Make boolean operations work with zero, e.g. "0 XOR 5"
+    
+    * Don't override space and return when display area not selected (Bug #596645)
 
     * Make window non-resizable (Bug #602154)
 
diff --git a/src/gtk.c b/src/gtk.c
index 62f89f4..eab5357 100644
--- a/src/gtk.c
+++ b/src/gtk.c
@@ -1164,8 +1164,8 @@ gboolean
 main_window_key_press_cb(GtkWidget *widget, GdkEventKey *event)
 {
     int i, state;
-    const char *conversions[]       = {"-", "*", "/", "\t", NULL};
-    const char *conversion_values[] = {"â??", "Ã?", "÷", " ", };
+    const char *conversions[]       = {"-", "*", "/", NULL};
+    const char *conversion_values[] = {"â??", "Ã?", "÷", NULL };
 
     /* Only look at the modifiers we use */
     state = event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK);
@@ -1300,8 +1300,13 @@ main_window_key_press_cb(GtkWidget *widget, GdkEventKey *event)
     /* Solve */
     if ((event->keyval == GDK_Return && state == 0) ||
         (event->keyval == GDK_KP_Enter && state == 0)) {
-        do_button(FN_CALCULATE, NULL);
-        return TRUE;
+        if (gtk_widget_has_focus(X.display_item)) {
+            do_button(FN_CALCULATE, NULL);
+            return TRUE;
+        }
+        else {
+            return FALSE;
+        }
     }
 
     if (state != 0)
@@ -1338,6 +1343,10 @@ main_window_key_press_cb(GtkWidget *widget, GdkEventKey *event)
         do_button(FN_CALCULATE, NULL);
         return TRUE;
     }
+  
+    /* Don't override space - it is used in UI */
+    if (event->string[0] == ' ')
+        return FALSE;
 
     if (event->string[0] != '\0') {
         do_text(event->string);



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