minor refactoring
This commit is contained in:
parent
06cd1e98ff
commit
7ae79b263d
|
|
@ -39,7 +39,7 @@ const unsigned int RENDER_ALPHATEST = 1 << 4; // glEnable(GL_ALPHA_TEST)
|
|||
const unsigned int RENDER_DEPTHTEST = 1 << 5; // glEnable(GL_DEPTH_TEST)
|
||||
const unsigned int RENDER_DEPTHWRITE = 1 << 6; // glDepthMask(GL_TRUE)
|
||||
const unsigned int RENDER_COLOURWRITE = 1 << 7; // glColorMask(GL_TRUE; GL_TRUE; GL_TRUE; GL_TRUE)
|
||||
const unsigned int RENDER_CULLFACE = 1 << 8; // glglEnable(GL_CULL_FACE)
|
||||
const unsigned int RENDER_CULLFACE = 1 << 8; // glEnable(GL_CULL_FACE)
|
||||
const unsigned int RENDER_SCALED = 1 << 9; // glEnable(GL_NORMALIZE)
|
||||
const unsigned int RENDER_SMOOTH = 1 << 10; // glShadeModel
|
||||
const unsigned int RENDER_FOG = 1 << 11; // glEnable(GL_FOG)
|
||||
|
|
|
|||
|
|
@ -87,15 +87,16 @@ MotionDeltaFunction m_function;
|
|||
void* m_data;
|
||||
|
||||
static gboolean deferred_motion( gpointer data ){
|
||||
reinterpret_cast<DeferredMotionDelta*>( data )->m_function(
|
||||
reinterpret_cast<DeferredMotionDelta*>( data )->m_delta_x,
|
||||
reinterpret_cast<DeferredMotionDelta*>( data )->m_delta_y,
|
||||
reinterpret_cast<DeferredMotionDelta*>( data )->m_state,
|
||||
reinterpret_cast<DeferredMotionDelta*>( data )->m_data
|
||||
DeferredMotionDelta* self = reinterpret_cast<DeferredMotionDelta*>( data );
|
||||
self->m_function(
|
||||
self->m_delta_x,
|
||||
self->m_delta_y,
|
||||
self->m_state,
|
||||
self->m_data
|
||||
);
|
||||
reinterpret_cast<DeferredMotionDelta*>( data )->m_motion_handler = 0;
|
||||
reinterpret_cast<DeferredMotionDelta*>( data )->m_delta_x = 0;
|
||||
reinterpret_cast<DeferredMotionDelta*>( data )->m_delta_y = 0;
|
||||
self->m_motion_handler = 0;
|
||||
self->m_delta_x = 0;
|
||||
self->m_delta_y = 0;
|
||||
return FALSE;
|
||||
}
|
||||
public:
|
||||
|
|
@ -121,7 +122,8 @@ class FreezePointer
|
|||
{
|
||||
unsigned int handle_motion;
|
||||
int recorded_x, recorded_y, last_x, last_y, center_x, center_y;
|
||||
GtkWidget* m_weedjet;
|
||||
GtkWindow* m_window;
|
||||
GtkWidget* m_widget;
|
||||
typedef void ( *MotionDeltaFunction )( int x, int y, unsigned int state, void* data );
|
||||
MotionDeltaFunction m_function;
|
||||
void* m_data;
|
||||
|
|
@ -163,7 +165,7 @@ static gboolean motion_delta( GtkWidget *widget, GdkEventMotion *event, FreezePo
|
|||
}
|
||||
|
||||
void freeze_pointer( GtkWindow* window, GtkWidget* widget, MotionDeltaFunction function, void* data ){
|
||||
ASSERT_MESSAGE( m_function == 0, "can't freeze pointer" );
|
||||
ASSERT_MESSAGE( m_function == 0, "can't freeze pointer: already frozen" );
|
||||
|
||||
const GdkEventMask mask = static_cast<GdkEventMask>( GDK_POINTER_MOTION_MASK
|
||||
| GDK_POINTER_MOTION_HINT_MASK
|
||||
|
|
@ -178,19 +180,18 @@ void freeze_pointer( GtkWindow* window, GtkWidget* widget, MotionDeltaFunction f
|
|||
GdkCursor* cursor = gdk_cursor_new( GDK_BLANK_CURSOR );
|
||||
//GdkCursor* cursor = create_blank_cursor();
|
||||
//GdkGrabStatus status =
|
||||
/* fixes cursor runaways during srsly quick drags in camera
|
||||
drags with pressed buttons have no problem at all w/o this */
|
||||
/* fixes cursor runaways during srsly quick drags in camera
|
||||
drags with pressed buttons have no problem at all w/o this */
|
||||
gdk_pointer_grab( GTK_WIDGET( window )->window, TRUE, mask, 0, cursor, GDK_CURRENT_TIME );
|
||||
//gdk_window_set_cursor ( GTK_WIDGET( window )->window, cursor );
|
||||
/* is needed to fix activating neighbour widgets, that happens, if using upper one */
|
||||
/* is needed to fix activating neighbor widgets, that happens, if using upper one */
|
||||
gtk_grab_add( widget );
|
||||
m_weedjet = widget;
|
||||
|
||||
gdk_cursor_unref( cursor );
|
||||
|
||||
Sys_GetCursorPos( window, &recorded_x, &recorded_y );
|
||||
|
||||
/* using center for tracking for max safety */
|
||||
/* using center for tracking for max safety */
|
||||
gdk_window_get_origin( widget->window, ¢er_x, ¢er_y );
|
||||
center_y += widget->allocation.height / 2;
|
||||
center_x += widget->allocation.width / 2;
|
||||
|
|
@ -200,28 +201,33 @@ void freeze_pointer( GtkWindow* window, GtkWidget* widget, MotionDeltaFunction f
|
|||
last_x = center_x;
|
||||
last_y = center_y;
|
||||
|
||||
m_widget = widget;
|
||||
m_window = window;
|
||||
|
||||
m_function = function;
|
||||
m_data = data;
|
||||
|
||||
handle_motion = g_signal_connect( G_OBJECT( window ), "motion_notify_event", G_CALLBACK( motion_delta ), this );
|
||||
}
|
||||
|
||||
void unfreeze_pointer( GtkWindow* window, bool centerize ){
|
||||
g_signal_handler_disconnect( G_OBJECT( window ), handle_motion );
|
||||
void unfreeze_pointer( bool centerize ){
|
||||
ASSERT_MESSAGE( m_function != 0, "can't unfreeze pointer: is not frozen" );
|
||||
|
||||
g_signal_handler_disconnect( G_OBJECT( m_window ), handle_motion );
|
||||
|
||||
m_function = 0;
|
||||
m_data = 0;
|
||||
|
||||
if( centerize ){
|
||||
Sys_SetCursorPos( window, center_x, center_y );
|
||||
Sys_SetCursorPos( m_window, center_x, center_y );
|
||||
}
|
||||
else{
|
||||
Sys_SetCursorPos( window, recorded_x, recorded_y );
|
||||
Sys_SetCursorPos( m_window, recorded_x, recorded_y );
|
||||
}
|
||||
// gdk_window_set_cursor( GTK_WIDGET( window )->window, 0 );
|
||||
// gdk_window_set_cursor( GTK_WIDGET( m_window )->window, 0 );
|
||||
gdk_pointer_ungrab( GDK_CURRENT_TIME );
|
||||
if( m_weedjet )
|
||||
gtk_grab_remove( m_weedjet );
|
||||
|
||||
gtk_grab_remove( m_widget );
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -238,12 +244,13 @@ ValueChangedFunction m_function;
|
|||
void* m_data;
|
||||
|
||||
static gboolean deferred_value_changed( gpointer data ){
|
||||
reinterpret_cast<DeferredAdjustment*>( data )->m_function(
|
||||
reinterpret_cast<DeferredAdjustment*>( data )->m_data,
|
||||
reinterpret_cast<DeferredAdjustment*>( data )->m_value
|
||||
DeferredAdjustment* self = reinterpret_cast<DeferredAdjustment*>( data );
|
||||
self->m_function(
|
||||
self->m_data,
|
||||
self->m_value
|
||||
);
|
||||
reinterpret_cast<DeferredAdjustment*>( data )->m_handler = 0;
|
||||
reinterpret_cast<DeferredAdjustment*>( data )->m_value = 0;
|
||||
self->m_handler = 0;
|
||||
self->m_value = 0;
|
||||
return FALSE;
|
||||
}
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -1856,7 +1856,7 @@ void CamWnd::DisableFreeMove(){
|
|||
CamWnd_Remove_Handlers_FreeMove( *this );
|
||||
CamWnd_Add_Handlers_Move( *this );
|
||||
|
||||
m_freezePointer.unfreeze_pointer( m_parent, true );
|
||||
m_freezePointer.unfreeze_pointer( true );
|
||||
g_signal_handler_disconnect( G_OBJECT( m_gl_widget ), m_freemove_handle_focusout );
|
||||
|
||||
CamWnd_Update( *this );
|
||||
|
|
|
|||
|
|
@ -432,6 +432,8 @@ void Entity_createFromSelection( const char* name, const Vector3& origin ){
|
|||
entitypath.push( makeReference( node.get() ) );
|
||||
scene::Instance& instance = findInstance( entitypath );
|
||||
|
||||
Entity* entity = Node_getEntity( node );
|
||||
|
||||
if ( entityClass->fixedsize || ( isModel && !brushesSelected ) ) {
|
||||
//Select_Delete();
|
||||
|
||||
|
|
@ -449,7 +451,7 @@ void Entity_createFromSelection( const char* name, const Vector3& origin ){
|
|||
else
|
||||
{
|
||||
if ( g_pGameDescription->mGameType == "doom3" ) {
|
||||
Node_getEntity( node )->setKeyValue( "model", Node_getEntity( node )->getKeyValue( "name" ) );
|
||||
entity->setKeyValue( "model", entity->getKeyValue( "name" ) );
|
||||
}
|
||||
|
||||
Scene_parentSelectedBrushesToEntity( GlobalSceneGraph(), node );
|
||||
|
|
@ -470,7 +472,7 @@ void Entity_createFromSelection( const char* name, const Vector3& origin ){
|
|||
g_iLastLightIntensity = intensity;
|
||||
char buf[30];
|
||||
sprintf( buf, "255 255 255 %d", intensity );
|
||||
Node_getEntity( node )->setKeyValue( "_light", buf );
|
||||
entity->setKeyValue( "_light", buf );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -482,24 +484,24 @@ void Entity_createFromSelection( const char* name, const Vector3& origin ){
|
|||
g_iLastLightIntensity = intensity;
|
||||
char buf[10];
|
||||
sprintf( buf, "%d", intensity );
|
||||
Node_getEntity( node )->setKeyValue( "light", buf );
|
||||
entity->setKeyValue( "light", buf );
|
||||
}
|
||||
}
|
||||
else if ( brushesSelected ) { // use workzone to set light position/size for doom3 lights, if there are brushes selected
|
||||
AABB bounds( Doom3Light_getBounds( workzone ) );
|
||||
StringOutputStream key( 64 );
|
||||
key << bounds.origin[0] << " " << bounds.origin[1] << " " << bounds.origin[2];
|
||||
Node_getEntity( node )->setKeyValue( "origin", key.c_str() );
|
||||
entity->setKeyValue( "origin", key.c_str() );
|
||||
key.clear();
|
||||
key << bounds.extents[0] << " " << bounds.extents[1] << " " << bounds.extents[2];
|
||||
Node_getEntity( node )->setKeyValue( "light_radius", key.c_str() );
|
||||
entity->setKeyValue( "light_radius", key.c_str() );
|
||||
}
|
||||
}
|
||||
|
||||
if ( isModel ) {
|
||||
const char* model = misc_model_dialog( GTK_WIDGET( MainFrame_getWindow() ) );
|
||||
if ( model != 0 ) {
|
||||
Node_getEntity( node )->setKeyValue( entityClass->miscmodel_key() , model );
|
||||
entity->setKeyValue( entityClass->miscmodel_key(), model );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3125,6 +3125,12 @@ void MainFrame::Create(){
|
|||
|
||||
if ( FloatingGroupDialog() ) {
|
||||
g_page_console = GroupDialog_addPage( "Console", Console_constructWindow( GroupDialog_getWindow() ), RawStringExportCaller( "Console" ) );
|
||||
{
|
||||
GtkFrame* frame = create_framed_widget( TextureBrowser_constructWindow( GroupDialog_getWindow() ) );
|
||||
g_page_textures = GroupDialog_addPage( "Textures", GTK_WIDGET( frame ), TextureBrowserExportTitleCaller() );
|
||||
/* workaround for gtk 2.24 issue: not displayed glwidget after toggle */
|
||||
g_object_set_data( G_OBJECT( g_page_textures ), "glwidget", TextureBrowser_getGLWidget() );
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
|
|
@ -3146,49 +3152,47 @@ void MainFrame::Create(){
|
|||
gtk_widget_show( GTK_WIDGET( window ) );
|
||||
|
||||
if ( CurrentStyle() == eRegular || CurrentStyle() == eRegularLeft ) {
|
||||
GtkWidget* hsplit = gtk_hpaned_new();
|
||||
m_hSplit = hsplit;
|
||||
gtk_box_pack_start( GTK_BOX( vbox ), hsplit, TRUE, TRUE, 0 );
|
||||
gtk_widget_show( hsplit );
|
||||
{
|
||||
GtkWidget* hsplit = gtk_hpaned_new();
|
||||
m_hSplit = hsplit;
|
||||
gtk_box_pack_start( GTK_BOX( vbox ), hsplit, TRUE, TRUE, 0 );
|
||||
gtk_widget_show( hsplit );
|
||||
GtkWidget* vsplit = gtk_vpaned_new();
|
||||
gtk_widget_show( vsplit );
|
||||
m_vSplit = vsplit;
|
||||
GtkWidget* vsplit2 = gtk_vpaned_new();
|
||||
gtk_widget_show( vsplit2 );
|
||||
m_vSplit2 = vsplit2;
|
||||
if ( CurrentStyle() == eRegular ){
|
||||
gtk_paned_pack1( GTK_PANED( hsplit ), vsplit, TRUE, TRUE );
|
||||
gtk_paned_pack2( GTK_PANED( hsplit ), vsplit2, TRUE, TRUE );
|
||||
}
|
||||
else{
|
||||
gtk_paned_pack2( GTK_PANED( hsplit ), vsplit, TRUE, TRUE );
|
||||
gtk_paned_pack1( GTK_PANED( hsplit ), vsplit2, TRUE, TRUE );
|
||||
}
|
||||
// console
|
||||
GtkWidget* console_window = Console_constructWindow( window );
|
||||
gtk_paned_pack2( GTK_PANED( vsplit ), console_window, TRUE, TRUE );
|
||||
|
||||
// xy
|
||||
m_pXYWnd = new XYWnd();
|
||||
m_pXYWnd->SetViewType( XY );
|
||||
GtkWidget* xy_window = GTK_WIDGET( create_framed_widget( m_pXYWnd->GetWidget() ) );
|
||||
gtk_paned_pack1( GTK_PANED( vsplit ), xy_window, TRUE, TRUE );
|
||||
{
|
||||
GtkWidget* vsplit = gtk_vpaned_new();
|
||||
gtk_widget_show( vsplit );
|
||||
m_vSplit = vsplit;
|
||||
GtkWidget* vsplit2 = gtk_vpaned_new();
|
||||
gtk_widget_show( vsplit2 );
|
||||
m_vSplit2 = vsplit2;
|
||||
if ( CurrentStyle() == eRegular ){
|
||||
gtk_paned_pack1( GTK_PANED( hsplit ), vsplit, TRUE, TRUE );
|
||||
gtk_paned_pack2( GTK_PANED( hsplit ), vsplit2, TRUE, TRUE );
|
||||
}
|
||||
else{
|
||||
gtk_paned_pack2( GTK_PANED( hsplit ), vsplit, TRUE, TRUE );
|
||||
gtk_paned_pack1( GTK_PANED( hsplit ), vsplit2, TRUE, TRUE );
|
||||
}
|
||||
// console
|
||||
GtkWidget* console_window = Console_constructWindow( window );
|
||||
gtk_paned_pack2( GTK_PANED( vsplit ), console_window, TRUE, TRUE );
|
||||
// camera
|
||||
m_pCamWnd = NewCamWnd();
|
||||
GlobalCamera_setCamWnd( *m_pCamWnd );
|
||||
CamWnd_setParent( *m_pCamWnd, window );
|
||||
GtkFrame* camera_window = create_framed_widget( CamWnd_getWidget( *m_pCamWnd ) );
|
||||
|
||||
// xy
|
||||
m_pXYWnd = new XYWnd();
|
||||
m_pXYWnd->SetViewType( XY );
|
||||
GtkWidget* xy_window = GTK_WIDGET( create_framed_widget( m_pXYWnd->GetWidget() ) );
|
||||
gtk_paned_pack1( GTK_PANED( vsplit ), xy_window, TRUE, TRUE );
|
||||
{
|
||||
// camera
|
||||
m_pCamWnd = NewCamWnd();
|
||||
GlobalCamera_setCamWnd( *m_pCamWnd );
|
||||
CamWnd_setParent( *m_pCamWnd, window );
|
||||
GtkFrame* camera_window = create_framed_widget( CamWnd_getWidget( *m_pCamWnd ) );
|
||||
gtk_paned_pack1( GTK_PANED( vsplit2 ), GTK_WIDGET( camera_window ), TRUE, TRUE );
|
||||
|
||||
gtk_paned_pack1( GTK_PANED( vsplit2 ), GTK_WIDGET( camera_window ), TRUE, TRUE );
|
||||
// textures
|
||||
GtkFrame* texture_window = create_framed_widget( TextureBrowser_constructWindow( window ) );
|
||||
|
||||
// textures
|
||||
GtkFrame* texture_window = create_framed_widget( TextureBrowser_constructWindow( window ) );
|
||||
|
||||
gtk_paned_pack2( GTK_PANED( vsplit2 ), GTK_WIDGET( texture_window ), TRUE, TRUE );
|
||||
}
|
||||
gtk_paned_pack2( GTK_PANED( vsplit2 ), GTK_WIDGET( texture_window ), TRUE, TRUE );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3277,13 +3281,6 @@ void MainFrame::Create(){
|
|||
g_floating_windows.push_back( GTK_WIDGET( window ) );
|
||||
}
|
||||
|
||||
{
|
||||
GtkFrame* frame = create_framed_widget( TextureBrowser_constructWindow( GroupDialog_getWindow() ) );
|
||||
g_page_textures = GroupDialog_addPage( "Textures", GTK_WIDGET( frame ), TextureBrowserExportTitleCaller() );
|
||||
/* workaround for gtk 2.24 issue: not displayed glwidget after toggle */
|
||||
g_object_set_data( G_OBJECT( g_page_textures ), "glwidget", TextureBrowser_getGLWidget() );
|
||||
}
|
||||
|
||||
m_vSplit = 0;
|
||||
m_hSplit = 0;
|
||||
m_vSplit2 = 0;
|
||||
|
|
@ -3315,13 +3312,6 @@ void MainFrame::Create(){
|
|||
|
||||
m_hSplit = create_split_views( camera, yz, xy, xz, m_vSplit, m_vSplit2 );
|
||||
gtk_box_pack_start( GTK_BOX( vbox ), m_hSplit, TRUE, TRUE, 0 );
|
||||
|
||||
{
|
||||
GtkFrame* frame = create_framed_widget( TextureBrowser_constructWindow( GroupDialog_getWindow() ) );
|
||||
g_page_textures = GroupDialog_addPage( "Textures", GTK_WIDGET( frame ), TextureBrowserExportTitleCaller() );
|
||||
/* workaround for gtk 2.24 issue: not displayed glwidget after toggle */
|
||||
g_object_set_data( G_OBJECT( g_page_textures ), "glwidget", TextureBrowser_getGLWidget() );
|
||||
}
|
||||
}
|
||||
|
||||
EntityList_constructWindow( window );
|
||||
|
|
|
|||
|
|
@ -718,7 +718,7 @@ void Map_ImportSelected( TextInputStream& in, const MapFormat& format ){
|
|||
EBrushType brush_type = GlobalBrushCreator().getFormat();
|
||||
format.readGraph( node, in, GlobalEntityCreator() );
|
||||
if ( brush_type != GlobalBrushCreator().getFormat() ) {
|
||||
Node_getTraversable( *node.get_pointer() )->traverse( Convert_Brushes( BrushType_getTexdefType( GlobalBrushCreator().getFormat() ), BrushType_getTexdefType( brush_type ) ) );
|
||||
Node_getTraversable( node )->traverse( Convert_Brushes( BrushType_getTexdefType( GlobalBrushCreator().getFormat() ), BrushType_getTexdefType( brush_type ) ) );
|
||||
GlobalBrushCreator().toggleFormat( brush_type );
|
||||
}
|
||||
Map_gatherNamespaced( node );
|
||||
|
|
|
|||
|
|
@ -620,7 +620,7 @@ public:
|
|||
void tracking_MouseUp(){
|
||||
if( m_move_started ){
|
||||
m_move_started = false;
|
||||
m_freezePointer.unfreeze_pointer( m_parent, false );
|
||||
m_freezePointer.unfreeze_pointer( false );
|
||||
}
|
||||
}
|
||||
void tracking_MouseDown(){
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@
|
|||
#include "gtkutil/widget.h"
|
||||
#include "gtkutil/glwidget.h"
|
||||
#include "gtkutil/messagebox.h"
|
||||
#include "gtkutil/toolbar.h"
|
||||
|
||||
#include "error.h"
|
||||
#include "map.h"
|
||||
|
|
@ -88,8 +89,6 @@
|
|||
#include "preferences.h"
|
||||
#include "commands.h"
|
||||
|
||||
void TextureBrowser_queueDraw( TextureBrowser& textureBrowser );
|
||||
|
||||
bool string_equal_start( const char* string, StringRange start ){
|
||||
return string_equal_n( string, start.first, start.last - start.first );
|
||||
}
|
||||
|
|
@ -135,10 +134,6 @@ bool g_TextureBrowser_filter_searchFromStart = false;
|
|||
|
||||
|
||||
|
||||
class TextureBrowser;
|
||||
|
||||
typedef ReferenceCaller<TextureBrowser, TextureBrowser_queueDraw> TextureBrowserQueueDrawCaller;
|
||||
|
||||
void TextureBrowser_scrollChanged( void* data, gdouble value );
|
||||
|
||||
|
||||
|
|
@ -259,11 +254,9 @@ bool m_hideNonShadersInCommon;
|
|||
static bool wads;
|
||||
// Return the display width of a texture in the texture browser
|
||||
void getTextureWH( qtexture_t* tex, int &W, int &H ){
|
||||
// Don't use uniform size
|
||||
W = (int)( tex->width * ( (float)m_textureScale / 100 ) );
|
||||
H = (int)( tex->height * ( (float)m_textureScale / 100 ) );
|
||||
if ( W < 1 ) W = 1;
|
||||
if ( H < 1 ) H = 1;
|
||||
// Don't use uniform size
|
||||
W = std::max( std::size_t( 1 ), tex->width * m_textureScale / 100 );
|
||||
H = std::max( std::size_t( 1 ), tex->height * m_textureScale / 100 );
|
||||
|
||||
if ( g_TextureBrowser_fixedSize ){
|
||||
if ( W >= H ) {
|
||||
|
|
@ -329,6 +322,12 @@ void ( *TextureBrowser_textureSelected )( const char* shader );
|
|||
void TextureBrowser_updateScroll( TextureBrowser& textureBrowser );
|
||||
|
||||
|
||||
void TextureBrowser_queueDraw( TextureBrowser& textureBrowser ){
|
||||
if ( textureBrowser.m_gl_widget != 0 ) {
|
||||
gtk_widget_queue_draw( textureBrowser.m_gl_widget );
|
||||
}
|
||||
}
|
||||
|
||||
const char* TextureBrowser_getComonShadersName(){
|
||||
const char* value = g_pGameDescription->getKeyValue( "common_shaders_name" );
|
||||
if ( !string_empty( value ) ) {
|
||||
|
|
@ -612,8 +611,6 @@ void TextureBrowser_addActiveShadersChangedCallback( const SignalHandler& handle
|
|||
g_activeShadersChangedCallbacks.connectLast( handler );
|
||||
}
|
||||
|
||||
void TextureBrowser_constructTreeStore();
|
||||
|
||||
class ShadersObserver : public ModuleObserver
|
||||
{
|
||||
Signal0 m_realiseCallbacks;
|
||||
|
|
@ -989,14 +986,12 @@ void TextureBrowser_trackingDelta( int x, int y, unsigned int state, void* data
|
|||
void TextureBrowser_Tracking_MouseUp( TextureBrowser& textureBrowser ){
|
||||
if( textureBrowser.m_move_started ){
|
||||
textureBrowser.m_move_started = false;
|
||||
textureBrowser.m_freezePointer.unfreeze_pointer( textureBrowser.m_parent, false );
|
||||
textureBrowser.m_freezePointer.unfreeze_pointer( false );
|
||||
}
|
||||
}
|
||||
|
||||
void TextureBrowser_Tracking_MouseDown( TextureBrowser& textureBrowser ){
|
||||
if( textureBrowser.m_move_started ){
|
||||
TextureBrowser_Tracking_MouseUp( textureBrowser );
|
||||
}
|
||||
TextureBrowser_Tracking_MouseUp( textureBrowser );
|
||||
textureBrowser.m_move_started = true;
|
||||
textureBrowser.m_move_amount = 0;
|
||||
textureBrowser.m_freezePointer.freeze_pointer( textureBrowser.m_parent, textureBrowser.m_gl_widget, TextureBrowser_trackingDelta, &textureBrowser );
|
||||
|
|
@ -1199,12 +1194,6 @@ void Texture_Draw( TextureBrowser& textureBrowser ){
|
|||
//qglFinish();
|
||||
}
|
||||
|
||||
void TextureBrowser_queueDraw( TextureBrowser& textureBrowser ){
|
||||
if ( textureBrowser.m_gl_widget != 0 ) {
|
||||
gtk_widget_queue_draw( textureBrowser.m_gl_widget );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TextureBrowser_setScale( TextureBrowser& textureBrowser, std::size_t scale ){
|
||||
textureBrowser.m_textureScale = scale;
|
||||
|
|
@ -1728,7 +1717,7 @@ GtkMenuItem* TextureBrowser_constructViewMenu( GtkMenu* menu ){
|
|||
return textures_menu_item;
|
||||
}
|
||||
|
||||
void Popup_View_Menu( GtkWidget *widget, GtkMenu *menu ){
|
||||
void Popup_View_Menu( GtkMenu *menu ){
|
||||
gtk_menu_popup( menu, NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time() );
|
||||
}
|
||||
#if 0
|
||||
|
|
@ -2089,26 +2078,19 @@ GtkWidget* TextureBrowser_constructWindow( GtkWindow* toplevel ){
|
|||
GtkToolbar* toolbar;
|
||||
|
||||
{ // menu bar
|
||||
GtkWidget* menu_view = gtk_menu_new();
|
||||
TextureBrowser_constructViewMenu( GTK_MENU( menu_view ) );
|
||||
gtk_menu_set_title( GTK_MENU( menu_view ), "View" );
|
||||
GtkMenu* menu_view = GTK_MENU( gtk_menu_new() );
|
||||
TextureBrowser_constructViewMenu( menu_view );
|
||||
gtk_menu_set_title( menu_view, "View" );
|
||||
|
||||
toolbar = GTK_TOOLBAR( gtk_toolbar_new() );
|
||||
gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( toolbar ), FALSE, FALSE, 0 );
|
||||
|
||||
//view menu button
|
||||
GtkButton* button = GTK_BUTTON( gtk_button_new() );
|
||||
button_set_icon( button, "texbro_view.png" );
|
||||
gtk_widget_show( GTK_WIDGET( button ) );
|
||||
gtk_button_set_relief( button, GTK_RELIEF_NONE );
|
||||
gtk_widget_set_size_request( GTK_WIDGET( button ), 24, 24 );
|
||||
GTK_WIDGET_UNSET_FLAGS( GTK_WIDGET( button ), GTK_CAN_FOCUS );
|
||||
GTK_WIDGET_UNSET_FLAGS( GTK_WIDGET( button ), GTK_CAN_DEFAULT );
|
||||
gtk_toolbar_append_element( toolbar, GTK_TOOLBAR_CHILD_WIDGET, GTK_WIDGET( button ), "", "View", "", 0, 0, 0 );
|
||||
g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( Popup_View_Menu ), menu_view );
|
||||
GtkButton* button = toolbar_append_button( toolbar, "View", "texbro_view.png", PointerCaller<GtkMenu, Popup_View_Menu>( menu_view ) );
|
||||
gtk_widget_set_size_request( GTK_WIDGET( button ), 24, 24 ); // 24 is minimal here for non scissored icon with any gtk theme
|
||||
|
||||
//show detached menu over floating tex bro
|
||||
gtk_menu_attach_to_widget( GTK_MENU( menu_view ), GTK_WIDGET( button ), NULL );
|
||||
gtk_menu_attach_to_widget( menu_view, GTK_WIDGET( button ), NULL );
|
||||
|
||||
button = toolbar_append_button( toolbar, "Find / Replace...", "texbro_gtk-find-and-replace.png", "FindReplaceTextures" );
|
||||
gtk_widget_set_size_request( GTK_WIDGET( button ), 22, 22 );
|
||||
|
|
@ -2117,16 +2099,15 @@ GtkWidget* TextureBrowser_constructWindow( GtkWindow* toplevel ){
|
|||
gtk_widget_set_size_request( GTK_WIDGET( button ), 22, 22 );
|
||||
gtk_widget_show( GTK_WIDGET( toolbar ) );
|
||||
}
|
||||
{//filter entry
|
||||
GtkWidget* entry = gtk_entry_new();
|
||||
gtk_widget_set_size_request( GTK_WIDGET( entry ), 64, -1 );
|
||||
gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( entry ), FALSE, FALSE, 0 );
|
||||
{ // filter entry
|
||||
GtkWidget* entry = g_TextureBrowser.m_filter_entry = gtk_entry_new();
|
||||
gtk_widget_set_size_request( entry, 64, -1 );
|
||||
gtk_box_pack_start( GTK_BOX( vbox ), entry, FALSE, FALSE, 0 );
|
||||
gtk_entry_set_icon_from_stock( GTK_ENTRY( entry ), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR );
|
||||
gtk_entry_set_icon_sensitive( GTK_ENTRY( entry ), GTK_ENTRY_ICON_SECONDARY, FALSE );
|
||||
TextureBrowser_filterSetModeIcon( GTK_ENTRY( entry ) );
|
||||
gtk_entry_set_icon_tooltip_text( GTK_ENTRY( entry ), GTK_ENTRY_ICON_PRIMARY, "toggle match mode ( start / any position )" );
|
||||
gtk_widget_show( entry );
|
||||
g_TextureBrowser.m_filter_entry = entry;
|
||||
g_signal_connect( G_OBJECT( entry ), "changed", G_CALLBACK( TextureBrowser_filterChanged ), &g_TextureBrowser );
|
||||
g_signal_connect( G_OBJECT( entry ), "icon-press", G_CALLBACK( TextureBrowser_filterIconPress ), 0 );
|
||||
g_signal_connect( G_OBJECT( entry ), "key_press_event", G_CALLBACK( TextureBrowser_filterKeypress ), 0 );
|
||||
|
|
@ -2134,52 +2115,51 @@ GtkWidget* TextureBrowser_constructWindow( GtkWindow* toplevel ){
|
|||
g_signal_connect( G_OBJECT( entry ), "leave_notify_event", G_CALLBACK( TextureBrowser_filterEntryUnfocus ), 0 );
|
||||
}
|
||||
{ // Texture TreeView
|
||||
g_TextureBrowser.m_scr_win_tree = gtk_scrolled_window_new( NULL, NULL );
|
||||
gtk_container_set_border_width( GTK_CONTAINER( g_TextureBrowser.m_scr_win_tree ), 0 );
|
||||
GtkWidget* w = g_TextureBrowser.m_scr_win_tree = gtk_scrolled_window_new( NULL, NULL );
|
||||
gtk_container_set_border_width( GTK_CONTAINER( w ), 0 );
|
||||
|
||||
// vertical only scrolling for treeview
|
||||
gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( g_TextureBrowser.m_scr_win_tree ), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS );
|
||||
gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( w ), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS );
|
||||
|
||||
gtk_widget_show( g_TextureBrowser.m_scr_win_tree );
|
||||
gtk_widget_show( w );
|
||||
|
||||
TextureBrowser_createTreeViewTree();
|
||||
|
||||
//gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW( g_TextureBrowser.m_scr_win_tree ), g_TextureBrowser.m_treeViewTree );
|
||||
gtk_container_add( GTK_CONTAINER( g_TextureBrowser.m_scr_win_tree ), g_TextureBrowser.m_treeViewTree ); //GtkTreeView has native scrolling support; should not be used with the GtkViewport proxy.
|
||||
gtk_widget_show( GTK_WIDGET( g_TextureBrowser.m_treeViewTree ) );
|
||||
//gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW( w ), g_TextureBrowser.m_treeViewTree );
|
||||
gtk_container_add( GTK_CONTAINER( w ), g_TextureBrowser.m_treeViewTree ); //GtkTreeView has native scrolling support; should not be used with the GtkViewport proxy.
|
||||
gtk_widget_show( g_TextureBrowser.m_treeViewTree );
|
||||
}
|
||||
{ // gl_widget scrollbar
|
||||
GtkWidget* w = gtk_vscrollbar_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, 0, 0, 1, 1, 0 ) ) );
|
||||
GtkWidget* w = g_TextureBrowser.m_texture_scroll = gtk_vscrollbar_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, 0, 0, 1, 1, 0 ) ) );
|
||||
gtk_table_attach( GTK_TABLE( table ), w, 2, 3, 1, 2, GTK_SHRINK, GTK_FILL, 0, 0 );
|
||||
gtk_widget_show( w );
|
||||
g_TextureBrowser.m_texture_scroll = w;
|
||||
|
||||
GtkAdjustment *vadjustment = gtk_range_get_adjustment( GTK_RANGE( g_TextureBrowser.m_texture_scroll ) );
|
||||
GtkAdjustment *vadjustment = gtk_range_get_adjustment( GTK_RANGE( w ) );
|
||||
g_signal_connect( G_OBJECT( vadjustment ), "value_changed", G_CALLBACK( TextureBrowser_verticalScroll ), &g_TextureBrowser );
|
||||
|
||||
widget_set_visible( g_TextureBrowser.m_texture_scroll, g_TextureBrowser.m_showTextureScrollbar );
|
||||
widget_set_visible( w, g_TextureBrowser.m_showTextureScrollbar );
|
||||
}
|
||||
{ // gl_widget
|
||||
#if NV_DRIVER_GAMMA_BUG
|
||||
g_TextureBrowser.m_gl_widget = glwidget_new( TRUE );
|
||||
GtkWidget* w = g_TextureBrowser.m_gl_widget = glwidget_new( TRUE );
|
||||
#else
|
||||
g_TextureBrowser.m_gl_widget = glwidget_new( FALSE );
|
||||
GtkWidget* w = g_TextureBrowser.m_gl_widget = glwidget_new( FALSE );
|
||||
#endif
|
||||
gtk_widget_ref( g_TextureBrowser.m_gl_widget );
|
||||
gtk_widget_ref( w );
|
||||
|
||||
gtk_widget_set_events( g_TextureBrowser.m_gl_widget, GDK_DESTROY | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK );
|
||||
GTK_WIDGET_SET_FLAGS( g_TextureBrowser.m_gl_widget, GTK_CAN_FOCUS );
|
||||
gtk_widget_set_events( w, GDK_DESTROY | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK );
|
||||
GTK_WIDGET_SET_FLAGS( w, GTK_CAN_FOCUS );
|
||||
|
||||
gtk_table_attach_defaults( GTK_TABLE( table ), g_TextureBrowser.m_gl_widget, 1, 2, 1, 2 );
|
||||
gtk_widget_show( g_TextureBrowser.m_gl_widget );
|
||||
gtk_table_attach_defaults( GTK_TABLE( table ), w, 1, 2, 1, 2 );
|
||||
gtk_widget_show( w );
|
||||
|
||||
g_TextureBrowser.m_sizeHandler = g_signal_connect( G_OBJECT( g_TextureBrowser.m_gl_widget ), "size_allocate", G_CALLBACK( TextureBrowser_size_allocate ), &g_TextureBrowser );
|
||||
g_TextureBrowser.m_exposeHandler = g_signal_connect( G_OBJECT( g_TextureBrowser.m_gl_widget ), "expose_event", G_CALLBACK( TextureBrowser_expose ), &g_TextureBrowser );
|
||||
g_TextureBrowser.m_sizeHandler = g_signal_connect( G_OBJECT( w ), "size_allocate", G_CALLBACK( TextureBrowser_size_allocate ), &g_TextureBrowser );
|
||||
g_TextureBrowser.m_exposeHandler = g_signal_connect( G_OBJECT( w ), "expose_event", G_CALLBACK( TextureBrowser_expose ), &g_TextureBrowser );
|
||||
|
||||
g_signal_connect( G_OBJECT( g_TextureBrowser.m_gl_widget ), "button_press_event", G_CALLBACK( TextureBrowser_button_press ), &g_TextureBrowser );
|
||||
g_signal_connect( G_OBJECT( g_TextureBrowser.m_gl_widget ), "button_release_event", G_CALLBACK( TextureBrowser_button_release ), &g_TextureBrowser );
|
||||
g_signal_connect( G_OBJECT( g_TextureBrowser.m_gl_widget ), "motion_notify_event", G_CALLBACK( TextureBrowser_motion ), &g_TextureBrowser );
|
||||
g_signal_connect( G_OBJECT( g_TextureBrowser.m_gl_widget ), "scroll_event", G_CALLBACK( TextureBrowser_scroll ), &g_TextureBrowser );
|
||||
g_signal_connect( G_OBJECT( w ), "button_press_event", G_CALLBACK( TextureBrowser_button_press ), &g_TextureBrowser );
|
||||
g_signal_connect( G_OBJECT( w ), "button_release_event", G_CALLBACK( TextureBrowser_button_release ), &g_TextureBrowser );
|
||||
g_signal_connect( G_OBJECT( w ), "motion_notify_event", G_CALLBACK( TextureBrowser_motion ), &g_TextureBrowser );
|
||||
g_signal_connect( G_OBJECT( w ), "scroll_event", G_CALLBACK( TextureBrowser_scroll ), &g_TextureBrowser );
|
||||
}
|
||||
|
||||
// tag stuff
|
||||
|
|
@ -2193,26 +2173,15 @@ GtkWidget* TextureBrowser_constructWindow( GtkWindow* toplevel ){
|
|||
TextureBrowser_buildTagList();
|
||||
}
|
||||
{ // tag menu bar
|
||||
GtkWidget* menu_tags = gtk_menu_new();
|
||||
gtk_menu_set_title( GTK_MENU( menu_tags ), "Tags" );
|
||||
TextureBrowser_constructTagsMenu( GTK_MENU( menu_tags ) );
|
||||
GtkMenu* menu_tags = GTK_MENU( gtk_menu_new() );
|
||||
gtk_menu_set_title( menu_tags, "Tags" );
|
||||
TextureBrowser_constructTagsMenu( menu_tags );
|
||||
|
||||
GtkButton* button = GTK_BUTTON( gtk_button_new() );
|
||||
button_set_icon( button, "texbro_tags.png" );
|
||||
// GtkWidget *label = gtk_label_new ( ">t" );
|
||||
// gtk_container_add( GTK_CONTAINER( button ), label );
|
||||
// gtk_widget_show( label );
|
||||
|
||||
gtk_widget_show( GTK_WIDGET( button ) );
|
||||
gtk_button_set_relief( button, GTK_RELIEF_NONE );
|
||||
GtkButton* button = toolbar_append_button( toolbar, "Tags", "texbro_tags.png", PointerCaller<GtkMenu, Popup_View_Menu>( menu_tags ) );
|
||||
gtk_widget_set_size_request( GTK_WIDGET( button ), 22, 22 );
|
||||
GTK_WIDGET_UNSET_FLAGS( GTK_WIDGET( button ), GTK_CAN_FOCUS );
|
||||
GTK_WIDGET_UNSET_FLAGS( GTK_WIDGET( button ), GTK_CAN_DEFAULT );
|
||||
gtk_toolbar_append_element( toolbar, GTK_TOOLBAR_CHILD_WIDGET, GTK_WIDGET( button ), "", "Tags", "", 0, 0, 0 );
|
||||
g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( Popup_View_Menu ), menu_tags );
|
||||
|
||||
//show detached menu over floating tex bro and main wnd...
|
||||
gtk_menu_attach_to_widget( GTK_MENU( menu_tags ), GTK_WIDGET( button ), NULL );
|
||||
gtk_menu_attach_to_widget( menu_tags, GTK_WIDGET( button ), NULL );
|
||||
}
|
||||
{ // Tag TreeView
|
||||
g_TextureBrowser.m_scr_win_tags = gtk_scrolled_window_new( NULL, NULL );
|
||||
|
|
|
|||
|
|
@ -1077,7 +1077,7 @@ void XYWnd::Move_Begin(){
|
|||
|
||||
void XYWnd::Move_End(){
|
||||
m_move_started = false;
|
||||
g_xywnd_freezePointer.unfreeze_pointer( m_parent != 0 ? m_parent : MainFrame_getWindow(), false );
|
||||
g_xywnd_freezePointer.unfreeze_pointer( false );
|
||||
g_signal_handler_disconnect( G_OBJECT( m_gl_widget ), m_move_focusOut );
|
||||
}
|
||||
|
||||
|
|
@ -1127,7 +1127,7 @@ void XYWnd::Zoom_Begin( int x, int y ){
|
|||
|
||||
void XYWnd::Zoom_End(){
|
||||
m_zoom_started = false;
|
||||
g_xywnd_freezePointer.unfreeze_pointer( m_parent != 0 ? m_parent : MainFrame_getWindow(), false );
|
||||
g_xywnd_freezePointer.unfreeze_pointer( false );
|
||||
g_signal_handler_disconnect( G_OBJECT( m_gl_widget ), m_zoom_focusOut );
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user