]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/build.cpp
macos: disable drawing xorrectangle (rectangle selection feedback)
[xonotic/netradiant.git] / radiant / build.cpp
index d9d4e404531404314a941d492454364f9c6abcb5..2ff2b83d8c8b6a0d9dafe9660403033f1a924de9 100644 (file)
@@ -76,52 +76,24 @@ void setString( const char* string ){
        m_string = string;
 }
 void evaluate( StringBuffer& output ){
-       #if !(GDEF_OS_WINDOWS)
-       // strip .[ExecutableType] entirely (including preceding dot) on Mac and Linux
+       // replace ".[ExecutableType]" with "[ExecutableExt]"
        {
                StringBuffer output;
-               StringBuffer variable;
-               bool found_dot = false;
-               bool in_variable = false;
-               for (const char *i = m_string.c_str(); *i != '\0'; ++i) {
-                       if (!found_dot && !in_variable) {
-                               switch (*i) {
-                                       case '.':
-                                               found_dot = true;
-                                               break;
-                                       default:
-                                               output.push_back(*i);
-                                               break;
-                               }
-                       } else if (found_dot && !in_variable) {
-                               switch (*i) {
-                                       case '[':
-                                               in_variable = true;
-                                               break;
-                                       default:
-                                               found_dot = false;
-                                               output.push_back(*i);
-                                               break;
-                               }
-                       } else {
-                               switch (*i) {
-                                       case ']':
-                                               found_dot = false;
-                                               in_variable = false;
-                                               if ( strncmp("ExecutableType", variable.c_str(), sizeof(variable.c_str())) == 0 ) {
-                                                       output.push_string("");
-                                                       variable.clear();
-                                               }
-                                               break;
-                                       default:
-                                               variable.push_back(*i);
-                                               break;
-                               }
+               const char *pattern = ".[ExecutableType]";
+               for ( const char *i = m_string.c_str(); *i != '\0'; ++i )
+               {
+                       if ( strncmp( pattern, i, sizeof( pattern ) ) == 0 )
+                       {
+                               output.push_string("[ExecutableExt]");
+                               i += strlen( pattern ) - 1;
+                       }
+                       else
+                       {
+                               output.push_back(*i);
                        }
                }
                setString(output.c_str());
        }
-       #endif // !(GDEF_OS_WINDOWS)
 
        StringBuffer variable;
        bool in_variable = false;
@@ -870,6 +842,12 @@ gboolean commands_key_press( ui::TreeView widget, GdkEventKey* event, ui::ListSt
 ui::Window BuildMenuDialog_construct( ModalDialog& modal, ProjectList& projectList ){
        ui::Window window = MainFrame_getWindow().create_dialog_window("Build Menu", G_CALLBACK(dialog_delete_callback ), &modal, -1, 400 );
 
+       // FIXME: GTK_WIN_POS_CENTER_ON_PARENT must be used instead but does not work
+       // for unknown reason.
+       // It's possible MaingFrame_getWindow() does not return the main window.
+       // It's known the preferences window has same issue when using MaingFrame_getWindow().
+       gtk_window_set_position( window, GTK_WIN_POS_CENTER_ALWAYS );
+
        {
                auto table1 = create_dialog_table( 2, 2, 4, 4, 4 );
                window.add(table1);