# HG changeset patch # User Frank Benoit # Date 1200030396 -3600 # Node ID 2618d7245bceb5bb6002a07770e2adbd35106ef3 # Parent dfcb4aee42d4e12b237761a19a8be78dc4584756 Scrollbar diff -r dfcb4aee42d4 -r 2618d7245bce dwt/widgets/ScrollBar.d --- a/dwt/widgets/ScrollBar.d Fri Jan 11 06:21:10 2008 +0100 +++ b/dwt/widgets/ScrollBar.d Fri Jan 11 06:46:36 2008 +0100 @@ -12,18 +12,17 @@ import dwt.widgets.Control; import dwt.widgets.Scrollable; -import dwt.internal.c.gtk; +import dwt.SWT; +import dwt.graphics.Point; +import dwt.internal.gtk.OS; +import dwt.events.SelectionListener; +import dwt.events.SelectionEvent; +import dwt.widgets.Scrollable; +import dwt.widgets.Widget; +import dwt.widgets.Event; +import dwt.widgets.TypedListener; -class ScrollBar : Control { - GtkAdjustment* adjustmentHandle; - Scrollable parent; -} - -/+ -import dwt.SWT; -import dwt.internal.gtk.*; -import dwt.graphics.*; -import dwt.events.*; +import Math = tango.math.Math; /** * Instances of this class are selectable user interface @@ -88,19 +87,19 @@ * @see Scrollable#getHorizontalBar * @see Scrollable#getVerticalBar */ -public class ScrollBar extends Widget { +public class ScrollBar : Widget { Scrollable parent; - int /*long*/ adjustmentHandle; + GtkAdjustment* adjustmentHandle; int detail; - boolean dragSent; + bool dragSent; -ScrollBar () { +this () { } /** * Creates a new instance of the widget. */ -ScrollBar (Scrollable parent, int style) { +this (Scrollable parent, int style) { super (parent, checkStyle (style)); this.parent = parent; createWidget (0); @@ -140,7 +139,7 @@ */ public void addSelectionListener (SelectionListener listener) { checkWidget (); - if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); + if (listener is null) error (SWT.ERROR_NULL_ARGUMENT); TypedListener typedListener = new TypedListener (listener); addListener (SWT.Selection,typedListener); addListener (SWT.DefaultSelection,typedListener); @@ -152,7 +151,7 @@ void deregister () { super.deregister (); - if (adjustmentHandle != 0) display.removeWidget (adjustmentHandle); + if (adjustmentHandle !is null) display.removeWidget (cast(GtkWidget*)adjustmentHandle); } /** @@ -170,9 +169,9 @@ * * @see #isEnabled */ -public boolean getEnabled () { +public bool getEnabled () { checkWidget (); - if (handle != 0) return OS.GTK_WIDGET_SENSITIVE (handle); + if (handle !is null) return OS.GTK_WIDGET_SENSITIVE (handle); return true; } @@ -190,9 +189,7 @@ */ public int getIncrement () { checkWidget (); - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - return (int) adjustment.step_increment; + return cast(int)adjustmentHandle.step_increment; } /** @@ -207,9 +204,7 @@ */ public int getMaximum () { checkWidget (); - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - return (int) adjustment.upper; + return cast(int)adjustmentHandle.upper; } /** @@ -224,9 +219,7 @@ */ public int getMinimum () { checkWidget (); - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - return (int) adjustment.lower; + return cast(int)adjustmentHandle.lower; } /** @@ -243,9 +236,7 @@ */ public int getPageIncrement () { checkWidget (); - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - return (int) adjustment.page_increment; + return cast(int)adjustmentHandle.page_increment; } /** @@ -275,9 +266,7 @@ */ public int getSelection () { checkWidget (); - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - return (int) adjustment.value; + return cast(int)adjustmentHandle.value; } /** @@ -295,8 +284,8 @@ */ public Point getSize () { checkWidget (); - if (handle == 0) return new Point (0,0); - GtkRequisition requisition = new GtkRequisition (); + if (handle is null) return new Point (0,0); + GtkRequisition* requisition = new GtkRequisition (); OS.gtk_widget_size_request (handle, requisition); return new Point (requisition.width, requisition.height); } @@ -316,9 +305,7 @@ */ public int getThumb () { checkWidget (); - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - return (int) adjustment.page_size; + return cast(int)adjustmentHandle.page_size; } /** @@ -338,34 +325,34 @@ *
  • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
  • * */ -public boolean getVisible () { +public bool getVisible () { checkWidget (); - int /*long*/ scrolledHandle = parent.scrolledHandle; - int [] hsp = new int [1], vsp = new int [1]; - OS.gtk_scrolled_window_get_policy (scrolledHandle, hsp, vsp); - if ((style & SWT.HORIZONTAL) != 0) { - return hsp [0] != OS.GTK_POLICY_NEVER; + auto scrolledHandle = parent.scrolledHandle; + int hsp, vsp; + OS.gtk_scrolled_window_get_policy (cast(GtkScrolledWindow*)scrolledHandle, &hsp, &vsp); + if ((style & SWT.HORIZONTAL) !is 0) { + return hsp !is OS.GTK_POLICY_NEVER; } else { - return vsp [0] != OS.GTK_POLICY_NEVER; + return vsp !is OS.GTK_POLICY_NEVER; } } -int /*long*/ gtk_button_press_event (int /*long*/ widget, int /*long*/ eventPtr) { - int /*long*/ result = super.gtk_button_press_event (widget, eventPtr); - if (result != 0) return result; +override int /*long*/ gtk_button_press_event (GtkWidget* widget, GdkEventButton* eventPtr) { + auto result = super.gtk_button_press_event (widget, eventPtr); + if (result !is 0) return result; detail = OS.GTK_SCROLL_NONE; dragSent = false; return result; } -int /*long*/ gtk_change_value (int /*long*/ widget, int /*long*/ scroll, int /*long*/ value1, int /*long*/ value2) { - detail = (int)/*64*/scroll; +override int /*long*/ gtk_change_value (GtkWidget* widget, int /*long*/ scroll, int /*long*/ value1, int /*long*/ value2) { + detail = scroll; return 0; } -int /*long*/ gtk_value_changed (int /*long*/ adjustment) { +override int /*long*/ gtk_value_changed (int /*long*/ adjustment) { Event event = new Event (); - dragSent = detail == OS.GTK_SCROLL_JUMP; + dragSent = detail is OS.GTK_SCROLL_JUMP; switch (detail) { case OS.GTK_SCROLL_NONE: event.detail = SWT.NONE; break; case OS.GTK_SCROLL_JUMP: event.detail = SWT.DRAG; break; @@ -391,14 +378,11 @@ return 0; } -int /*long*/ gtk_event_after (int /*long*/ widget, int /*long*/ gdkEvent) { - GdkEvent gtkEvent = new GdkEvent (); - OS.memmove (gtkEvent, gdkEvent, GdkEvent.sizeof); - switch (gtkEvent.type) { +override int /*long*/ gtk_event_after (GtkWidget* widget, GdkEvent* gdkEvent) { + switch (gdkEvent.type) { case OS.GDK_BUTTON_RELEASE: { - GdkEventButton gdkEventButton = new GdkEventButton (); - OS.memmove (gdkEventButton, gdkEvent, GdkEventButton.sizeof); - if (gdkEventButton.button == 1 && detail == SWT.DRAG) { + GdkEventButton* gdkEventButton = cast(GdkEventButton*)gdkEvent; + if (gdkEventButton.button is 1 && detail is SWT.DRAG) { if (!dragSent) { Event event = new Event (); event.detail = SWT.DRAG; @@ -416,10 +400,10 @@ void hookEvents () { super.hookEvents (); - if (OS.GTK_VERSION >= OS.VERSION (2, 6, 0)) { - OS.g_signal_connect_closure (handle, OS.change_value, display.closures [CHANGE_VALUE], false); + if (OS.GTK_VERSION >= OS.buildVERSION (2, 6, 0)) { + OS.g_signal_connect_closure (handle, OS.change_value.ptr, display.closures [CHANGE_VALUE], false); } - OS.g_signal_connect_closure (adjustmentHandle, OS.value_changed, display.closures [VALUE_CHANGED], false); + OS.g_signal_connect_closure (adjustmentHandle, OS.value_changed.ptr, display.closures [VALUE_CHANGED], false); OS.g_signal_connect_closure_by_id (handle, display.signalIds [EVENT_AFTER], 0, display.closures [EVENT_AFTER], false); OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, display.closures [BUTTON_PRESS_EVENT], false); } @@ -439,7 +423,7 @@ * * @see #getEnabled */ -public boolean isEnabled () { +public bool isEnabled () { checkWidget (); return getEnabled () && getParent ().getEnabled (); } @@ -458,20 +442,20 @@ * * @see #getVisible */ -public boolean isVisible () { +public bool isVisible () { checkWidget (); return getVisible () && getParent ().isVisible (); } void register () { super.register (); - if (adjustmentHandle != 0) display.addWidget (adjustmentHandle, this); + if (adjustmentHandle !is null) display.addWidget (cast(GtkWidget*)adjustmentHandle, this); } void releaseParent () { super.releaseParent (); - if (parent.horizontalBar == this) parent.horizontalBar = null; - if (parent.verticalBar == this) parent.verticalBar = null; + if (parent.horizontalBar is this) parent.horizontalBar = null; + if (parent.verticalBar is this) parent.verticalBar = null; } void releaseWidget () { @@ -498,8 +482,8 @@ */ public void removeSelectionListener (SelectionListener listener) { checkWidget (); - if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); - if (eventTable == null) return; + if (listener is null) error (SWT.ERROR_NULL_ARGUMENT); + if (eventTable is null) return; eventTable.unhook (SWT.Selection, listener); eventTable.unhook (SWT.DefaultSelection,listener); } @@ -517,9 +501,9 @@ *
  • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
  • * */ -public void setEnabled (boolean enabled) { +public void setEnabled (bool enabled) { checkWidget (); - if (handle != 0) OS.gtk_widget_set_sensitive (handle, enabled); + if (handle !is null) OS.gtk_widget_set_sensitive (handle, enabled); } /** @@ -538,13 +522,10 @@ public void setIncrement (int value) { checkWidget (); if (value < 1) return; - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - adjustment.step_increment = (float) value; - OS.memmove (adjustmentHandle, adjustment); - OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + adjustmentHandle.step_increment = cast(float) value; + OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); OS.gtk_adjustment_changed (adjustmentHandle); - OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); } /** @@ -562,17 +543,14 @@ */ public void setMaximum (int value) { checkWidget (); - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - int minimum = (int) adjustment.lower; + int minimum = cast(int)adjustmentHandle.lower; if (value <= minimum) return; - adjustment.upper = value; - adjustment.page_size = Math.min ((int)adjustment.page_size, value - minimum); - adjustment.value = Math.min ((int)adjustment.value, (int)(value - adjustment.page_size)); - OS.memmove (adjustmentHandle, adjustment); - OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + adjustmentHandle.upper = value; + adjustmentHandle.page_size = Math.min (adjustmentHandle.page_size, value - minimum); + adjustmentHandle.value = Math.min (adjustmentHandle.value, (value - adjustmentHandle.page_size)); + OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); OS.gtk_adjustment_changed (adjustmentHandle); - OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); } /** @@ -591,17 +569,14 @@ public void setMinimum (int value) { checkWidget (); if (value < 0) return; - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - int maximum = (int) adjustment.upper; + int maximum = cast(int)adjustmentHandle.upper; if (value >= maximum) return; - adjustment.lower = value; - adjustment.page_size = Math.min ((int)adjustment.page_size, maximum - value); - adjustment.value = Math.max ((int)adjustment.value, value); - OS.memmove (adjustmentHandle, adjustment); - OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + adjustmentHandle.lower = value; + adjustmentHandle.page_size = Math.min (adjustmentHandle.page_size, maximum - value); + adjustmentHandle.value = Math.max (adjustmentHandle.value, value); + OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); OS.gtk_adjustment_changed (adjustmentHandle); - OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); } /** @@ -620,13 +595,10 @@ public void setPageIncrement (int value) { checkWidget (); if (value < 1) return; - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - adjustment.page_increment = (float) value; - OS.memmove (adjustmentHandle, adjustment); - OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + adjustmentHandle.page_increment = cast(float) value; + OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); OS.gtk_adjustment_changed (adjustmentHandle); - OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); } /** @@ -644,9 +616,9 @@ public void setSelection (int value) { checkWidget (); value = Math.min (value, getMaximum() - getThumb()); - OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); OS.gtk_adjustment_set_value (adjustmentHandle, value); - OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); } /** @@ -666,15 +638,12 @@ public void setThumb (int value) { checkWidget (); if (value < 1) return; - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - value = (int) Math.min (value, (int)(adjustment.upper - adjustment.lower)); - adjustment.page_size = (double) value; - adjustment.value = Math.min ((int)adjustment.value, (int)(adjustment.upper - value)); - OS.memmove (adjustmentHandle, adjustment); - OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + value = Math.min (value, cast(int)(adjustmentHandle.upper - adjustmentHandle.lower)); + adjustmentHandle.page_size = cast(double) value; + adjustmentHandle.value = Math.min (adjustmentHandle.value, (adjustmentHandle.upper - value)); + OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); OS.gtk_adjustment_changed (adjustmentHandle); - OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); } /** @@ -706,19 +675,16 @@ if (increment < 1) return; if (pageIncrement < 1) return; thumb = Math.min (thumb, maximum - minimum); - GtkAdjustment adjustment = new GtkAdjustment (); - OS.memmove (adjustment, adjustmentHandle); - adjustment.lower = minimum; - adjustment.upper = maximum; - adjustment.step_increment = increment; - adjustment.page_increment = pageIncrement; - adjustment.page_size = thumb; - adjustment.value = Math.min (Math.max (selection, minimum), maximum - thumb); - OS.memmove (adjustmentHandle, adjustment); - OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + adjustmentHandle.lower = minimum; + adjustmentHandle.upper = maximum; + adjustmentHandle.step_increment = increment; + adjustmentHandle.page_increment = pageIncrement; + adjustmentHandle.page_size = thumb; + adjustmentHandle.value = Math.min (Math.max (selection, minimum), maximum - thumb); + OS.g_signal_handlers_block_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); OS.gtk_adjustment_changed (adjustmentHandle); OS.gtk_adjustment_value_changed (adjustmentHandle); - OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); + OS.g_signal_handlers_unblock_matched (adjustmentHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)VALUE_CHANGED); } /** @@ -737,10 +703,9 @@ *
  • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
  • * */ -public void setVisible (boolean visible) { +public void setVisible (bool visible) { checkWidget (); parent.setScrollBarVisible (this, visible); } } -+/ \ No newline at end of file