sys : corection of the keypad enter and add the shift+enter replacement with \r

This commit is contained in:
Edouard Dupin 2011-09-05 09:50:15 +02:00
parent 1b3dd3ce98
commit 1de1f787e7
4 changed files with 133 additions and 24 deletions

View File

@ -977,24 +977,28 @@ void BufferText::AddChar(char * UTF8data)
actionDone = true; actionDone = true;
} else if (UTF8data[0] == '\n') { } else if (UTF8data[0] == '\n') {
Edn::VectorType<int8_t> tmpVect; Edn::VectorType<int8_t> tmpVect;
tmpVect.PushBack('\n'); if (true == globals::IsSetShift()) {
// if Auto indent Enable ==> we get the start of the previous line and add it to tne new one tmpVect.PushBack('\r');
if (true == globals::IsSetAutoIndent() ) { } else {
int32_t l_lineStart; tmpVect.PushBack('\n');
// Get the begin of the line or the begin of the line befor selection // if Auto indent Enable ==> we get the start of the previous line and add it to tne new one
if (false == haveSelectionActive) { if (true == globals::IsSetAutoIndent() ) {
l_lineStart = m_EdnBuf.StartOfLine(m_cursorPos); int32_t l_lineStart;
} else { // Get the begin of the line or the begin of the line befor selection
l_lineStart = m_EdnBuf.StartOfLine(SelectionStart); if (false == haveSelectionActive) {
} l_lineStart = m_EdnBuf.StartOfLine(m_cursorPos);
// add same characters in the temporar buffer
for (int32_t kk=l_lineStart; kk<m_cursorPos; kk++) {
if (' ' == m_EdnBuf[kk]) {
tmpVect.PushBack(' ');
} else if('\t' == m_EdnBuf[kk]) {
tmpVect.PushBack('\t');
} else { } else {
break; l_lineStart = m_EdnBuf.StartOfLine(SelectionStart);
}
// add same characters in the temporar buffer
for (int32_t kk=l_lineStart; kk<m_cursorPos; kk++) {
if (' ' == m_EdnBuf[kk]) {
tmpVect.PushBack(' ');
} else if('\t' == m_EdnBuf[kk]) {
tmpVect.PushBack('\t');
} else {
break;
}
} }
} }
} }

View File

@ -600,13 +600,11 @@ void ConvertInput(GdkEventKey *event, char* Utf8Out, bool &controlKey, bool &mov
break; break;
# ifdef USE_GTK_VERSION_3_0 # ifdef USE_GTK_VERSION_3_0
case GDK_KEY_KP_Enter: case GDK_KEY_KP_Enter:
key = GDK_KEY_Return;
break;
# elif USE_GTK_VERSION_2_0 # elif USE_GTK_VERSION_2_0
case GDK_KP_Enter: case GDK_KP_Enter:
key = GDK_Return;
break;
# endif # endif
key = '\n';
break;
# ifdef USE_GTK_VERSION_3_0 # ifdef USE_GTK_VERSION_3_0
case GDK_KEY_KP_F1: case GDK_KEY_KP_F1:
case GDK_KEY_F1: case GDK_KEY_F1:
@ -1040,17 +1038,125 @@ void ConvertInput(GdkEventKey *event, char* Utf8Out, bool &controlKey, bool &mov
# endif # endif
key = 0x08; key = 0x08;
break; break;
# ifdef USE_GTK_VERSION_3_0
case GDK_KEY_dead_grave:
case GDK_KEY_dead_acute:
case GDK_KEY_dead_circumflex:
case GDK_KEY_dead_tilde:
case GDK_KEY_dead_macron:
case GDK_KEY_dead_breve:
case GDK_KEY_dead_abovedot:
case GDK_KEY_dead_diaeresis:
case GDK_KEY_dead_abovering:
case GDK_KEY_dead_doubleacute:
case GDK_KEY_dead_caron:
case GDK_KEY_dead_cedilla:
case GDK_KEY_dead_ogonek:
case GDK_KEY_dead_iota:
case GDK_KEY_dead_voiced_sound:
case GDK_KEY_dead_semivoiced_sound:
case GDK_KEY_dead_belowdot:
case GDK_KEY_dead_hook:
case GDK_KEY_dead_horn:
case GDK_KEY_dead_stroke:
case GDK_KEY_dead_abovecomma:
case GDK_KEY_dead_abovereversedcomma:
case GDK_KEY_dead_doublegrave:
case GDK_KEY_dead_belowring:
case GDK_KEY_dead_belowmacron:
case GDK_KEY_dead_belowcircumflex:
case GDK_KEY_dead_belowtilde:
case GDK_KEY_dead_belowbreve:
case GDK_KEY_dead_belowdiaeresis:
case GDK_KEY_dead_invertedbreve:
case GDK_KEY_dead_belowcomma:
case GDK_KEY_dead_currency:
case GDK_KEY_dead_a:
case GDK_KEY_dead_A:
case GDK_KEY_dead_e:
case GDK_KEY_dead_E:
case GDK_KEY_dead_i:
case GDK_KEY_dead_I:
case GDK_KEY_dead_o:
case GDK_KEY_dead_O:
case GDK_KEY_dead_u:
case GDK_KEY_dead_U:
case GDK_KEY_dead_small_schwa:
case GDK_KEY_dead_capital_schwa:
# elif USE_GTK_VERSION_2_0
case GDK_dead_grave:
case GDK_dead_acute:
case GDK_dead_circumflex:
key = '^';
break;
case GDK_dead_tilde:
case GDK_dead_macron:
case GDK_dead_breve:
case GDK_dead_abovedot:
case GDK_dead_diaeresis:
case GDK_dead_abovering:
case GDK_dead_doubleacute:
case GDK_dead_caron:
case GDK_dead_cedilla:
case GDK_dead_ogonek:
case GDK_dead_iota:
case GDK_dead_voiced_sound:
case GDK_dead_semivoiced_sound:
case GDK_dead_belowdot:
case GDK_dead_hook:
case GDK_dead_horn:
case GDK_dead_stroke:
case GDK_dead_abovecomma:
case GDK_dead_abovereversedcomma:
case GDK_dead_doublegrave:
case GDK_dead_belowring:
case GDK_dead_belowmacron:
case GDK_dead_belowcircumflex:
case GDK_dead_belowtilde:
case GDK_dead_belowbreve:
case GDK_dead_belowdiaeresis:
case GDK_dead_invertedbreve:
case GDK_dead_belowcomma:
case GDK_dead_currency:
key = '?';
break;
case GDK_dead_a:
EDN_INFO("dead a");
//key = 'a';
break;
case GDK_dead_A:
case GDK_dead_e:
case GDK_dead_E:
case GDK_dead_i:
case GDK_dead_I:
case GDK_dead_o:
case GDK_dead_O:
case GDK_dead_u:
case GDK_dead_U:
case GDK_dead_small_schwa:
case GDK_dead_capital_schwa:
# endif
key = '?';
break;
case GDK_Caps_Lock:
controlKey = true;
break;
default: default:
break; break;
} }
// Transform in unicode the input : // Transform in unicode the input :
//EDN_INFO("key : " << key);
int32_t unichar = gdk_keyval_to_unicode(key); int32_t unichar = gdk_keyval_to_unicode(key);
//EDN_INFO("unichar : " << unichar);
if (unichar == 0) { if (unichar == 0) {
Utf8Out[0] = (char)key; Utf8Out[0] = (char)key;
Utf8Out[1] = '\0'; Utf8Out[1] = '\0';
//EDN_INFO("NON UTF8 : " << Utf8Out);
} else { } else {
// Generate UTF8 form UniCode // Generate UTF8 form UniCode
convertUnicodeToUtf8(unichar, Utf8Out); convertUnicodeToUtf8(unichar, Utf8Out);
//EDN_INFO("UTF8 : " << Utf8Out);
#if 0 #if 0
printf(" convertUnicodeToUtf8 : \"0x%08x\" ==> unichar=%d %s\n", key, unichar, Utf8Out); printf(" convertUnicodeToUtf8 : \"0x%08x\" ==> unichar=%d %s\n", key, unichar, Utf8Out);
for (int32_t uu=0; uu < strlen(Utf8Out); uu++) { for (int32_t uu=0; uu < strlen(Utf8Out); uu++) {

View File

@ -9,12 +9,11 @@
* SQL * SQL
- sys : replace TAB with space when Tab is pressed - sys : replace TAB with space when Tab is pressed
- sys : Catch F[1-12] ==> for user personal event - sys : Catch F[1-12] ==> for user personal event
- sys : replace when TAB pressed and the selection did not selent more than one element - sys : replace when TAB pressed and the selection did not select more than one Line
- BUG : Correction du bug des entré bizard tel que les chapot et les guillemets - BUG : Correction du bug des entré bizard tel que les chapot et les guillemets
- BUG : de sélection quand la ligne est pleine et la première ligne séctionnée. - BUG : de sélection quand la ligne est pleine et la première ligne séctionnée.
- BUG : de copier coller sur les éàè ... - BUG : de copier coller sur les éàè ...
- BUG : sur le caplock et les caractère multiples type chapot ... - BUG : sur le caplock et les caractère multiples type chapot ...
- BUG : du entrer sur le kaypad qui fait un <CR> ==> ajouter la fonction shift+enter qui cree un <CR>
- BUG : italique non généré - BUG : italique non généré
* 0.3.X : * 0.3.X :
- SEARCH : get selected text in the search windows - SEARCH : get selected text in the search windows

View File

@ -13,7 +13,7 @@
/* /*
#if 0 #if 0
*/ */
^a^a^aa
//#include "tools_debug.h" //#include "tools_debug.h"
#include "tools_globals.h" #include "tools_globals.h"