From 506efefd14c3af8f786249354a8179c238c7048c Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Mon, 14 Apr 2014 08:35:59 +0400 Subject: [PATCH] fixes --- src/dlangui/platforms/common/platform.d | 5 ++++- src/dlangui/widgets/menu.d | 8 +++++++- src/dlangui/widgets/styles.d | 7 +++++-- src/dlangui/widgets/tabs.d | 1 + 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/dlangui/platforms/common/platform.d b/src/dlangui/platforms/common/platform.d index 17aec500..a6faccc4 100644 --- a/src/dlangui/platforms/common/platform.d +++ b/src/dlangui/platforms/common/platform.d @@ -137,6 +137,7 @@ class Window { protected Widget _mouseCaptureWidget; protected ushort _mouseCaptureButtons; protected bool _mouseCaptureFocusedOut; + /// does current capture widget want to receive move events even if pointer left it protected bool _mouseCaptureFocusedOutTrackMovements; protected bool dispatchCancel(MouseEvent event) { @@ -172,12 +173,14 @@ class Window { // sending FocusOut message event.changeAction(MouseAction.FocusOut); _mouseCaptureFocusedOut = true; - _mouseCaptureButtons = event.flags & (MouseFlag.LButton|MouseFlag.RButton|MouseFlag.MButton); + _mouseCaptureButtons = currentButtons; _mouseCaptureFocusedOutTrackMovements = _mouseCaptureWidget.onMouseEvent(event); return true; } else if (_mouseCaptureFocusedOutTrackMovements) { + // pointer is outside, but we still need to track pointer return _mouseCaptureWidget.onMouseEvent(event); } + // don't forward message return true; } else { // point is inside widget diff --git a/src/dlangui/widgets/menu.d b/src/dlangui/widgets/menu.d index f5ac49a4..48792070 100644 --- a/src/dlangui/widgets/menu.d +++ b/src/dlangui/widgets/menu.d @@ -64,7 +64,13 @@ class MainMenu : HorizontalLayout { styleId = "MAIN_MENU"; _item = item; for (int i = 0; i < item.subitemCount; i++) { - addChild(new MenuItemWidget(item.subitem(i))); + MenuItemWidget subitem = new MenuItemWidget(item.subitem(i)); + if (i == 1) + subitem.setState(State.Focused); + else if (i == 2) + subitem.setState(State.Pressed); + addChild(subitem); + } addChild((new Widget()).layoutWidth(FILL_PARENT)); } diff --git a/src/dlangui/widgets/styles.d b/src/dlangui/widgets/styles.d index 47eb55f5..3781c73a 100644 --- a/src/dlangui/widgets/styles.d +++ b/src/dlangui/widgets/styles.d @@ -614,7 +614,8 @@ immutable ATTR_SCROLLBAR_INDICATOR_HORIZONTAL = "scrollbar_indicator_horizontal" Theme createDefaultTheme() { Log.d("Creating default theme"); Theme res = new Theme("default"); - res.fontSize(14); + //res.fontSize(14); + res.fontSize(24); Style button = res.createSubstyle("BUTTON").backgroundImageId("btn_default_small").alignment(Align.Center); Style buttonTransparent = res.createSubstyle("BUTTON_TRANSPARENT").backgroundImageId("btn_default_small_transparent").alignment(Align.Center); Style text = res.createSubstyle("TEXT").margins(Rect(2,2,2,2)).padding(Rect(1,1,1,1)); @@ -664,7 +665,9 @@ Theme createDefaultTheme() { //res.dumpStats(); Style mainMenu = res.createSubstyle("MAIN_MENU").backgroundColor(0xE0E0E0).layoutWidth(FILL_PARENT); - Style menuItem = res.createSubstyle("MENU_ITEM").padding(Rect(4,2,4,2)).backgroundColor(0xE0E0E0) ; + Style menuItem = res.createSubstyle("MENU_ITEM").padding(Rect(4,2,4,2)).backgroundColor(0xE0E080) ; + menuItem.createState(State.Focused, State.Focused).backgroundColor(0x40C0C000); + menuItem.createState(State.Pressed, State.Pressed).backgroundColor(0x4080C000); menuItem.createState(State.Hovered, State.Hovered).backgroundColor(0x80E0E000); return res; diff --git a/src/dlangui/widgets/tabs.d b/src/dlangui/widgets/tabs.d index 9298a21a..5909abec 100644 --- a/src/dlangui/widgets/tabs.d +++ b/src/dlangui/widgets/tabs.d @@ -51,6 +51,7 @@ class TabItemWidget : HorizontalLayout { _closeButton = new ImageButton("CLOSE"); _closeButton.styleId = "BUTTON_TRANSPARENT"; _closeButton.drawableId = "close"; + _closeButton.trackHover = true; _closeButton.onClickListener = &onClick; if (_enableCloseButton) { _closeButton.visibility = Visibility.Gone;