comparison dwt/widgets/Control.d @ 37:c86fc3d50cfa

Decorations
author Frank Benoit <benoit@tionex.de>
date Thu, 10 Jan 2008 05:17:47 +0100
parents 27324bbbac70
children 6e625fa1612d
comparison
equal deleted inserted replaced
36:f0cac58ac62b 37:c86fc3d50cfa
2348 public bool getVisible () { 2348 public bool getVisible () {
2349 checkWidget(); 2349 checkWidget();
2350 return (state & HIDDEN) is 0; 2350 return (state & HIDDEN) is 0;
2351 } 2351 }
2352 2352
2353 int /*long*/ gtk_button_press_event (GtkWidget* widget, GdkEventButton* event) { 2353 override int /*long*/ gtk_button_press_event (GtkWidget* widget, GdkEventButton* event) {
2354 GdkEventButton* gdkEvent = new GdkEventButton (); 2354 GdkEventButton* gdkEvent = new GdkEventButton ();
2355 memmove (gdkEvent, event, GdkEventButton.sizeof); 2355 memmove (gdkEvent, event, GdkEventButton.sizeof);
2356 if (gdkEvent.type is OS.GDK_3BUTTON_PRESS) return 0; 2356 if (gdkEvent.type is OS.GDK_3BUTTON_PRESS) return 0;
2357 /* 2357 /*
2358 * When a shell is created with SWT.ON_TOP and SWT.NO_FOCUS, 2358 * When a shell is created with SWT.ON_TOP and SWT.NO_FOCUS,
2412 } 2412 }
2413 if (!shell.isDisposed ()) shell.setActiveControl (this); 2413 if (!shell.isDisposed ()) shell.setActiveControl (this);
2414 return result; 2414 return result;
2415 } 2415 }
2416 2416
2417 int /*long*/ gtk_button_release_event (GtkWidget* widget, GdkEventButton* event) { 2417 override int /*long*/ gtk_button_release_event (GtkWidget* widget, GdkEventButton* event) {
2418 GdkEventButton* gdkEvent = new GdkEventButton (); 2418 GdkEventButton* gdkEvent = new GdkEventButton ();
2419 memmove (gdkEvent, event, GdkEventButton.sizeof); 2419 memmove (gdkEvent, event, GdkEventButton.sizeof);
2420 /* 2420 /*
2421 * Feature in GTK. When button 4, 5, 6, or 7 is released, GTK 2421 * Feature in GTK. When button 4, 5, 6, or 7 is released, GTK
2422 * does not deliver a corresponding GTK event. Button 6 and 7 2422 * does not deliver a corresponding GTK event. Button 6 and 7
2431 case -7: button = 5; break; 2431 case -7: button = 5; break;
2432 } 2432 }
2433 return sendMouseEvent (SWT.MouseUp, button, display.clickCount, 0, false, gdkEvent.time, gdkEvent.x_root, gdkEvent.y_root, false, gdkEvent.state) ? 0 : 1; 2433 return sendMouseEvent (SWT.MouseUp, button, display.clickCount, 0, false, gdkEvent.time, gdkEvent.x_root, gdkEvent.y_root, false, gdkEvent.state) ? 0 : 1;
2434 } 2434 }
2435 2435
2436 int /*long*/ gtk_commit (GtkIMContext* imcontext, char* text) { 2436 override int /*long*/ gtk_commit (GtkIMContext* imcontext, char* text) {
2437 char [] chars = fromUtf8z( text ); 2437 char [] chars = fromUtf8z( text );
2438 if (chars.length is 0) return 0; 2438 if (chars.length is 0) return 0;
2439 sendIMKeyEvent (SWT.KeyDown, null, chars); 2439 sendIMKeyEvent (SWT.KeyDown, null, chars);
2440 return 0; 2440 return 0;
2441 } 2441 }
2442 2442
2443 int /*long*/ gtk_enter_notify_event (GtkWidget* widget, GdkEventCrossing* event) { 2443 override int /*long*/ gtk_enter_notify_event (GtkWidget* widget, GdkEventCrossing* event) {
2444 if (display.currentControl is this) return 0; 2444 if (display.currentControl is this) return 0;
2445 GdkEventCrossing* gdkEvent = new GdkEventCrossing (); 2445 GdkEventCrossing* gdkEvent = new GdkEventCrossing ();
2446 memmove (gdkEvent, event, GdkEventCrossing.sizeof); 2446 memmove (gdkEvent, event, GdkEventCrossing.sizeof);
2447 if (gdkEvent.mode !is OS.GDK_CROSSING_NORMAL && gdkEvent.mode !is OS.GDK_CROSSING_UNGRAB) return 0; 2447 if (gdkEvent.mode !is OS.GDK_CROSSING_NORMAL && gdkEvent.mode !is OS.GDK_CROSSING_UNGRAB) return 0;
2448 if ((gdkEvent.state & (OS.GDK_BUTTON1_MASK | OS.GDK_BUTTON2_MASK | OS.GDK_BUTTON3_MASK)) !is 0) return 0; 2448 if ((gdkEvent.state & (OS.GDK_BUTTON1_MASK | OS.GDK_BUTTON2_MASK | OS.GDK_BUTTON3_MASK)) !is 0) return 0;
2455 return sendMouseEvent (SWT.MouseEnter, 0, gdkEvent.time, gdkEvent.x_root, gdkEvent.y_root, false, gdkEvent.state) ? 0 : 1; 2455 return sendMouseEvent (SWT.MouseEnter, 0, gdkEvent.time, gdkEvent.x_root, gdkEvent.y_root, false, gdkEvent.state) ? 0 : 1;
2456 } 2456 }
2457 return 0; 2457 return 0;
2458 } 2458 }
2459 2459
2460 int /*long*/ gtk_event_after (GtkWidget* widget, GdkEvent* gdkEvent) { 2460 override int /*long*/ gtk_event_after (GtkWidget* widget, GdkEvent* gdkEvent) {
2461 GdkEvent* event = new GdkEvent (); 2461 GdkEvent* event = new GdkEvent ();
2462 memmove (event, gdkEvent, GdkEvent.sizeof); 2462 memmove (event, gdkEvent, GdkEvent.sizeof);
2463 switch (cast(int)event.type) { 2463 switch (cast(int)event.type) {
2464 case OS.GDK_BUTTON_PRESS: { 2464 case OS.GDK_BUTTON_PRESS: {
2465 if (widget !is eventHandle ()) break; 2465 if (widget !is eventHandle ()) break;
2511 } 2511 }
2512 } 2512 }
2513 return 0; 2513 return 0;
2514 } 2514 }
2515 2515
2516 int /*long*/ gtk_expose_event (GtkWidget* widget, GdkEventExpose* eventPtr) { 2516 override int /*long*/ gtk_expose_event (GtkWidget* widget, GdkEventExpose* eventPtr) {
2517 if ((state & OBSCURED) !is 0) return 0; 2517 if ((state & OBSCURED) !is 0) return 0;
2518 if (!hooks (SWT.Paint) && !filters (SWT.Paint)) return 0; 2518 if (!hooks (SWT.Paint) && !filters (SWT.Paint)) return 0;
2519 GdkEventExpose* gdkEvent = new GdkEventExpose (); 2519 GdkEventExpose* gdkEvent = new GdkEventExpose ();
2520 memmove(gdkEvent, eventPtr, GdkEventExpose.sizeof); 2520 memmove(gdkEvent, eventPtr, GdkEventExpose.sizeof);
2521 Event event = new Event (); 2521 Event event = new Event ();
2532 gc.dispose (); 2532 gc.dispose ();
2533 event.gc = null; 2533 event.gc = null;
2534 return 0; 2534 return 0;
2535 } 2535 }
2536 2536
2537 int /*long*/ gtk_focus (GtkWidget* widget, int /*long*/ directionType) { 2537 override int /*long*/ gtk_focus (GtkWidget* widget, GdkEventFocus* directionType) {
2538 /* Stop GTK traversal for every widget */ 2538 /* Stop GTK traversal for every widget */
2539 return 1; 2539 return 1;
2540 } 2540 }
2541 2541
2542 int /*long*/ gtk_focus_in_event (GtkWidget* widget, int /*long*/ event) { 2542 override int /*long*/ gtk_focus_in_event (GtkWidget* widget, GdkEventFocus* event) {
2543 // widget could be disposed at this point 2543 // widget could be disposed at this point
2544 if (handle !is null) { 2544 if (handle !is null) {
2545 Control oldControl = display.imControl; 2545 Control oldControl = display.imControl;
2546 if (oldControl !is this) { 2546 if (oldControl !is this) {
2547 if (oldControl !is null && !oldControl.isDisposed ()) { 2547 if (oldControl !is null && !oldControl.isDisposed ()) {
2555 } 2555 }
2556 } 2556 }
2557 return 0; 2557 return 0;
2558 } 2558 }
2559 2559
2560 int /*long*/ gtk_focus_out_event (GtkWidget* widget, int /*long*/ event) { 2560 override int /*long*/ gtk_focus_out_event (GtkWidget* widget, GdkEventFocus* event) {
2561 // widget could be disposed at this point 2561 // widget could be disposed at this point
2562 if (handle !is null) { 2562 if (handle !is null) {
2563 if (hooks (SWT.KeyDown) || hooks (SWT.KeyUp)) { 2563 if (hooks (SWT.KeyDown) || hooks (SWT.KeyUp)) {
2564 auto imHandle = imHandle (); 2564 auto imHandle = imHandle ();
2565 if (imHandle !is null) { 2565 if (imHandle !is null) {
2568 } 2568 }
2569 } 2569 }
2570 return 0; 2570 return 0;
2571 } 2571 }
2572 2572
2573 int /*long*/ gtk_key_press_event (GtkWidget* widget, GdkEventKey* event) { 2573 override int /*long*/ gtk_key_press_event (GtkWidget* widget, GdkEventKey* event) {
2574 if (!hasFocus ()) return 0; 2574 if (!hasFocus ()) return 0;
2575 GdkEventKey* gdkEvent = new GdkEventKey (); 2575 GdkEventKey* gdkEvent = new GdkEventKey ();
2576 memmove (gdkEvent, event, GdkEventKey.sizeof); 2576 memmove (gdkEvent, event, GdkEventKey.sizeof);
2577 2577
2578 if (translateMnemonic (gdkEvent.keyval, gdkEvent)) return 1; 2578 if (translateMnemonic (gdkEvent.keyval, gdkEvent)) return 1;
2587 // widget could be disposed at this point 2587 // widget could be disposed at this point
2588 if (isDisposed ()) return 0; 2588 if (isDisposed ()) return 0;
2589 return super.gtk_key_press_event (widget, event); 2589 return super.gtk_key_press_event (widget, event);
2590 } 2590 }
2591 2591
2592 int /*long*/ gtk_key_release_event (GtkWidget* widget, GdkEventKey* event) { 2592 override int /*long*/ gtk_key_release_event (GtkWidget* widget, GdkEventKey* event) {
2593 if (!hasFocus ()) return 0; 2593 if (!hasFocus ()) return 0;
2594 auto imHandle = imHandle (); 2594 auto imHandle = imHandle ();
2595 if (imHandle !is null) { 2595 if (imHandle !is null) {
2596 if (OS.gtk_im_context_filter_keypress (imHandle, event)) return 1; 2596 if (OS.gtk_im_context_filter_keypress (imHandle, event)) return 1;
2597 } 2597 }
2598 return super.gtk_key_release_event (widget, event); 2598 return super.gtk_key_release_event (widget, event);
2599 } 2599 }
2600 2600
2601 int /*long*/ gtk_leave_notify_event (GtkWidget* widget, GdkEventCrossing* event) { 2601 override int /*long*/ gtk_leave_notify_event (GtkWidget* widget, GdkEventCrossing* event) {
2602 if (display.currentControl !is this) return 0; 2602 if (display.currentControl !is this) return 0;
2603 display.removeMouseHoverTimeout (handle); 2603 display.removeMouseHoverTimeout (handle);
2604 int result = 0; 2604 int result = 0;
2605 if (sendLeaveNotify () || display.getCursorControl () is null) { 2605 if (sendLeaveNotify () || display.getCursorControl () is null) {
2606 GdkEventCrossing* gdkEvent = new GdkEventCrossing (); 2606 GdkEventCrossing* gdkEvent = new GdkEventCrossing ();
2611 display.currentControl = null; 2611 display.currentControl = null;
2612 } 2612 }
2613 return result; 2613 return result;
2614 } 2614 }
2615 2615
2616 int /*long*/ gtk_mnemonic_activate (GtkWidget* widget, int /*long*/ arg1) { 2616 override int /*long*/ gtk_mnemonic_activate (GtkWidget* widget, int /*long*/ arg1) {
2617 int result = 0; 2617 int result = 0;
2618 auto eventPtr = OS.gtk_get_current_event (); 2618 auto eventPtr = OS.gtk_get_current_event ();
2619 if (eventPtr !is null) { 2619 if (eventPtr !is null) {
2620 GdkEventKey* keyEvent = new GdkEventKey (); 2620 GdkEventKey* keyEvent = new GdkEventKey ();
2621 memmove (keyEvent, eventPtr, GdkEventKey.sizeof); 2621 memmove (keyEvent, eventPtr, GdkEventKey.sizeof);
2632 OS.gdk_event_free (eventPtr); 2632 OS.gdk_event_free (eventPtr);
2633 } 2633 }
2634 return result; 2634 return result;
2635 } 2635 }
2636 2636
2637 int /*long*/ gtk_motion_notify_event (GtkWidget* widget, GdkEventMotion* event) { 2637 override int /*long*/ gtk_motion_notify_event (GtkWidget* widget, GdkEventMotion* event) {
2638 GdkEventMotion* gdkEvent = new GdkEventMotion (); 2638 GdkEventMotion* gdkEvent = new GdkEventMotion ();
2639 memmove (gdkEvent, event, GdkEventMotion.sizeof); 2639 memmove (gdkEvent, event, GdkEventMotion.sizeof);
2640 if (this is display.currentControl && (hooks (SWT.MouseHover) || filters (SWT.MouseHover))) { 2640 if (this is display.currentControl && (hooks (SWT.MouseHover) || filters (SWT.MouseHover))) {
2641 display.addMouseHoverTimeout (handle); 2641 display.addMouseHoverTimeout (handle);
2642 } 2642 }
2653 } 2653 }
2654 int result = sendMouseEvent (SWT.MouseMove, 0, gdkEvent.time, x, y, gdkEvent.is_hint !is 0, state) ? 0 : 1; 2654 int result = sendMouseEvent (SWT.MouseMove, 0, gdkEvent.time, x, y, gdkEvent.is_hint !is 0, state) ? 0 : 1;
2655 return result; 2655 return result;
2656 } 2656 }
2657 2657
2658 int /*long*/ gtk_popup_menu (GtkWidget* widget) { 2658 override int /*long*/ gtk_popup_menu (GtkWidget* widget) {
2659 if (!hasFocus()) return 0; 2659 if (!hasFocus()) return 0;
2660 int x, y ; 2660 int x, y ;
2661 OS.gdk_window_get_pointer (null, &x, &y, null); 2661 OS.gdk_window_get_pointer (null, &x, &y, null);
2662 return showMenu (x, y) ? 1 : 0; 2662 return showMenu (x, y) ? 1 : 0;
2663 } 2663 }
2664 2664
2665 int /*long*/ gtk_preedit_changed (int /*long*/ imcontext) { 2665 override int /*long*/ gtk_preedit_changed (GtkIMContext* imcontext) {
2666 display.showIMWindow (this); 2666 display.showIMWindow (this);
2667 return 0; 2667 return 0;
2668 } 2668 }
2669 2669
2670 int /*long*/ gtk_realize (GtkWidget* widget) { 2670 override int /*long*/ gtk_realize (GtkWidget* widget) {
2671 auto imHandle = imHandle (); 2671 auto imHandle = imHandle ();
2672 if (imHandle !is null) { 2672 if (imHandle !is null) {
2673 auto window = OS.GTK_WIDGET_WINDOW (paintHandle ()); 2673 auto window = OS.GTK_WIDGET_WINDOW (paintHandle ());
2674 OS.gtk_im_context_set_client_window (imHandle, window); 2674 OS.gtk_im_context_set_client_window (imHandle, window);
2675 } 2675 }
2678 if (window !is null) OS.gdk_window_set_back_pixmap (window, cast(GdkPixmap*)backgroundImage.pixmap, false); 2678 if (window !is null) OS.gdk_window_set_back_pixmap (window, cast(GdkPixmap*)backgroundImage.pixmap, false);
2679 } 2679 }
2680 return 0; 2680 return 0;
2681 } 2681 }
2682 2682
2683 int /*long*/ gtk_scroll_event (GtkWidget* widget, GdkEventScroll* eventPtr) { 2683 override int /*long*/ gtk_scroll_event (GtkWidget* widget, GdkEventScroll* eventPtr) {
2684 GdkEventScroll* gdkEvent = new GdkEventScroll (); 2684 GdkEventScroll* gdkEvent = new GdkEventScroll ();
2685 memmove (gdkEvent, eventPtr, GdkEventScroll.sizeof); 2685 memmove (gdkEvent, eventPtr, GdkEventScroll.sizeof);
2686 switch (cast(int)gdkEvent.direction) { 2686 switch (cast(int)gdkEvent.direction) {
2687 case OS.GDK_SCROLL_UP: 2687 case OS.GDK_SCROLL_UP:
2688 return sendMouseEvent (SWT.MouseWheel, 0, 3, SWT.SCROLL_LINE, true, gdkEvent.time, gdkEvent.x_root, gdkEvent.y_root, false, gdkEvent.state) ? 0 : 1; 2688 return sendMouseEvent (SWT.MouseWheel, 0, 3, SWT.SCROLL_LINE, true, gdkEvent.time, gdkEvent.x_root, gdkEvent.y_root, false, gdkEvent.state) ? 0 : 1;
2694 return sendMouseEvent (SWT.MouseDown, 5, gdkEvent.time, gdkEvent.x_root, gdkEvent.y_root, false, gdkEvent.state) ? 0 : 1; 2694 return sendMouseEvent (SWT.MouseDown, 5, gdkEvent.time, gdkEvent.x_root, gdkEvent.y_root, false, gdkEvent.state) ? 0 : 1;
2695 } 2695 }
2696 return 0; 2696 return 0;
2697 } 2697 }
2698 2698
2699 int /*long*/ gtk_show_help (GtkWidget* widget, int /*long*/ helpType) { 2699 override int /*long*/ gtk_show_help (GtkWidget* widget, int /*long*/ helpType) {
2700 if (!hasFocus ()) return 0; 2700 if (!hasFocus ()) return 0;
2701 return sendHelpEvent (helpType) ? 1 : 0; 2701 return sendHelpEvent (helpType) ? 1 : 0;
2702 } 2702 }
2703 2703
2704 int /*long*/ gtk_style_set (GtkWidget* widget, int /*long*/ previousStyle) { 2704 override int /*long*/ gtk_style_set (GtkWidget* widget, int /*long*/ previousStyle) {
2705 if (backgroundImage !is null) { 2705 if (backgroundImage !is null) {
2706 setBackgroundPixmap (backgroundImage.pixmap); 2706 setBackgroundPixmap (backgroundImage.pixmap);
2707 } 2707 }
2708 return 0; 2708 return 0;
2709 } 2709 }
2710 2710
2711 int /*long*/ gtk_unrealize (GtkWidget* widget) { 2711 override int /*long*/ gtk_unrealize (GtkWidget* widget) {
2712 auto imHandle = imHandle (); 2712 auto imHandle = imHandle ();
2713 if (imHandle !is null) OS.gtk_im_context_set_client_window (imHandle, null); 2713 if (imHandle !is null) OS.gtk_im_context_set_client_window (imHandle, null);
2714 return 0; 2714 return 0;
2715 } 2715 }
2716 2716
2717 int /*long*/ gtk_visibility_notify_event (GtkWidget* widget, GdkEventVisibility* event) { 2717 override int /*long*/ gtk_visibility_notify_event (GtkWidget* widget, GdkEventVisibility* event) {
2718 GdkEventVisibility* gdkEvent = new GdkEventVisibility (); 2718 GdkEventVisibility* gdkEvent = new GdkEventVisibility ();
2719 memmove (gdkEvent, event, GdkEventVisibility.sizeof); 2719 memmove (gdkEvent, event, GdkEventVisibility.sizeof);
2720 auto paintWindow = paintWindow(); 2720 auto paintWindow = paintWindow();
2721 auto window = gdkEvent.window; 2721 auto window = gdkEvent.window;
2722 if (window is paintWindow) { 2722 if (window is paintWindow) {
2735 } 2735 }
2736 } 2736 }
2737 return 0; 2737 return 0;
2738 } 2738 }
2739 2739
2740 void gtk_widget_size_request (GtkWidget* widget, GtkRequisition* requisition) { 2740 /*no override*/ void gtk_widget_size_request (GtkWidget* widget, GtkRequisition* requisition) {
2741 OS.gtk_widget_size_request (widget, requisition); 2741 OS.gtk_widget_size_request (widget, requisition);
2742 } 2742 }
2743 2743
2744 /** 2744 /**
2745 * Invokes platform specific functionality to allocate a new GC handle. 2745 * Invokes platform specific functionality to allocate a new GC handle.