]> git.xonotic.org Git - xonotic/netradiant.git/commitdiff
Merge commit '6f51c7f28dc9f56ae64e7da7d42dcbaa068da65a' into garux-merge
authorThomas Debesse <dev@illwieckz.net>
Tue, 12 Feb 2019 01:56:08 +0000 (02:56 +0100)
committerThomas Debesse <dev@illwieckz.net>
Tue, 12 Feb 2019 01:56:08 +0000 (02:56 +0100)
15 files changed:
1  2 
Makefile
contrib/camera/camera.cpp
libs/gtkutil/dialog.cpp
libs/gtkutil/image.cpp
plugins/shaders/plugin.cpp
radiant/CMakeLists.txt
radiant/entity.cpp
radiant/environment.cpp
radiant/environment.h
radiant/filterbar.cpp
radiant/filterbar.h
radiant/main.cpp
radiant/mainframe.cpp
radiant/plugintoolbar.cpp
radiant/plugintoolbar.h

diff --cc Makefile
Simple merge
Simple merge
index fddf060e670712667dd6077967797604454059e7,fb513e97d5d0e1982c09bd7d487220a6a2df364e..aa8aad47d0a873046151804c55d918f01c5ee973
@@@ -200,21 -209,21 +200,21 @@@ PathEntry PathEntry_new()
        gtk_frame_set_shadow_type( frame, GTK_SHADOW_IN );
  
        // path entry
 -      GtkHBox* hbox = GTK_HBOX( gtk_hbox_new( FALSE, 0 ) );
 -      gtk_widget_show( GTK_WIDGET( hbox ) );
 +      auto hbox = ui::HBox( FALSE, 0 );
 +      hbox.show();
  
 -      GtkEntry* entry = GTK_ENTRY( gtk_entry_new() );
 +      auto entry = ui::Entry(ui::New);
        gtk_entry_set_has_frame( entry, FALSE );
 -      gtk_widget_show( GTK_WIDGET( entry ) );
 -      gtk_box_pack_start( GTK_BOX( hbox ), GTK_WIDGET( entry ), TRUE, TRUE, 0 );
 +      entry.show();
 +      hbox.pack_start( entry, TRUE, TRUE, 0 );
  
        // browse button
 -      GtkButton* button = GTK_BUTTON( gtk_button_new() );
 +      auto button = ui::Button(ui::New);
-       button_set_icon( button, "ellipsis.bmp" );
+       button_set_icon( button, "ellipsis.png" );
 -      gtk_widget_show( GTK_WIDGET( button ) );
 -      gtk_box_pack_end( GTK_BOX( hbox ), GTK_WIDGET( button ), FALSE, FALSE, 0 );
 +      button.show();
 +      hbox.pack_end(button, FALSE, FALSE, 0);
  
 -      gtk_container_add( GTK_CONTAINER( frame ), GTK_WIDGET( hbox ) );
 +      frame.add(hbox);
  
        return PathEntry( frame, entry, button );
  }
index 210b055c076a74f45cabcda6e38f984ed497aecf,2791fd47393a09a921458c8b31839e6392af8273..a79b5b144b1d77bc86e296c1045ce886d531eabd
@@@ -44,8 -45,9 +44,9 @@@ GdkPixbuf* pixbuf_new_from_file_with_ma
        }
        else
        {
 -              GdkPixbuf* rgba = gdk_pixbuf_add_alpha( rgb, FALSE, 255, 0, 255 ); //alpha
 -              gdk_pixbuf_unref( rgb );
+               //GdkPixbuf* rgba = gdk_pixbuf_add_alpha( rgb, TRUE, 255, 0, 255 ); //pink to alpha
 +              GdkPixbuf* rgba = gdk_pixbuf_add_alpha( rgb, FALSE, 255, 0, 255 );
 +              g_object_unref( rgb );
                return rgba;
        }
  }
Simple merge
index 05d79830fe4fa2b56bdcadedc996d9ed325cffc9,0000000000000000000000000000000000000000..1edced736eade534b52a073ac430bd96d805b16d
mode 100644,000000..100644
--- /dev/null
@@@ -1,133 -1,0 +1,134 @@@
 +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
 +
 +find_package(OpenGL REQUIRED)
 +
 +string(SUBSTRING ${CMAKE_SHARED_MODULE_SUFFIX} 1 -1 _clibext)
 +add_definitions(-DCMAKE_SHARED_MODULE_SUFFIX="${_clibext}")
 +unset(_clibext)
 +
 +set(RADIANTLIST
 +    autosave.cpp autosave.h
 +    brush.cpp brush.h
 +    brush_primit.cpp brush_primit.h
 +    brushmanip.cpp brushmanip.h
 +    brushmodule.cpp brushmodule.h
 +    brushnode.cpp brushnode.h
 +    brushtokens.cpp brushtokens.h
 +    brushxml.cpp brushxml.h
 +    build.cpp build.h
 +    camwindow.cpp camwindow.h
 +    clippertool.cpp clippertool.h
 +    commands.cpp commands.h
 +    console.cpp console.h
 +    csg.cpp csg.h
 +    dialog.cpp dialog.h
 +    eclass.cpp eclass.h
 +    eclass_def.cpp eclass_def.h
 +    eclass_doom3.cpp eclass_doom3.h
 +    eclass_fgd.cpp eclass_fgd.h
 +    eclass_xml.cpp eclass_xml.h
 +    entity.cpp entity.h
 +    entityinspector.cpp entityinspector.h
 +    entitylist.cpp entitylist.h
 +    environment.cpp environment.h
 +    error.cpp error.h
 +    feedback.cpp feedback.h
 +    filetypes.cpp filetypes.h
++    filterbar.cpp filterbar.h
 +    filters.cpp filters.h
 +    findtexturedialog.cpp findtexturedialog.h
 +    glwidget.cpp glwidget.h
 +    grid.cpp grid.h
 +    groupdialog.cpp groupdialog.h
 +    gtkdlgs.cpp gtkdlgs.h
 +    gtkmisc.cpp gtkmisc.h
 +    help.cpp help.h
 +    image.cpp image.h
 +    main.cpp main.h
 +    mainframe.cpp mainframe.h
 +    map.cpp map.h
 +    mru.cpp mru.h
 +    nullmodel.cpp nullmodel.h
 +    parse.cpp parse.h
 +    patch.cpp patch.h
 +    patchdialog.cpp patchdialog.h
 +    patchmanip.cpp patchmanip.h
 +    patchmodule.cpp patchmodule.h
 +    plugin.cpp plugin.h
 +    pluginapi.cpp pluginapi.h
 +    pluginmanager.cpp pluginmanager.h
 +    pluginmenu.cpp pluginmenu.h
 +    plugintoolbar.cpp plugintoolbar.h
 +    points.cpp points.h
 +    preferencedictionary.cpp preferencedictionary.h
 +    preferences.cpp preferences.h
 +    qe3.cpp qe3.h
 +    qgl.cpp qgl.h
 +    referencecache.cpp referencecache.h
 +    renderer.cpp renderer.h
 +    renderstate.cpp renderstate.h
 +    resource.h
 +    scenegraph.cpp scenegraph.h
 +    select.cpp select.h
 +    selection.cpp selection.h
 +    server.cpp server.h
 +    shaders.cpp shaders.h
 +    sockets.cpp sockets.h
 +    stacktrace.cpp stacktrace.h
 +    surfacedialog.cpp surfacedialog.h
 +    texmanip.cpp texmanip.h
 +    textureentry.cpp textureentry.h
 +    textures.cpp textures.h
 +    texwindow.cpp texwindow.h
 +    timer.cpp timer.h
 +    treemodel.cpp treemodel.h
 +    undo.cpp undo.h
 +    url.cpp url.h
 +    view.cpp view.h
 +    watchbsp.cpp watchbsp.h
 +    winding.cpp winding.h
 +    windowobservers.cpp windowobservers.h
 +    xmlstuff.cpp xmlstuff.h
 +    xywindow.cpp xywindow.h
 +)
 +if (WIN32)
 +    list(APPEND RADIANTLIST multimon.cpp multimon.h)
 +endif()
 +
 +radiant_tool(radiant WIN32 radiant.rc ${RADIANTLIST})
 +add_dependencies(radiant modules)
 +target_link_libraries(radiant
 +    ${CMAKE_DL_LIBS}
 +    ${LIBXML2_LIBRARIES}
 +    ${OPENGL_gl_LIBRARY}
 +    ${GTK${GTK_TARGET}_LIBRARIES}
 +    ${GTKGL_LIBRARIES}
 +    includes
 +    cmdlib
 +    container
 +    ddslib
 +    debugging
 +    etclib
 +    filematch
 +    generic
 +    l_net
 +    math
 +    mathlib
 +    memory
 +    modulesystem
 +    os
 +    picomodel
 +    profile
 +    script
 +    signal
 +    splines
 +    stream
 +    string
 +    uilib
 +    xmllib
 +)
 +if (X11_LIBRARIES)
 +    target_link_libraries(radiant ${X11_LIBRARIES})
 +endif ()
 +
 +copy_dlls(radiant)
Simple merge
Simple merge
index f36ce11b8a02cb968f09a2b11039fea9c77e6570,18398e8c0d7016e73a50214dfb614f415fc22dd8..98c33ab94568a90d726896e0298ac94db8f97969
@@@ -27,10 -27,10 +27,10 @@@ const char* environment_get_home_path()
  const char* environment_get_app_path();
  
  extern int g_argc;
 -extern char** g_argv;
 +extern char const** g_argv;
  
  #if defined( WIN32 )
- extern char openCmdMap[260];
+ extern char* openCmdMap;
  #endif
  
  
index 0000000000000000000000000000000000000000,8251a4bf4f5dfdad2850d004e90522aaacf51037..6f9958cc7bc986d174d368cba4d3aa96bf985f91
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,221 +1,250 @@@
 -#include <gtk/gtktoolbar.h>
+ #include "filterbar.h"
 -
 -
++
++#include "gtk/gtk.h"
++
+ #include "gtkmisc.h"
+ #include "gtkutil/widget.h"
+ #include "stream/stringstream.h"
+ #include "select.h"
+ #include "iundo.h"
+ #include "preferences.h"
+ #include "commands.h"
+ #include "gtkutil/accelerator.h"
+ #include "generic/callback.h"
 -gboolean ToggleActions0( GtkWidget *widget, GdkEvent *event, gpointer user_data ){
+ int ToggleActions = 0;
+ int ButtonNum = 0;
 -gboolean Areaportals_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
++
++gboolean ToggleActions0( ui::Widget widget, GdkEvent *event, gpointer user_data ){
+       ToggleActions = 0;
+       return FALSE;
+       //globalOutputStream() << "ToggleActions\n";
+ }
++
+ void SetCommonShader( const char* key, const char* shader ){
+       const char* gotShader = g_pGameDescription->getKeyValue( key );
+       UndoableCommand undo( "textureNameSetSelected" );
+       if ( gotShader && *gotShader ){
+               Select_SetShader( gotShader );
+       }
+       else{
+               Select_SetShader( shader );
+       }
+ }
 -gboolean Caulk_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
++gboolean Areaportals_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){
+       if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
+               if ( ButtonNum == 1 ){
+                       ToggleActions %= 2;
+               }
+               else{
+                       ToggleActions = 0;
+                       ButtonNum = 1;
+               }
+               if( ToggleActions == 0 ){
+                       SetCommonShader( "shader_nodraw", "textures/common/nodraw" );
+               }
+               else if( ToggleActions == 1 ){
+                       SetCommonShader( "shader_nodrawnonsolid", "textures/common/nodrawnonsolid" );
+               }
+               //SetCommonShader( "shader_caulk", "textures/common/caulk" );
+               //globalOutputStream() << "Found '" << "fullname" << "'\n";
+               ToggleActions++;
+               return TRUE;
+       }
+       return FALSE;
+ }
 -gboolean Clip_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
++gboolean Caulk_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){
+       if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
+               SetCommonShader( "shader_caulk", "textures/common/caulk" );
+               ToggleActions = 0;
+               return TRUE;
+       }
+       return FALSE;
+ }
 -gboolean Liquids_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
++
++gboolean Clip_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){
+       if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
+               if ( ButtonNum == 3 ){
+                       ToggleActions %= 2;
+               }
+               else{
+                       ToggleActions = 0;
+                       ButtonNum = 3;
+               }
+               if( ToggleActions == 0 ){
+                       SetCommonShader( "shader_clip", "textures/common/clip" );
+               }
+               else if( ToggleActions == 1 ){
+                       SetCommonShader( "shader_weapclip", "textures/common/weapclip" );
+               }
+               ToggleActions++;
+               return TRUE;
+       }
+       return FALSE;
+ }
 -gboolean Hint_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
++
++gboolean Liquids_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){
+       if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
+               if ( ButtonNum == 4 ){
+                       ToggleActions %= 3;
+               }
+               else{
+                       ToggleActions = 0;
+                       ButtonNum = 4;
+               }
+               if( ToggleActions == 0 ){
+                       SetCommonShader( "shader_watercaulk", "textures/common/watercaulk" );
+               }
+               else if( ToggleActions == 1 ){
+                       SetCommonShader( "shader_lavacaulk", "textures/common/lavacaulk" );
+               }
+               else if( ToggleActions == 2 ){
+                       SetCommonShader( "shader_slimecaulk", "textures/common/slimecaulk" );
+               }
+               ToggleActions++;
+               return TRUE;
+       }
+       return FALSE;
+ }
 -gboolean Trigger_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
++gboolean Hint_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){
+       if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
+               if ( ButtonNum == 5 ){
+                       ToggleActions %= 3;
+               }
+               else{
+                       ToggleActions = 0;
+                       ButtonNum = 5;
+               }
+               if( ToggleActions == 0 ){
+                       SetCommonShader( "shader_hint", "textures/common/hint" );
+               }
+               else if( ToggleActions == 1 ){
+                       SetCommonShader( "shader_hintlocal", "textures/common/hintlocal" );
+               }
+               else if( ToggleActions == 2 ){
+                       SetCommonShader( "shader_hintskip", "textures/common/hintskip" );
+               }
+               ToggleActions++;
+               return TRUE;
+       }
+       return FALSE;
+ }
 -gboolean Detail_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
++
++gboolean Trigger_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){
+       if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
+               SetCommonShader( "shader_trigger", "textures/common/trigger" );
+               ToggleActions = 0;
+               return TRUE;
+       }
+       return FALSE;
+ }
 -gboolean Structural_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
++
++gboolean Detail_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){
+       if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
+               GlobalCommands_find( "MakeDetail" ).m_callback();
+               ToggleActions = 0;
+               return TRUE;
+       }
+       return FALSE;
+ }
 -GtkToolbar* create_filter_toolbar(){
 -                      GtkToolbar* filter_toolbar = GTK_TOOLBAR( gtk_toolbar_new() );
 -                      gtk_widget_show( GTK_WIDGET( filter_toolbar ) );
 -                      g_signal_connect( G_OBJECT( filter_toolbar ), "enter_notify_event", G_CALLBACK( ToggleActions0 ), 0 );
++
++gboolean Structural_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){
+       if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
+               GlobalCommands_find( "MakeStructural" ).m_callback();
+               ToggleActions = 0;
+               return TRUE;
+       }
+       return FALSE;
+ }
 -                      GtkToggleButton* button;
++ui::Toolbar create_filter_toolbar(){
++                      auto filter_toolbar = ui::Toolbar::from( gtk_toolbar_new() );
++                      gtk_orientable_set_orientation( GTK_ORIENTABLE(filter_toolbar), GTK_ORIENTATION_HORIZONTAL );
++                      gtk_toolbar_set_style( filter_toolbar, GTK_TOOLBAR_ICONS );
++                      filter_toolbar.show();
 -                      toolbar_append_toggle_button( filter_toolbar, "World (ALT + 1)", "f-world.png", "FilterWorldBrushes" );
 -                      button = toolbar_append_toggle_button( filter_toolbar, "Details (CTRL + D)\nRightClick: MakeDetail", "f-details.png", "FilterDetails" );
 -                      g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Detail_button_press ), 0 );
++                      auto space = [&]() {
++                              auto btn = ui::ToolItem::from(gtk_separator_tool_item_new());
++                                      btn.show();
++                                      filter_toolbar.add(btn);
++                      };
 -                      button = toolbar_append_toggle_button( filter_toolbar, "Structural (CTRL + SHIFT + D)\nRightClick: MakeStructural", "f-structural.png", "FilterStructural" );
 -                      g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Structural_button_press ), 0 );
++                      g_signal_connect( G_OBJECT( filter_toolbar ), "enter_notify_event", G_CALLBACK( ToggleActions0 ), 0 );
++
++                      toolbar_append_toggle_button( filter_toolbar, "World (ALT + 1)", "f-world.png", "FilterWorldBrushes" );
 -                      gtk_toolbar_append_space( GTK_TOOLBAR( filter_toolbar ) );
 -
 -                      button = toolbar_append_toggle_button( filter_toolbar, "Areaportals (ALT + 3)\nRightClick: toggle tex\n\tnoDraw\n\tnoDrawNonSolid", "f-areaportal.png", "FilterAreaportals" );
 -                      g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Areaportals_button_press ), 0 );
++                      {
++                              auto button = toolbar_append_toggle_button( filter_toolbar, "Details (CTRL + D)\nRightClick: MakeDetail", "f-details.png", "FilterDetails" );
++                              g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Detail_button_press ), 0 );
++                      }
++                      {
++                              auto button = toolbar_append_toggle_button( filter_toolbar, "Structural (CTRL + SHIFT + D)\nRightClick: MakeStructural", "f-structural.png", "FilterStructural" );
++                              g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Structural_button_press ), 0 );
++                      }
+                       toolbar_append_toggle_button( filter_toolbar, "Patches (CTRL + P)", "patch_wireframe.png", "FilterPatches" );
 -                      button = toolbar_append_toggle_button( filter_toolbar, "Liquids (ALT + 5)\nRightClick: toggle tex\n\twaterCaulk\n\tlavaCaulk\n\tslimeCaulk", "f-liquids.png", "FilterLiquids" );
 -                      g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Liquids_button_press ), 0 );
++                      space();
++                      {
++                              auto button = toolbar_append_toggle_button( filter_toolbar, "Areaportals (ALT + 3)\nRightClick: toggle tex\n\tnoDraw\n\tnoDrawNonSolid", "f-areaportal.png", "FilterAreaportals" );
++                              g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Areaportals_button_press ), 0 );
++                      }
+                       toolbar_append_toggle_button( filter_toolbar, "Translucent (ALT + 4)", "f-translucent.png", "FilterTranslucent" );
 -                      button = toolbar_append_toggle_button( filter_toolbar, "Caulk (ALT + 6)\nRightClick: tex Caulk", "f-caulk.png", "FilterCaulk" );
 -                      g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Caulk_button_press ), 0 );
++                      {
++                              auto button = toolbar_append_toggle_button( filter_toolbar, "Liquids (ALT + 5)\nRightClick: toggle tex\n\twaterCaulk\n\tlavaCaulk\n\tslimeCaulk", "f-liquids.png", "FilterLiquids" );
++                              g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Liquids_button_press ), 0 );
++                      }
 -                      button = toolbar_append_toggle_button( filter_toolbar, "Clips (ALT + 7)\nRightClick: toggle tex\n\tplayerClip\n\tweapClip", "f-clip.png", "FilterClips" );
 -                      g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Clip_button_press ), 0 );
++                      {
++                              auto button = toolbar_append_toggle_button( filter_toolbar, "Caulk (ALT + 6)\nRightClick: tex Caulk", "f-caulk.png", "FilterCaulk" );
++                              g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Caulk_button_press ), 0 );
++                      }
 -                      button = toolbar_append_toggle_button( filter_toolbar, "HintsSkips (CTRL + H)\nRightClick: toggle tex\n\thint\n\thintLocal\n\thintSkip", "f-hint.png", "FilterHintsSkips" );
 -                      g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Hint_button_press ), 0 );
++                      {
++                              auto button = toolbar_append_toggle_button( filter_toolbar, "Clips (ALT + 7)\nRightClick: toggle tex\n\tplayerClip\n\tweapClip", "f-clip.png", "FilterClips" );
++                              g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Clip_button_press ), 0 );
++                      }
 -                      gtk_toolbar_append_space( GTK_TOOLBAR( filter_toolbar ) );
++                      {
++                              auto button = toolbar_append_toggle_button( filter_toolbar, "HintsSkips (CTRL + H)\nRightClick: toggle tex\n\thint\n\thintLocal\n\thintSkip", "f-hint.png", "FilterHintsSkips" );
++                              g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Hint_button_press ), 0 );
++                      }
+                       //toolbar_append_toggle_button( filter_toolbar, "Paths (ALT + 8)", "texture_lock.png", "FilterPaths" );
 -                      button = toolbar_append_toggle_button( filter_toolbar, "Triggers (CTRL + SHIFT + T)\nRightClick: tex Trigger", "f-triggers.png", "FilterTriggers" );
 -                      g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Trigger_button_press ), 0 );
++                      space();
+                       toolbar_append_toggle_button( filter_toolbar, "Entities (ALT + 2)", "f-entities.png", "FilterEntities" );
+                       toolbar_append_toggle_button( filter_toolbar, "Lights (ALT + 0)", "lightinspector.png", "FilterLights" );
+                       toolbar_append_toggle_button( filter_toolbar, "Models (SHIFT + M)", "f-models.png", "FilterModels" );
 -                      gtk_toolbar_append_space( GTK_TOOLBAR( filter_toolbar ) );
++                      {
++                              auto button = toolbar_append_toggle_button( filter_toolbar, "Triggers (CTRL + SHIFT + T)\nRightClick: tex Trigger", "f-triggers.png", "FilterTriggers" );
++                              g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Trigger_button_press ), 0 );
++                      }
+                       //toolbar_append_toggle_button( filter_toolbar, "Decals (SHIFT + D)", "f-decals.png", "FilterDecals" );
++                      space();
+                       toolbar_append_button( filter_toolbar, "InvertFilters", "f-invert.png", "InvertFilters" );
+                       toolbar_append_button( filter_toolbar, "ResetFilters", "f-reset.png", "ResetFilters" );
+                       return filter_toolbar;
+ }
index 0000000000000000000000000000000000000000,7b2888bb03ab93be8609bda239087e9d2de6bee9..ee7053666b439f8caf71e7e598cd3e3d641f4761
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,16 +1,8 @@@
 -#include <gtk/gtktoolbar.h>
 -
 -
 -
 -
 -
 -
 -
 -GtkToolbar* create_filter_toolbar();
 -
+ #if !defined( INCLUDED_FILTERBAR_H )
+ #define INCLUDED_FILTERBAR_H
++#include <uilib/uilib.h>
++ui::Toolbar create_filter_toolbar();
+ #endif
Simple merge
index 93edac9ae9e6f9d95112a37bbd80a0e48d77cfac,a4eaf8dfabdfd048ed40ccf5b2a803d9f4178484..196a60df37464afe89faf0d1cb1f3246cb99a7c3
  #include "renderstate.h"
  #include "feedback.h"
  #include "referencecache.h"
 -
 +#include "texwindow.h"
+ #include "filterbar.h"
  
  
  struct layout_globals_t
@@@ -2942,38 -2799,8 +2943,8 @@@ void MainFrame::Create()
                        }
                }
                if ( g_Layout_enableFilterToolbar.m_value ){
-                       auto filter_toolbar = create_filter_toolbar();
-                       filter_toolbar.show();
-                       auto space = [&]() {
-                               auto btn = gtk_separator_tool_item_new();
-                                       gtk_widget_show(GTK_WIDGET(btn));
-                                       gtk_container_add(GTK_CONTAINER(filter_toolbar), GTK_WIDGET(btn));
-                       };
-                       toolbar_append_toggle_button( filter_toolbar, "World (ALT + 1)", "f-world.bmp", "FilterWorldBrushes" );
-                       toolbar_append_toggle_button( filter_toolbar, "Details (CTRL + D)", "f-details.bmp", "FilterDetails" );
-                       toolbar_append_toggle_button( filter_toolbar, "Structural (CTRL + SHIFT + D)", "f-structural.bmp", "FilterStructural" );
-                       toolbar_append_toggle_button( filter_toolbar, "Patches (CTRL + P)", "patch_wireframe.png", "FilterPatches" );
-                       space();
-                       toolbar_append_toggle_button( filter_toolbar, "Areaportals (ALT + 3)", "f-areaportal.bmp", "FilterAreaportals" );
-                       toolbar_append_toggle_button( filter_toolbar, "Translucent (ALT + 4)", "f-translucent.bmp", "FilterTranslucent" );
-                       toolbar_append_toggle_button( filter_toolbar, "Liquids (ALT + 5)", "f-liquids.bmp", "FilterLiquids" );
-                       toolbar_append_toggle_button( filter_toolbar, "Caulk (ALT + 6)", "f-caulk.bmp", "FilterCaulk" );
-                       toolbar_append_toggle_button( filter_toolbar, "Clips (ALT + 7)", "f-clip.bmp", "FilterClips" );
-                       toolbar_append_toggle_button( filter_toolbar, "HintsSkips (CTRL + H)", "f-hint.bmp", "FilterHintsSkips" );
-                       //toolbar_append_toggle_button( filter_toolbar, "Paths (ALT + 8)", "texture_lock.bmp", "FilterPaths" );
-                       space();
-                       toolbar_append_toggle_button( filter_toolbar, "Entities (ALT + 2)", "f-entities.bmp", "FilterEntities" );
-                       toolbar_append_toggle_button( filter_toolbar, "Lights (ALT + 0)", "lightinspector.png", "FilterLights" );
-                       toolbar_append_toggle_button( filter_toolbar, "Models (SHIFT + M)", "f-models.bmp", "FilterModels" );
-                       toolbar_append_toggle_button( filter_toolbar, "Triggers (CTRL + SHIFT + T)", "f-triggers.bmp", "FilterTriggers" );
-                       //toolbar_append_toggle_button( filter_toolbar, "Decals (SHIFT + D)", "f-decals.bmp", "FilterDecals" );
-                       space();
-                       toolbar_append_button( filter_toolbar, "InvertFilters", "f-invert.bmp", "InvertFilters" );
-                       toolbar_append_button( filter_toolbar, "ResetFilters", "f-reset.bmp", "ResetFilters" );
-                       PFbox.pack_start( filter_toolbar, FALSE, FALSE, 0 );
 -                      GtkToolbar* filter_toolbar = create_filter_toolbar();
 -                      gtk_box_pack_start( GTK_BOX( PFbox ), GTK_WIDGET( filter_toolbar ), TRUE, TRUE, 0 );
++                      ui::Toolbar filter_toolbar = create_filter_toolbar();
++                      PFbox.pack_start( filter_toolbar, TRUE, TRUE, 0 );
                }
        }
  
Simple merge
index 97c637f274980950eec8e0a34535bf60b05508c8,7621cfd2585be7eed7db072fb86baa53fffa822f..97bbffb2f087e5ab3016cff42e731564127e9592
@@@ -24,9 -22,8 +24,8 @@@
  #if !defined( INCLUDED_PLUGINTOOLBAR_H )
  #define INCLUDED_PLUGINTOOLBAR_H
  
 -typedef struct _GtkToolbar GtkToolbar;
 -GtkToolbar* create_plugin_toolbar();
 +ui::Toolbar create_plugin_toolbar();
- ui::Toolbar create_filter_toolbar();
 +
  void PluginToolbar_populate();
  void PluginToolbar_clear();