From: <ral...@us...> - 2013-11-15 01:05:54
|
Revision: 8979 http://sourceforge.net/p/planeshift/code/8979 Author: ralphcampbell Date: 2013-11-15 01:05:51 +0000 (Fri, 15 Nov 2013) Log Message: ----------- Added mouse over chatwindow option to set text input focus. Modified Paths: -------------- trunk/src/client/gui/chatwindow.cpp trunk/src/client/gui/chatwindow.h trunk/src/client/gui/pawsconfigchat.cpp trunk/src/client/gui/pawsconfigchat.h trunk/src/common/paws/pawsbutton.cpp trunk/src/common/paws/pawsmanager.cpp trunk/src/common/paws/pawswidget.cpp Modified: trunk/src/client/gui/chatwindow.cpp =================================================================== --- trunk/src/client/gui/chatwindow.cpp 2013-11-14 23:10:21 UTC (rev 8978) +++ trunk/src/client/gui/chatwindow.cpp 2013-11-15 01:05:51 UTC (rev 8979) @@ -147,6 +147,7 @@ settings.joindefaultchannel = true; settings.defaultlastchat = true; settings.looseFocusOnSend = false; + settings.mouseFocus = false; settings.tabSetting = 1023; //enables all tabs for (int i = 0; i < CHAT_END; i++) @@ -362,7 +363,9 @@ if (nodeName == "loose") settings.looseFocusOnSend = option->GetAttributeValueAsBool("value", false); - if (nodeName == "tabSetting") + else if (nodeName == "mouseFocus") + settings.mouseFocus = option->GetAttributeValueAsBool("value", false); + else if (nodeName == "tabSetting") settings.tabSetting = option->GetAttributeValueAsInt("value"); else if (nodeName == "selecttabstyle") settings.selectTabStyle = (int)option->GetAttributeValueAsInt("value"); @@ -1134,10 +1137,10 @@ csRef<iDocumentSystem> docsys = csPtr<iDocumentSystem> (new csTinyDocumentSystem ()); csRef<iDocument> doc = docsys->CreateDocument(); - csRef<iDocumentNode> root, chatNode, colorNode, optionNode,looseNode,filtersNode, + csRef<iDocumentNode> root, chatNode, colorNode, optionNode, looseNode, filtersNode, badWordsNode, badWordsTextNode, tabCompletionNode, completionItemNode, cNode, logNode, selectTabStyleNode, echoScreenInSystemNode, mainBracketsNode, yourColorMixNode, joindefaultchannelNode, tabSettingNode, - defaultlastchatNode, spellCheckerNode, spellCheckerWordNode, mainTabNode, flashingNode, flashingOnCharNode, node; + defaultlastchatNode, spellCheckerNode, spellCheckerWordNode, mainTabNode, flashingNode, flashingOnCharNode, node, mouseNode; root = doc->CreateRoot(); @@ -1175,6 +1178,10 @@ looseNode->SetValue("loose"); looseNode->SetAttributeAsInt("value",(int)settings.looseFocusOnSend); + mouseNode = optionNode->CreateNodeBefore(CS_NODE_ELEMENT,0); + mouseNode->SetValue("mouseFocus"); + mouseNode->SetAttributeAsInt("value",(int)settings.mouseFocus); + tabSettingNode = optionNode->CreateNodeBefore(CS_NODE_ELEMENT,0); tabSettingNode->SetValue("tabSetting"); tabSettingNode->SetAttributeAsInt("value",(int)settings.tabSetting); @@ -1924,6 +1931,24 @@ return inputText->HasFocus(); } +bool pawsChatWindow::OnChildMouseEnter(pawsWidget* widget) +{ + if (settings.mouseFocus) + { + PawsManager::GetSingleton().SetCurrentFocusedWidget(inputText); + } + return true; +} + +bool pawsChatWindow::OnChildMouseExit(pawsWidget* widget) +{ + if (settings.mouseFocus) + { + PawsManager::GetSingleton().SetCurrentFocusedWidget(NULL); + } + return true; +} + bool pawsChatWindow::OnMouseDown( int button, int modifiers, int x , int y ) { pawsWidget::OnMouseDown( button, modifiers, x, y ); Modified: trunk/src/client/gui/chatwindow.h =================================================================== --- trunk/src/client/gui/chatwindow.h 2013-11-14 23:10:21 UTC (rev 8978) +++ trunk/src/client/gui/chatwindow.h 2013-11-15 01:05:51 UTC (rev 8979) @@ -85,6 +85,7 @@ bool joindefaultchannel; bool defaultlastchat; bool looseFocusOnSend; + bool mouseFocus; bool dirtyLogChannelFile[CHAT_END]; ///< Stores if the log file name was changed. csString logChannelFile[CHAT_END]; ///< Stores the log files to use for each chat type csString channelBracket[CHAT_END]; ///< Stores the brackets to add for each chat type @@ -147,6 +148,8 @@ bool OnMenuAction(pawsWidget * widget, const pawsMenuAction & action); bool PostSetup(); + bool OnChildMouseEnter(pawsWidget* widget); + bool OnChildMouseExit(pawsWidget* widget); bool OnMouseDown( int button, int modifiers, int x , int y ); Modified: trunk/src/client/gui/pawsconfigchat.cpp =================================================================== --- trunk/src/client/gui/pawsconfigchat.cpp 2013-11-14 23:10:21 UTC (rev 8978) +++ trunk/src/client/gui/pawsconfigchat.cpp 2013-11-15 01:05:51 UTC (rev 8979) @@ -85,6 +85,7 @@ helpG = NULL; helpB = NULL; loose = NULL; + mouseFocus = NULL; badwordsIncoming = NULL; badwordsOutgoing = NULL; echoScreenInSystem = NULL; @@ -155,6 +156,7 @@ helpG = (pawsEditTextBox*)FindWidget("helptextg"); helpB = (pawsEditTextBox*)FindWidget("helptextb"); loose = (pawsCheckBox*)FindWidget("loosefocus"); + mouseFocus = (pawsCheckBox*)FindWidget("mousefocus"); badwordsIncoming = (pawsCheckBox*)FindWidget("badwordsincoming"); badwordsOutgoing = (pawsCheckBox*)FindWidget("badwordsoutgoing"); selectTabStyleGroup = dynamic_cast<pawsRadioButtonGroup*> (FindWidget("selecttabstyle")); @@ -175,6 +177,7 @@ ChatSettings &settings = chatWindow->GetSettings(); loose->SetState(settings.looseFocusOnSend); + mouseFocus->SetState(settings.mouseFocus); echoScreenInSystem->SetState(settings.echoScreenInSystem); mainBrackets->SetState(settings.mainBrackets); yourColorMix->SetState(settings.yourColorMix); @@ -238,6 +241,7 @@ SET_CHAT_VALUE(tell); SET_CHAT_VALUE(chat); settings.looseFocusOnSend = loose->GetState(); + settings.mouseFocus = mouseFocus->GetState(); settings.enableBadWordsFilterIncoming = badwordsIncoming->GetState(); settings.enableBadWordsFilterOutgoing = badwordsOutgoing->GetState(); Modified: trunk/src/client/gui/pawsconfigchat.h =================================================================== --- trunk/src/client/gui/pawsconfigchat.h 2013-11-14 23:10:21 UTC (rev 8978) +++ trunk/src/client/gui/pawsconfigchat.h 2013-11-15 01:05:51 UTC (rev 8979) @@ -94,6 +94,7 @@ pawsEditTextBox* helpB; pawsCheckBox* loose; + pawsCheckBox* mouseFocus; pawsCheckBox* badwordsIncoming, *badwordsOutgoing; pawsRadioButtonGroup* selectTabStyleGroup; pawsCheckBox* echoScreenInSystem; Modified: trunk/src/common/paws/pawsbutton.cpp =================================================================== --- trunk/src/common/paws/pawsbutton.cpp 2013-11-14 23:10:21 UTC (rev 8978) +++ trunk/src/common/paws/pawsbutton.cpp 2013-11-15 01:05:51 UTC (rev 8979) @@ -341,7 +341,7 @@ SetState(true, false); } - return true; + return pawsWidget::OnMouseEnter(); } bool pawsButton::OnMouseExit() @@ -351,7 +351,7 @@ SetState(false, false); } - return true; + return pawsWidget::OnMouseExit(); } bool pawsButton::OnMouseDown( int button, int modifiers, int x, int y ) Modified: trunk/src/common/paws/pawsmanager.cpp =================================================================== --- trunk/src/common/paws/pawsmanager.cpp 2013-11-14 23:10:21 UTC (rev 8978) +++ trunk/src/common/paws/pawsmanager.cpp 2013-11-15 01:05:51 UTC (rev 8979) @@ -771,8 +771,9 @@ // Handle mouse over for if(widget && widget != mouseoverWidget) { + if(mouseoverWidget) + mouseoverWidget->OnMouseExit(); widget->OnMouseEnter(); - if(mouseoverWidget) mouseoverWidget->OnMouseExit(); } mouseoverWidget = widget; @@ -1097,9 +1098,10 @@ { if(widget == NULL) { - SetCurrentFocusedWidget(mainWidget); + widget = mainWidget; + } + if(currentFocusedWidget == widget) return; - } // Allow widget to be focused if it is a child of the modal widget, or if there is no modal widget. if(!modalWidget || modalWidget->FindWidget(widget->GetName(), false)) Modified: trunk/src/common/paws/pawswidget.cpp =================================================================== --- trunk/src/common/paws/pawswidget.cpp 2013-11-14 23:10:21 UTC (rev 8978) +++ trunk/src/common/paws/pawswidget.cpp 2013-11-15 01:05:51 UTC (rev 8979) @@ -1622,6 +1622,8 @@ bool pawsWidget::OnChildMouseEnter(pawsWidget* /*widget*/) { + if ( parent ) + return parent->OnChildMouseEnter( this ); return true; } @@ -1634,6 +1636,8 @@ bool pawsWidget::OnChildMouseExit(pawsWidget* /*child*/) { + if ( parent ) + return parent->OnChildMouseExit( this ); return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |