Mercurial > projects > dwt-linux
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. |