summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnatoly Spektor <aspektor@redhat.com>2012-12-04 12:43:50 -0500
committerAnatoly Spektor <aspektor@redhat.com>2012-12-04 12:43:50 -0500
commit6d99e84d2b1da618b81bbdb39af11e5759decec6 (patch)
tree58be3efa72f725b8d8fdb0645ae7e65892b53d74
parent59a46137c56ade530b663616c915c84de7040195 (diff)
downloadeclipse.platform.swt-6d99e84d2b1da618b81bbdb39af11e5759decec6.tar.gz
eclipse.platform.swt-6d99e84d2b1da618b81bbdb39af11e5759decec6.tar.xz
eclipse.platform.swt-6d99e84d2b1da618b81bbdb39af11e5759decec6.zip
SWT.ARROW_UP and SWT.ARROW_DOWN are recognized with SWT.TIME
In this iteration I have rewritten buttonClicked function, arrows work fine with SWT.TIME, but does not work with SWT.DATE yet
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java66
1 files changed, 37 insertions, 29 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java
index a835a67bea..b9536cdc83 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java
@@ -768,7 +768,7 @@ void hookEvents () {
OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, display.closures [BUTTON_PRESS_EVENT_INVERSE], true);
OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_RELEASE_EVENT], 0, display.closures [BUTTON_RELEASE_EVENT_INVERSE], true);
OS.g_signal_connect_closure_by_id (handle, display.signalIds [MOTION_NOTIFY_EVENT], 0, display.closures [MOTION_NOTIFY_EVENT_INVERSE], true);
-// OS.g_signal_connect_closure (handle, OS.input, display.closures [INPUT], false);
+// OS.g_signal_connect_closure (handle, OS.input, display.closures [INPUT], true);
OS.g_signal_connect_closure (handle, OS.output, display.closures [OUTPUT], false);
/* Connect the event_after signal for both key and mouse */
if (handle != focusHandle ()) {
@@ -1690,32 +1690,43 @@ void register () {
* This method compares two values and determines if Up or down arrow was called.
*/
long /*int*/ gtk_output (long /*int*/ widget) {
- int change = buttonClick(widget);
- switch (change) {
+
+ int arrowType = getArrow(widget);
+ switch (arrowType) {
case SWT.ARROW_UP:
- // Call increment function
-// commitCurrentSpinField();
-// incrementSpinField(+1);
- System.out.println("+");
+ commitCurrentSpinField();
+ incrementSpinField(+1);
break;
case SWT.ARROW_DOWN:
- // Call decrement function
-// commitCurrentSpinField();
-// incrementSpinField(-1);
- System.out.println("+");
+ commitCurrentSpinField();
+ incrementSpinField(-1);
break;
}
return 1;
}
-int buttonClick (long /*int*/ widget) {
- double new_value = OS.gtk_adjustment_get_value(OS.gtk_spin_button_get_adjustment(widget));
- int change = new_value > adj_value ? SWT.ARROW_UP : SWT.ARROW_DOWN;
- if (adj_value != new_value) {
- adj_value = OS.gtk_adjustment_get_value(OS.gtk_spin_button_get_adjustment(widget));
- return change;
- }
- return 0;
+int getArrow (long /*int*/ widget) {
+
+ int adj_value = (int) OS.gtk_adjustment_get_value(OS.gtk_spin_button_get_adjustment(handle));
+ int new_value = 0;
+ if ((style & SWT.DATE) != 0) {
+ new_value = day;
+ } else if ((style & SWT.TIME) != 0) {
+ // as getHours() has 24h format but spinner 12h format, new_value needs to be converted to 12h format
+ if (getHours() > 12 ){
+ new_value = getHours() - 12;
+ } else {
+ new_value = getHours();
+ }
+ }
+ // as getHours() has 24h format but spinner 12h format, new_value needs to be converted to 12h format
+ if (new_value == 0){
+ new_value = 12;
+ }
+ if ( adj_value == new_value)
+ return 0;
+
+ return adj_value > new_value ? SWT.ARROW_UP : SWT.ARROW_DOWN;
}
/**
@@ -1725,8 +1736,6 @@ void createSpinHandle () {
long /*int*/ adjustment = 0;
if ((style & SWT.TIME) != 0){
adjustment = OS.gtk_adjustment_new (10, 0, 60, 1, 10, 0);
- } else {
- adjustment = OS.gtk_adjustment_new (day, 1, 31, 1, 0, characterCount);
}
handle = OS.gtk_spin_button_new(adjustment, 1, 0);
OS.gtk_spin_button_set_numeric (handle, false);
@@ -1858,8 +1867,6 @@ Point getSelection () {
start[0] = (int)/*64*/OS.g_utf8_offset_to_utf16_offset (ptr, start[0]);
end[0] = (int)/*64*/OS.g_utf8_offset_to_utf16_offset (ptr, end[0]);
selection = new Point (start [0], end [0]);
-// selection.x = untranslateOffset (selection.x);
-// selection.y = untranslateOffset (selection.y);
return selection;
}
@@ -1977,22 +1984,23 @@ void setSpinTextField(int fieldName, int value, boolean commit, boolean adjust)
long /*int*/ gtk_button_press_event (long /*int*/ widget, long /*int*/ event) {
GdkEventButton gdkEvent = new GdkEventButton ();
OS.memmove (gdkEvent, event, GdkEventButton.sizeof);
- onSpinTextMouseClick(gdkEvent, widget);
- return 1;
+ if (gdkEvent.type == OS.GDK_BUTTON_PRESS && gdkEvent.button == 1) {
+ onSpinTextMouseClick(gdkEvent);
+ return gtk_button_press_event(widget, event, false);
+ }
+ return super.gtk_button_press_event (widget, event);
}
-int onSpinTextMouseClick(GdkEventButton event, long /*int*/ widget) {
- if (event.button != 1) return 0;
+void onSpinTextMouseClick(GdkEventButton event) {
+ if (event.button != 1) return;
Point sel = getSelection();
for (int i = 0; i < fieldCount; i++) {
- System.out.println(sel.x);
if (sel.x >= fieldIndices[i].x && sel.x <= fieldIndices[i].y) {
currentField = i;
break;
}
}
selectSpinField(currentField);
- return 1;
}