Browse Source

Reenable search; Fix X11 UI size; Fix our window reshow

Signed-off-by: falkTX <falktx@falktx.com>
tags/v1.0
falkTX 3 years ago
parent
commit
1fc3dbf3af
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
2 changed files with 34 additions and 34 deletions
  1. +13
    -14
      plugins/Common/IldaeilUI.cpp
  2. +21
    -20
      plugins/Common/SizeUtils.cpp

+ 13
- 14
plugins/Common/IldaeilUI.cpp View File

@@ -98,6 +98,8 @@ public:
return; return;
} }


std::strcpy(fPluginSearchString, "Search...");

fPlugin->setUI(this); fPlugin->setUI(this);


const CarlaHostHandle handle = fPlugin->fCarlaHostHandle; const CarlaHostHandle handle = fPlugin->fCarlaHostHandle;
@@ -105,10 +107,9 @@ public:
if (carla_get_current_plugin_count(handle) != 0) if (carla_get_current_plugin_count(handle) != 0)
{ {
showPluginUI(handle); showPluginUI(handle);
startThread();
return; return;
} }

std::strcpy(fPluginSearchString, "Search...");
} }


~IldaeilUI() override ~IldaeilUI() override
@@ -173,22 +174,22 @@ protected:


void run() override void run() override
{ {
fPluginCount = carla_get_cached_plugin_count(PLUGIN_LV2, nullptr);

if (fPluginCount != 0)
if (const uint count = carla_get_cached_plugin_count(PLUGIN_LV2, nullptr))
{ {
fPlugins = new CarlaCachedPluginInfo[fPluginCount];
fPlugins = new CarlaCachedPluginInfo[count];


for (uint i=0; i < fPluginCount && ! shouldThreadExit(); ++i)
for (uint i=0; i < count && ! shouldThreadExit(); ++i)
{ {
std::memcpy(&fPlugins[i], carla_get_cached_plugin_info(PLUGIN_LV2, i), sizeof(CarlaCachedPluginInfo)); std::memcpy(&fPlugins[i], carla_get_cached_plugin_info(PLUGIN_LV2, i), sizeof(CarlaCachedPluginInfo));
// TODO fix leaks // TODO fix leaks
fPlugins[i].name = strdup(fPlugins[i].name); fPlugins[i].name = strdup(fPlugins[i].name);
fPlugins[i].label = strdup(fPlugins[i].label); fPlugins[i].label = strdup(fPlugins[i].label);
} }

fPluginCount = count;
} }


if (! shouldThreadExit())
if (fDrawingState == kDrawingLoading && ! shouldThreadExit())
fDrawingState = kDrawingPluginList; fDrawingState = kDrawingPluginList;
} }


@@ -196,6 +197,8 @@ protected:
{ {
switch (fDrawingState) switch (fDrawingState)
{ {
case kDrawingInit:
break;
case kDrawingPluginList: case kDrawingPluginList:
drawPluginList(); drawPluginList();
break; break;
@@ -214,8 +217,6 @@ protected:


void drawBottomBar() void drawBottomBar()
{ {
const CarlaHostHandle handle = fPlugin->fCarlaHostHandle;

ImGui::SetNextWindowPos(ImVec2(0, getHeight() - kBottomHeight * getScaleFactor())); ImGui::SetNextWindowPos(ImVec2(0, getHeight() - kBottomHeight * getScaleFactor()));
ImGui::SetNextWindowSize(ImVec2(getWidth(), kBottomHeight * getScaleFactor())); ImGui::SetNextWindowSize(ImVec2(getWidth(), kBottomHeight * getScaleFactor()));


@@ -298,7 +299,6 @@ protected:
{ {
const CarlaCachedPluginInfo& info(fPlugins[i]); const CarlaCachedPluginInfo& info(fPlugins[i]);


/*
#if DISTRHO_PLUGIN_IS_SYNTH #if DISTRHO_PLUGIN_IS_SYNTH
if (info.midiIns != 1 || info.audioOuts != 2) if (info.midiIns != 1 || info.audioOuts != 2)
continue; continue;
@@ -311,13 +311,12 @@ protected:
if (info.audioIns != 2 || info.audioOuts != 2) if (info.audioIns != 2 || info.audioOuts != 2)
continue; continue;
#endif #endif
*/


const char* const slash = std::strchr(info.label, DISTRHO_OS_SEP); const char* const slash = std::strchr(info.label, DISTRHO_OS_SEP);
DISTRHO_SAFE_ASSERT_CONTINUE(slash != nullptr); DISTRHO_SAFE_ASSERT_CONTINUE(slash != nullptr);


// if (search != nullptr && strcasestr(info.name, search) == nullptr)
// continue;
if (search != nullptr && strcasestr(info.name, search) == nullptr)
continue;


bool selected = fPluginSelected == i; bool selected = fPluginSelected == i;
ImGui::TableNextRow(); ImGui::TableNextRow();


+ 21
- 20
plugins/Common/SizeUtils.cpp View File

@@ -70,14 +70,22 @@ Size<uint> getChildWindowSize(const uintptr_t winId)
{ {
d_stdout("found child window"); d_stdout("found child window");


XWindowAttributes attrs;
memset(&attrs, 0, sizeof(attrs));

XSizeHints sizeHints; XSizeHints sizeHints;
memset(&sizeHints, 0, sizeof(sizeHints)); memset(&sizeHints, 0, sizeof(sizeHints));


if (XGetNormalHints(display, childWindow, &sizeHints))
{
int width = 0;
int height = 0;
int width = 0;
int height = 0;


if (XGetWindowAttributes(display, childWindow, &attrs))
{
width = attrs.width;
height = attrs.height;
}
else if (XGetNormalHints(display, childWindow, &sizeHints))
{
if (sizeHints.flags & PSize) if (sizeHints.flags & PSize)
{ {
width = sizeHints.width; width = sizeHints.width;
@@ -88,25 +96,18 @@ Size<uint> getChildWindowSize(const uintptr_t winId)
width = sizeHints.base_width; width = sizeHints.base_width;
height = sizeHints.base_height; height = sizeHints.base_height;
} }
else if (sizeHints.flags & PMinSize)
{
width = sizeHints.min_width;
height = sizeHints.min_height;
}
}


d_stdout("child window bounds %u %u", width, height);
d_stdout("child window bounds %u %u", width, height);


if (width > 1 && height > 1)
{
// XMoveWindow(display, (::Window)winId, 0, 40);
// XResizeWindow(display, (::Window)winId, width, height);
// XMoveWindow(display, childWindow, 0, 40);
// XMoveResizeWindow(display, childWindow, 0, 40, width, height);
return Size<uint>(static_cast<uint>(width), static_cast<uint>(height));
}
if (width > 1 && height > 1)
{
// XMoveWindow(display, (::Window)winId, 0, 40);
// XResizeWindow(display, (::Window)winId, width, height);
// XMoveWindow(display, childWindow, 0, 40);
// XMoveResizeWindow(display, childWindow, 0, 40, width, height);
return Size<uint>(static_cast<uint>(width), static_cast<uint>(height));
} }
else
d_stdout("child window without bounds");
} }


XCloseDisplay(display); XCloseDisplay(display);


Loading…
Cancel
Save